Package xyz.cofe.text
Class Template<V>
- java.lang.Object
-
- xyz.cofe.text.Template<V>
-
public class Template<V> extends java.lang.ObjectПростые текстовые шаблоны.Шаблон задается в виде строки с переменными, пример:
"hello ${text}"В дальнейшем этот шаблон можно использовать, подставляя на место переменной реальные значения.
Пример:public static class Item { public final int a; public final int b; public Item(int a, int b) { this.a = a; this.b = b; } } public void test03(){ var str = Template .parse("a=${a} b=${b}",Item.class) .bind("a", v->""+v.a ) .bind("b", v->""+v.b ) .eval(new Item(1,3)); System.out.println(str); // будет выведено: a=1 b=3 }
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classTemplate.BindedCodeItem<V>Фрагмент шаблона - переменная которая уже связана с функцийstatic classTemplate.CodeItem<V>Фрагмент шаблона - переменная которая еще не связана с функцийstatic classTemplate.Item<V>Фрагмент шаблонаstatic classTemplate.TextItem<V>Фрагмент шаблона - обычный текст
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<Template.Item<V>>itemsЭлементы шаблона
-
Constructor Summary
Constructors Constructor Description Template(java.util.List<Template.Item<V>> items)Конструктор
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Template<V>bind(java.lang.String code, java.util.function.Function<V,java.lang.String> evalFun)Клонирует и привязывает наименование переменной в шаблоне с функцией генератором значения.Template<V>binder(java.util.function.Function<java.lang.String,java.util.Optional<java.util.function.Function<V,java.lang.String>>> binder)Клонирует и привязывает наименование переменной в шаблоне с функцией генератором значения.java.lang.Stringeval(V value)Интерпретация шаблонаjava.util.List<Template.Item<V>>items()Возвращает элементы шаблонаstatic <V> Template<V>parse(java.lang.String template)Парсинг шаблонаstatic <V> Template<V>parse(java.lang.String template, java.lang.Class<V> valueType)Парсинг шаблонаstatic <A> java.util.List<A>parse(java.lang.String template, java.util.function.Function<java.lang.String,A> text, java.util.function.Function<java.lang.String,A> code)Парсинг шаблоновjava.lang.StringtoString()Возвращает текст шаблона
-
-
-
Field Detail
-
items
protected final java.util.List<Template.Item<V>> items
Элементы шаблона
-
-
Constructor Detail
-
Template
public Template(java.util.List<Template.Item<V>> items)
Конструктор- Parameters:
items- элементы шаблона
-
-
Method Detail
-
parse
public static <A> java.util.List<A> parse(java.lang.String template, java.util.function.Function<java.lang.String,A> text, java.util.function.Function<java.lang.String,A> code)Парсинг шаблонов- Type Parameters:
A- тип результата интерпретации фрагмента- Parameters:
template- шаблонtext- функция интерпретации текстаcode- функция интерпретации переменной/кода- Returns:
- фрагменты
-
items
public java.util.List<Template.Item<V>> items()
Возвращает элементы шаблона- Returns:
- Элементы шаблона
-
toString
public java.lang.String toString()
Возвращает текст шаблона- Overrides:
toStringin classjava.lang.Object- Returns:
- текст шаблона
-
parse
public static <V> Template<V> parse(java.lang.String template, java.lang.Class<V> valueType)
Парсинг шаблона- Type Parameters:
V- тип значения- Parameters:
template- шаблонvalueType- тип значения- Returns:
- шаблон
-
parse
public static <V> Template<V> parse(java.lang.String template)
Парсинг шаблона- Type Parameters:
V- тип значения- Parameters:
template- шаблон- Returns:
- шаблон
-
binder
public Template<V> binder(java.util.function.Function<java.lang.String,java.util.Optional<java.util.function.Function<V,java.lang.String>>> binder)
Клонирует и привязывает наименование переменной в шаблоне с функцией генератором значения.
Ранее связанные переменные не переопределяются.- Parameters:
binder- функция связывающая шаблон с значением- Returns:
- новый шаблон
-
bind
public Template<V> bind(java.lang.String code, java.util.function.Function<V,java.lang.String> evalFun)
Клонирует и привязывает наименование переменной в шаблоне с функцией генератором значения.
Ранее связанные переменные не переопределяются.- Parameters:
code- наименование переменнойevalFun- функция связывающая шаблон с значением- Returns:
- новый шаблон
- See Also:
binder(Function)
-
eval
public java.lang.String eval(V value)
Интерпретация шаблона- Parameters:
value- значение подставляемое в шаблон- Returns:
- текстовое представление
-
-