Commit Graph

103 Commits

Author SHA1 Message Date
Adam Gent 96aac1a41f Improve escaping performance 2023-12-19 12:57:38 -05:00
Michael Bayne 428f7d2d43 Fix incorrect Javadoc tag. 2023-11-30 12:18:48 -08:00
Adam Gent f861f55f34 Remove unused method 2023-11-30 12:39:42 -05:00
Adam Gent a065543327 Inheritance support #120
Turn on inheritance tests. Some whitespace issues.

Recursion working but multi standalone broken

Make inheritance pass spec tests
2023-11-30 12:11:52 -05:00
Michael Bayne 92c1222d80 Minor formatting tweaks made while reading diffs. 2023-11-29 08:35:28 -08:00
Adam Gent ab4bcb749f Make partial loading threadsafe across platforms 2023-11-29 09:04:01 -05:00
Adam Gent 388406eab5 Fix identation with section segments 2023-11-27 13:27:58 -05:00
Adam Gent 8a85c64522 Fix nested partial indentation 2023-11-21 13:11:57 -05:00
Adam Gent afbf37e028 Partial indentation support for v1.3 mustache 2023-11-17 16:48:38 -05:00
Michael Bayne 3a6cd57e00 Whitespace tweaks. 2023-11-15 09:57:27 -08:00
Michael Bayne 940af397c4 Merge pull request #140 from ralfs-gutmanis/master
Add ability to pass CharSequence instead of forcing String for contex…
2023-11-15 09:52:14 -08:00
Michael Bayne 10df38d9a3 Couple of whitespace tweaks. 2023-11-15 09:13:10 -08:00
Peer Schönhusen 979b3b887c Add indentation to partials 2023-11-15 11:24:40 +01:00
Ralfs Gūtmanis d1d72031f2 Add ability to pass CharSequence instead of forcing String for context variable.
java.lang.String is immutable and cannot be overwritten by user.
When passing sensitive data as context variable String remains in memory until GC removes it.
CharSequence allows user to provide his own implementation and overwrite data as needed.
2023-09-18 14:05:37 +03:00
Michael Bayne 6691b3b687 Formatting tweak. 2019-07-02 08:15:30 -07:00
Greg Simon e01c1b7522 emptyStringIsFalse flag now works with any Object.
Previously, only String types were checked for being empty. Now
the Formatter is used to format the Object before checking for
being empty.
2019-06-27 11:23:19 +10:00
Michael Bayne b3c54669cc Make MustacheCustomContext a Mustache inner interface.
This matches the style of all the other extension points.
2018-08-21 17:20:33 -07:00
Michael Bayne 4533567303 Fix bugs relating to . and this.
First, I missed some reference checks when I stopped interning names. Fixed
those.

Second, when iterating over an array which contained null elements, the wrong
thing was happening.
2018-06-04 16:10:35 -07:00
Michael Bayne b823ed87c5 Remove use of String.intern().
Me, on the blackboard:

"I will not optimize code without using a profiler."
"I will not optimize code without using a profiler."
"I will not optimize code without using a profiler."
"I will not optimize code without using a profiler."
"I will not optimize code without using a profiler."
...
2018-04-30 08:58:01 -07:00
Michael Bayne 2c53104cf3 Extract Compiler.loadTemplate helper.
If a lambda wanted to load a template via its own template loader, this makes
it a lot easier to do so.
2018-03-05 09:27:18 -08:00
Michael Bayne bf288c8810 Better wording. 2017-12-17 15:20:13 -08:00
Michael Bayne 37e31cbeac Add mechism to visit template tags.
This is useful when you want to inspect the structure of the template without
executing it.
2017-12-17 15:16:09 -08:00
Michael Bayne 326f04cb1e Brace fiddling. 2017-12-17 14:46:42 -08:00
Michael Bayne 172f35fb64 When nesting for non-list contexts, inherit list info.
This ensures that if you enter a conditional block while inside a list
block, the list "state" from the outer list will still be visible. For
example (somewhat contrived, but gets the point across):

