package waymaker.top.android; // Copyright © 2016 Michael Allan. Licence MIT.
import java.util.regex.Pattern;
/** A formal element in the structure of an ultimate way:
* either an end, transnorm or act.
*/
public interface Waynode
{
/* * *
- end|transnorm|act.xht form: http://reluk.ca/100-0/tool/xhwsPretty/pretty.js
- unlike count nodes, waynodes need not be compiled to any kind of whole on a server
- they have no equivalent of vote sums
*/
/** An immutable instance of an empty waynode.
*/
public static final Waynode1 EMPTY_WAYNODE = new Waynode1( "", Waynode1.DEFAULT_ANSWER,
Waynode1.DEFAULT_QUESTION, /*questionBackImageLoc*/null );
/** The allowable pattern of a whole ({@linkplain java.util.regex.Matcher#matches() matches}) handle.
*/
public static final Pattern HANDLE_PATTERN = Pattern.compile( "[\\p{javaLowerCase}]{0,2}" );
// Lowercase letters only, for rapid readability in lists.
// No more than 2 characters in length to allow use in narrow summary views.
//
// Using javaLowerCase as the only Unicode discriminator in common between OpenJDK 1.8 and Android
// 23 (before move from Harmony to OpenJDK in Android 24).
// https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html
// http://developer.android.com/reference/java/util/regex/Pattern.html
// - W a y n o d e ----------------------------------------------------------------------------------
/** This waynode’s reply to the {@linkplain #question() pollar question} in the form of a title
* sentence. It may be an empty string, but is never null.
*
* @see pretty.js § Wayscript § Title sentence
*/
public String answer();
/** The symbolic name of this waynode, from zero to two characters in length (never null).
*/
public String handle();
/** This waynode’s interpretation of the question of the poll. Its form is a title sentence. It
* may be an empty string, but is never null. Read the {@linkplain NodeCache#leader() leader’s}
* waynode for a consensus interpretation of the same question.
*
* @see pretty.js § Wayscript § Title sentence
*/
public String question();
/** The location of an image of the question suited for the backdrop of a user interface, or null if
* there is no image. The purpose is to bridge visual gaps in the user interface, and to
* illustrate the question.
*/
public String questionBackImageLoc();
}