| | import com.whitemagicsoftware.keenquotes.lex.LexemeGlyph; |
| | |
| | +import java.util.EnumMap; |
| | import java.util.Map; |
| | |
| | import static com.whitemagicsoftware.keenquotes.lex.LexemeGlyph.*; |
| | import static com.whitemagicsoftware.keenquotes.parser.TokenType.*; |
| | -import static java.util.Map.entry; |
| | -import static java.util.Map.ofEntries; |
| | |
| | /** |
| | * Represents a high-level token read from a text document. |
| | */ |
| | final class Token implements Comparable<Token>, Stem { |
| | /** |
| | * Provides an entity-based set of {@link Token} replacements. |
| | */ |
| | - private static final Map<TokenType, String> ENTITIES = ofEntries( |
| | - entry( QUOTE_OPENING_SINGLE, "‘" ), |
| | - entry( QUOTE_CLOSING_SINGLE, "’" ), |
| | - entry( QUOTE_OPENING_DOUBLE, "“" ), |
| | - entry( QUOTE_CLOSING_DOUBLE, "”" ), |
| | - entry( QUOTE_STRAIGHT_SINGLE, "'" ), |
| | - entry( QUOTE_STRAIGHT_DOUBLE, "\"" ), |
| | - entry( QUOTE_APOSTROPHE, "'" ), |
| | - entry( QUOTE_PRIME_SINGLE, "′" ), |
| | - entry( QUOTE_PRIME_DOUBLE, "″" ), |
| | - entry( QUOTE_PRIME_TRIPLE, "‴" ), |
| | - entry( QUOTE_PRIME_QUADRUPLE, "⁗" ) |
| | - ); |
| | + private static final Map<TokenType, String> ENTITIES = |
| | + new EnumMap<>( TokenType.class ); |
| | + |
| | + static { |
| | + ENTITIES.put( QUOTE_OPENING_SINGLE, "‘" ); |
| | + ENTITIES.put( QUOTE_CLOSING_SINGLE, "’" ); |
| | + ENTITIES.put( QUOTE_OPENING_DOUBLE, "“" ); |
| | + ENTITIES.put( QUOTE_CLOSING_DOUBLE, "”" ); |
| | + ENTITIES.put( QUOTE_STRAIGHT_SINGLE, "'" ); |
| | + ENTITIES.put( QUOTE_STRAIGHT_DOUBLE, "\"" ); |
| | + ENTITIES.put( QUOTE_APOSTROPHE, "'" ); |
| | + ENTITIES.put( QUOTE_PRIME_SINGLE, "′" ); |
| | + ENTITIES.put( QUOTE_PRIME_DOUBLE, "″" ); |
| | + ENTITIES.put( QUOTE_PRIME_TRIPLE, "‴" ); |
| | + ENTITIES.put( QUOTE_PRIME_QUADRUPLE, "⁗" ); |
| | + } |
| | |
| | /** |
| | * Provides a character-based set of {@link Token} replacements. |
| | */ |
| | - private static final Map<TokenType, String> CHARS = ofEntries( |
| | - entry( QUOTE_OPENING_SINGLE, "‘" ), |
| | - entry( QUOTE_CLOSING_SINGLE, "’" ), |
| | - entry( QUOTE_OPENING_DOUBLE, "“" ), |
| | - entry( QUOTE_CLOSING_DOUBLE, "”" ), |
| | - entry( QUOTE_STRAIGHT_SINGLE, "'" ), |
| | - entry( QUOTE_STRAIGHT_DOUBLE, "\"" ), |
| | - entry( QUOTE_APOSTROPHE, "’" ), |
| | - entry( QUOTE_PRIME_SINGLE, "′" ), |
| | - entry( QUOTE_PRIME_DOUBLE, "″" ), |
| | - entry( QUOTE_PRIME_TRIPLE, "‴" ), |
| | - entry( QUOTE_PRIME_QUADRUPLE, "⁗" ) |
| | - ); |
| | + private static final Map<TokenType, String> CHARS = |
| | + new EnumMap<>( TokenType.class ); |
| | + |
| | + static { |
| | + CHARS.put( QUOTE_OPENING_SINGLE, "‘" ); |
| | + CHARS.put( QUOTE_CLOSING_SINGLE, "’" ); |
| | + CHARS.put( QUOTE_OPENING_DOUBLE, "“" ); |
| | + CHARS.put( QUOTE_CLOSING_DOUBLE, "”" ); |
| | + CHARS.put( QUOTE_STRAIGHT_SINGLE, "'" ); |
| | + CHARS.put( QUOTE_STRAIGHT_DOUBLE, "\"" ); |
| | + CHARS.put( QUOTE_APOSTROPHE, "’" ); |
| | + CHARS.put( QUOTE_PRIME_SINGLE, "′" ); |
| | + CHARS.put( QUOTE_PRIME_DOUBLE, "″" ); |
| | + CHARS.put( QUOTE_PRIME_TRIPLE, "‴" ); |
| | + CHARS.put( QUOTE_PRIME_QUADRUPLE, "⁗" ); |
| | + } |
| | |
| | /** |
| | * Glyphs not found in the table will use the document's glyph. |
| | */ |
| | - private static final Map<LexemeGlyph, String> I18N_ENTITIES = ofEntries( |
| | - entry( LEX_DOUBLE_QUOTE_OPENING_LOW, "„" ), |
| | - entry( LEX_DOUBLE_CHEVRON_LEFT, "«" ), |
| | - entry( LEX_DOUBLE_CHEVRON_RIGHT, "»" ), |
| | - entry( LEX_SINGLE_CHEVRON_LEFT, "‹" ), |
| | - entry( LEX_SINGLE_CHEVRON_RIGHT, "›" ) |
| | - ); |
| | + private static final Map<LexemeGlyph, String> I18N_ENTITIES = |
| | + new EnumMap<>( LexemeGlyph.class ); |
| | + |
| | + static { |
| | + I18N_ENTITIES.put( LEX_DOUBLE_QUOTE_OPENING_LOW, "„" ); |
| | + I18N_ENTITIES.put( LEX_DOUBLE_CHEVRON_LEFT, "«" ); |
| | + I18N_ENTITIES.put( LEX_DOUBLE_CHEVRON_RIGHT, "»" ); |
| | + I18N_ENTITIES.put( LEX_SINGLE_CHEVRON_LEFT, "‹" ); |
| | + I18N_ENTITIES.put( LEX_SINGLE_CHEVRON_RIGHT, "›" ); |
| | + } |
| | |
| | /** |