{{#list}}
{{#name}}{{-index}}. {{.}}{{/name}}
{{^name}}{{-index}}. No name!{{/name}}
{{/list}}

Yields something like:

1. Bob
2. Mary
3. No name!
4. Jim

Fixes #90.
2017-09-20 09:43:14 -07:00
Michael Bayne 546f78318e Simple support for decompiling fragments.
There are limitations! See the javadoc for Template.Fragment.decompile.

Closes #75.
2016-04-14 08:32:07 -07:00
ui4j 5cf4e60d89 Removed unused variables 2015-05-06 23:42:10 +03:00
Michael Bayne 2b376d3189 Align "compact" Javadocs more sanely. 2015-03-06 12:24:13 -08:00
Michael Bayne 43a51b3235 Be more robust about closing template Reader.
Also some tidying: we don't like tabs or trailing whitespace.
2015-03-06 12:19:46 -08:00
Alexander Schrab 2ab053ce35 Close readers provided by TemplateLoader 2015-03-04 18:45:55 +01:00
Michael Bayne 8618f89f7e Added strictSections configuration.
Section behavior used to be somewhat hackily determined from nullValue and
defaultValue, but it was messy. Now it has its own configuration and things are
more explicit.

Previously missing/null sections were treated as false, but if you set
nullValue to something, then missing sections became an error, but null
sections remained false. If you set defaultValue to something, missing sections
went back to being omitted. Kooky.

Now missing sections are omitted, unless you set strictSections to true, in
which case they become an error. nullValue and defaultValue have no impact on
section behavior.

There is no way to make null sections an error, but I don't see any demand for
that, so I'm going to leave that as a TODO.

Closes #60.
2014-12-20 11:06:46 -08:00
Michael Bayne 09fee0f037 Enabled more tests, fixed more bugs.
Mainly we also needed to trim around comment tags, but also there were a bunch
of tricky edge cases that were only partially addressed. This is some edgy
business!
2014-12-16 14:47:31 -08:00
Michael Bayne 0e2a7d13d5 Properly trim whitespace around delims tag.
This includes consolidation of other whitespace trimming to avoid duplication
with the delims trimming code.
2014-12-16 11:07:24 -08:00
Michael Bayne ef4184404d Trim newlines from section tags with leading+trailing whitespace.
Other implementations apparently do it, and we have to keep up with the
Joneses.

Closes #59.
2014-12-16 09:45:37 -08:00
Michael Bayne b33bbda7d9 Label that bunch of mysterious ctor params. 2014-12-06 12:52:43 -08:00
Michael Bayne 614bb82b17 Handle CRLF in skipNewline mode. 2014-12-01 16:35:22 -08:00
Michael Bayne 199ebf1f84 Use a copy of delims in the parser.
I don't know what madness overcame me when I thought it was a good idea to
mutate the compiler's delims during parsing and then restore them.
2014-03-31 09:41:02 -07:00
Michael Bayne 3fe5e020d8 Factor exception wrapped read() into nextChar(). 2014-03-12 11:35:45 -07:00
Michael Bayne 8998b5f11e May as well report the bogus final char if we can. 2014-03-12 11:31:16 -07:00
Michael Bayne d1c8a665a9 Also, why add a brace and then remove it? 2014-03-12 11:23:16 -07:00
robbytx 5c3a93e079 Correct number of braces for error message 2014-03-12 11:21:17 -07:00
Michael Bayne 59e06b24c9 Invertable -> invertible. Other minor tidying. 2014-03-11 07:43:44 -07:00
robbytx 2251ac1ed2 Add support for lambdas in inverse blocks 2014-03-10 17:06:21 -05:00
Michael Bayne acc339ee13 Added mechanism to customize toString-ing of values. 2014-01-08 10:50:37 -08:00
Michael Bayne 5001469052 Updated docs for Compiler.nullValue(). 2013-10-08 12:21:54 -07:00
Michael Bayne 3af55c2660 Some javadoc improvements. 2013-08-01 16:04:46 -07:00
Michael Bayne d1384cd049 Reworked user-defined escaping to suit my tastes. 2013-08-01 16:01:31 -07:00
Nat Pryce 4ae290fdaa User-extensible escaping rules (not just HTML or no escaping) 2013-07-22 22:36:51 +01:00
Michael Bayne 9441d062a6 Moved falsey-ness detection into compiler.
Fixes #39.

This fixes a bug where falsey values were not properly triggering inverted
sections, and consolidates some logic.

Also did some renaming. Couldn't help myself.
2013-07-03 16:48:09 -07:00
Michael Bayne 6e3051c3ba Some tidying, added a negative test, method tests.
The latter was because the new feature was not actually conditional on its
compiler parameter. It was on all the time.
2013-05-13 13:22:45 -07:00
Mickael Jeanroy 4300b1213e Add option to treat zero as a falsy value
In javascript implementation, zero is a falsy value and is treated as a false boolean.
An option is added (false by default) to treat zero as a falsy value as in javascript implementation.

It means that section like:

{{#zeroValue}}foo{{/zeroValue}}

will not be rendered.
2013-05-08 22:24:40 +02:00