Release notes:
After completing a template, the parser will be able to retrieve the holders defined in, the next step will be generating input base on the holder definitions. TemplatorInputMapper comes to help at this point, to provide a lean way to declare holders' resolvers, see this test method for example
Indicates an Array/Collection/Repeat, corresponding input should be an array : IDictionary<string,object>[], templator will repeat the template starting from this Holder till the matching 'CollectionEnd'(in plain text) or the close tag of the element(in xml).
Indicates beginning position of an Array/Repeat/Collection (or beginning xml element in xml), must match with 'CollectionEnd', it functions the same as Collection in plain text format
Indicates then end position (end element in xml) of Array/Collection/Repeat
If a TextHolder's input value contains Templator syntax, mark the holder with this Keyword to enable the template in the value string to be processed with the same context
Allow a xml Template's input value provided for a TextHolder marked with this keyword to be processed
Allow the parser to seek upper level of the input when current context is inside a child array/repeat/collection loop
Aggregate the max value of given Holder names
Aggregate the min value of given Holder names
Aggregate the sum value of given Holder names
Aggregate the average value of given Holder names
Aggregate the count of given Holder which is an Array/Repeat/Collection
Aggregate the multiplied value of given Holder names
Retrieve another 'referred' TextHolder's value as the value
Specify the method of rounding a decimal as 'Even', only works with keyword 'Number'
Specify the method of rounding a decimal as 'AwayFromZero', only works with keyword 'Number'
Provide a default INPUT value of the TextHolder if no value found from input
Provide a default OUTPUT value of the TextHolder if no value found from input
Validate the input with specified regular expression, this keyword will try to find a preset regex in config using the given string as key. if not found will use the given string as the expression
Validate input strings' length, or fix the output length if current TextHolder indicates an Array/Repeat/Collection
Validate the min value of the value when it is a Number
Validate the max value of the value when it is a Number
Indicates the value is functioning as 'Bit', referred by 'If', has value means 'true', null indicates 'false'
Indicates the value of this holder is an Enum listed in config object.Enums, with the Enum name as key
Indicates and validate that the input value is a Number
Indicates and validate that the input value is a DateTime, parsing with the 'DateFormat' in config
Use String.Format to put the value into param string's '{0}' position
Map/replace output with the pair provided in the param to transform input
Replace specific string with another value in the output
Transform the output based on parameter options
Transform the output string to upper case
Transform the output string to lower case
Trim the output string
Transform the output string to encode for used as a csv cell
Transform the output string to encode with base32
Transform the output string to encode with base64
Transform the output string to encode with url encode
Transform the output string to encode with html encode
Transform the output string to encode with the options in Parameter
Decode the output string with the options in Parameter
Remove a specific character from the output
Ensure the output length is fixed by the number specified in Param, truncate if too long or fill with the Char provides by keyword 'Fill', default is white space
Perform a logic '?:' operator
Apply logic as String.Join to an collection/array, e.g. insert specific string before each item except the first one
Wrap the collection with begin/end tags if the collection (itself or another field name if supplied in the third parameter) is not empty, condition accepts '!' operator
Indicates this TextHolder only required input but will not output anything
If the given value is null or not provided, remove the xml element based on the xpath specified in param, default removing current element
Validate the input with the enum and put the enum value as the name of current xml element
Output the value of this field as an xml Element into the xml template, only working in xml template
Use the value as current xml element name instead of value
Only keep current xml attribute when value is provided and is not null, the value used is from another TextHolder specified in the param or the current Holder's value if no param specified
Use the value as current attribute's name instead of value
Only keep current xml attribute when value is provided and is not null, the value used is from another TextHolder specified in the param or the current Holder's value if no param specified
Put a comment of the TextHolder in the parsed result holder list
A display name for the TextHolder
If a value string's length is longer than the max value of keyword 'Length' and this keyword exists, the string will be truncated to that length without producing an error
Specifies a character used to append to the output if keyword 'FixedLength' is specified and the length is less than the fixed-length.
Specifies a character used to fill the output if keyword 'FixedLength' is specified and the length is less than the fixed-length, this will pre-fill the string instead of append
If multiple arrays/repeat/collections are provided in the input and this option exists, the output will make sure every array/repeat/collection's length is the same as the max length of the input, the empty part will be filled with null values without producing errors