java.lang.Object
org.jhotdraw8.css.converter.ListCssConverter<T>
- Type Parameters:
T- the element type
- All Implemented Interfaces:
Converter<ImmutableList<T>>,CssConverter<ImmutableList<T>>
Parses a list with items separated by configurable optional delimiters.
If the delimiter consists of multiple character tokens, then the parser accepts each of the character tokens and any combination of them.
The delimiters are optional when the list is parsed from a String. When the list is converted into a String, then the specified delimiters are used to separate the items.
Stops parsing at EOF, semicolon and closing bracket.
This parser is intentionally forgiving, so that lists can be output with nice delimiters, but the user does not need to type the delimiter.
In CSS list elements are separated by a comma character.
References:
- CSS Syntax Module Level 3, 5.3.11. Parse a comma-separated list of component values
- w3.org
-
Constructor Summary
ConstructorsConstructorDescriptionListCssConverter(CssConverter<T> elementConverter) ListCssConverter(CssConverter<T> elementConverter, @Nullable String delimiter) ListCssConverter(CssConverter<T> elementConverter, @Nullable String delimiter, @Nullable String prefix, @Nullable String suffix) ListCssConverter(CssConverter<T> elementConverter, @Nullable String delimiter, @Nullable String prefix, @Nullable String suffix, @Nullable Comparator<T> comparatorForSorting) ListCssConverter(CssConverter<T> elementConverter, Iterable<CssToken> delimiter, Iterable<CssToken> prefix, Iterable<CssToken> suffix) Creates a new instance that does not sort the elements.ListCssConverter(CssConverter<T> elementConverter, Iterable<CssToken> delimiter, Iterable<CssToken> prefix, Iterable<CssToken> suffix, @Nullable Comparator<T> comparatorForSorting) Creates a new instance. -
Method Summary
Modifier and TypeMethodDescription@Nullable ImmutableList<T> @Nullable StringGets a help text.booleanbooleanparse(CssTokenizer tt, @Nullable IdResolver idResolver) Parses from the given tokenizer and moves the tokenizer to the next token past the value.<TT extends ImmutableList<T>>
voidproduceTokens(@Nullable TT value, @Nullable IdSupplier idSupplier, Consumer<CssToken> out) Produces tokens for the specified value.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.jhotdraw8.base.converter.Converter
fromString, fromString, fromStringNonNull, fromStringNonNull, fromStringNonNull, fromStringNonNull, toString, toStringMethods inherited from interface org.jhotdraw8.css.converter.CssConverter
fromString, fromString, getExamples, parseNonNull, toString, toString, toString, toTokens
-
Constructor Details
-
ListCssConverter
-
ListCssConverter
-
ListCssConverter
public ListCssConverter(CssConverter<T> elementConverter, @Nullable String delimiter, @Nullable String prefix, @Nullable String suffix) -
ListCssConverter
public ListCssConverter(CssConverter<T> elementConverter, @Nullable String delimiter, @Nullable String prefix, @Nullable String suffix, @Nullable Comparator<T> comparatorForSorting) - Parameters:
elementConverter- the convert for a single elementdelimiter- a String which must be parsable into character tokens, each token and any combination of them is accepted as an optional delimiterprefix- the prefix of the list, for example a left bracketsuffix- the suffix of the list, for example a right bracketcomparatorForSorting- if this value is non-null, then it is used to sort the list
-
ListCssConverter
public ListCssConverter(CssConverter<T> elementConverter, Iterable<CssToken> delimiter, Iterable<CssToken> prefix, Iterable<CssToken> suffix) Creates a new instance that does not sort the elements.- Parameters:
elementConverter- converter for elementsdelimiter- optional delimiter for parsing; the delimiter is used for pretty printingprefix- white-space tokens for pretty printing that are used when producing tokens or a Stringsuffix- white-space tokens for pretty printing that are used when producing tokens or a String
-
ListCssConverter
public ListCssConverter(CssConverter<T> elementConverter, Iterable<CssToken> delimiter, Iterable<CssToken> prefix, Iterable<CssToken> suffix, @Nullable Comparator<T> comparatorForSorting) Creates a new instance.- Parameters:
elementConverter- converter for elementsdelimiter- optional delimiter for parsing; the delimiter is used for pretty printingprefix- white-space tokens for pretty printing that are used when producing tokens or a Stringsuffix- white-space tokens for pretty printing that are used when producing tokens or a StringcomparatorForSorting- optional comparator for sorting; null means no sorting
-
-
Method Details
-
parse
public ImmutableList<T> parse(CssTokenizer tt, @Nullable IdResolver idResolver) throws ParseException, IOException Description copied from interface:CssConverterParses from the given tokenizer and moves the tokenizer to the next token past the value.- Specified by:
parsein interfaceCssConverter<T>- Parameters:
tt- tokenizer positioned on the tokenidResolver- the id factory- Returns:
- the parsed value
- Throws:
ParseException- on parse exceptionIOException- on io exception
-
needsIdResolver
public boolean needsIdResolver()- Specified by:
needsIdResolverin interfaceConverter<T>
-
produceTokens
public <TT extends ImmutableList<T>> void produceTokens(@Nullable TT value, @Nullable IdSupplier idSupplier, Consumer<CssToken> out) throws IOException Description copied from interface:CssConverterProduces tokens for the specified value.- Specified by:
produceTokensin interfaceCssConverter<T>- Type Parameters:
TT- the value type- Parameters:
value- the valueidSupplier- the id factoryout- the consumer for the tokens- Throws:
IOException- on IO exception
-
getDefaultValue
- Specified by:
getDefaultValuein interfaceConverter<T>
-
isNullable
public boolean isNullable()- Specified by:
isNullablein interfaceCssConverter<T>
-
getHelpText
Description copied from interface:CssConverterGets a help text.- Specified by:
getHelpTextin interfaceConverter<T>- Specified by:
getHelpTextin interfaceCssConverter<T>- Returns:
- a help text.
-