Minor formatting tweaks made while reading diffs.

This commit is contained in:
Michael Bayne
2023-11-28 14:43:11 -08:00
parent fe6ef9c75d
commit 92c1222d80
8 changed files with 69 additions and 94 deletions
@@ -413,7 +413,7 @@ public class Mustache {
private Mustache () {} // no instantiateski
protected static Template.Segment[] trim (Template.Segment[] segs, boolean top) {
// Trim modifies segs! It's return is not a copy!
// trim() modifies segs! Its return is not a copy!
// now that we have all of our segments, we make a pass through them to trim whitespace
// from section tags which stand alone on their lines
assert segs != null;
@@ -440,22 +440,18 @@ public class Mustache {
block._standaloneEnd = true;
}
}
// we have to indent partials if there is space before
// they are also standalone...
// we have to indent partials if there is space before they are also standalone...
else if (seg instanceof IncludedTemplateSegment) {
IncludedTemplateSegment include = (IncludedTemplateSegment) seg;
if (prev != null && prevBlank && nextBlank) {
String indent = prev.indent();
include._standalone = true;
if (! indent.equals("")) {
if (!indent.equals("")) {
include = include.indent(indent, pseg == null,nseg == null);
segs[ii] = include;
}
//segs[ii-1] = prev.trimTrailBlank();
/*
* We trim the end because partials
* follow standalone just like blocks
*/
/* We trim the end because partials follow standalone just like blocks */
if (next != null) {
segs[ii+1] = next.trimLeadBlank();
}
@@ -480,11 +476,10 @@ public class Mustache {
* @param _last whether to append an indent on the last segment last empty newline (no character after \n).
* @return cloned segments if changed
*/
static Template.Segment[] indentSegs(Template.Segment[] _segs, String indent, boolean _first, boolean _last) {
// unlike trim this method clones the segments if they have changed
// so the return value must be handled
// a simple identity check on the return can be used to determine
// if there is change
static Template.Segment[] indentSegs (Template.Segment[] _segs, String indent, boolean _first, boolean _last) {
// unlike trim this method clones the segments if they have changed so the return value must
// be handled; a simple identity check on the return can be used to determine if there is
// change
if (indent.equals("")) {
return _segs;
}
@@ -492,11 +487,9 @@ public class Mustache {
Template.Segment[] copySegs = new Template.Segment[length];
boolean changed = false;
for (int i = 0; i < _segs.length; i++) {
Template.Segment seg = _segs[i];
Template.Segment pseg = (i > 0) ? _segs[i-1] : null;
Template.Segment nseg = (i < length - 1) ? _segs[i+1] : null;
Template.Segment copy;
if (seg instanceof BlockSegment) {
BlockSegment bs = (BlockSegment) seg;
@@ -557,14 +550,12 @@ public class Mustache {
}
else if (seg instanceof IncludedTemplateSegment) {
/*
* If we are standalone then we rely on the indentation
* already present before the partial tag.
* If we are standalone then we rely on the indentation already present before the
* partial tag.
* [ WS ]{{> partial }}[\n]
*
* That is partial tags do not have the trailing blank
* removed during the trim process.
*
* This avoids needlessley creating StringSegment tags.
* That is partial tags do not have the trailing blank removed during the trim
* process. This avoids needlessley creating StringSegment tags.
*/
if (seg.isStandalone()) {
boolean last;
@@ -965,14 +956,14 @@ public class Mustache {
* Calculate indent for partial idententation
* @return indent space or empty string
*/
String indent() {
String indent () {
if (_trailBlank == -1 || _trailBlank >= _text.length()) {
return "";
}
return _text.substring(_trailBlank);
}
StringSegment indent(String indent, boolean first, boolean last) {
StringSegment indent (String indent, boolean first, boolean last) {
if (indent.equals("")) {
return this;
}
@@ -980,7 +971,7 @@ public class Mustache {
return new StringSegment(reindent, _first);
}
@Override boolean isStandalone() {
@Override boolean isStandalone () {
return false;
}
@@ -998,17 +989,17 @@ public class Mustache {
_leadBlank + "/" + _trailBlank;
}
//we indent after every new line for partial indententation
private static String reindent(String input, String indent, boolean first, boolean last) {
// we indent after every new line for partial indententation
private static String reindent (String input, String indent, boolean first, boolean last) {
int length = input.length();
StringBuilder sb = new StringBuilder(indent.length() + length);
if (first) {
sb.append(indent);
}
for (int i = 0; i < length; i++) {
char c = input.charAt(i);
for (int ii = 0; ii < length; ii++) {
char c = input.charAt(ii);
sb.append(c);
if (c == '\n' && ( last || i != length - 1) ) {
if (c == '\n' && (last || ii != length - 1)) {
sb.append(indent);
}
}
@@ -1074,7 +1065,7 @@ public class Mustache {
}
return t;
}
protected IncludedTemplateSegment indent(String indent, boolean first, boolean last) {
protected IncludedTemplateSegment indent (String indent, boolean first, boolean last) {
// Indent this partial based on the spacing provided.
// per the spec however much the partial reference is indendented (leading whitespace)
// is how much the partial content should be indented.
@@ -1085,10 +1076,10 @@ public class Mustache {
is._standalone = _standalone;
return is;
}
@Override boolean isStandalone() { return _standalone; }
@Override boolean isStandalone () { return _standalone; }
@Override
public String toString() {
public String toString () {
return "Include(name=" + _name + ", indent=" + _indent + ", standalone=" + _standalone
+ ")";
}
@@ -1135,11 +1126,11 @@ public class Mustache {
visitor.visitVariable(_name);
}
@Override
VariableSegment indent(String indent, boolean first, boolean last) {
VariableSegment indent (String indent, boolean first, boolean last) {
return this;
}
@Override
boolean isStandalone() {
boolean isStandalone () {
return false;
}
@Override public String toString () {
@@ -1188,10 +1179,10 @@ public class Mustache {
protected abstract BlockSegment indent (String indent, boolean first, boolean last);
@Override
boolean isStandalone() {
boolean isStandalone () {
return _standaloneEnd;
}
boolean isStandaloneStart() {
boolean isStandaloneStart () {
return _standaloneStart;
}
@@ -1206,7 +1197,7 @@ public class Mustache {
super(name, segs, line);
_comp = compiler;
}
protected SectionSegment(SectionSegment original, Template.Segment[] segs) {
protected SectionSegment (SectionSegment original, Template.Segment[] segs) {
super(original, segs);
_comp = original._comp;
}
@@ -1328,7 +1319,7 @@ public class Mustache {
@Override public void decompile (Delims delims, StringBuilder into) {} // nada
@Override public void visit (Visitor visit) {}
@Override FauxSegment indent (String indent, boolean first, boolean last) { return this; }
@Override boolean isStandalone() { return true; }
@Override boolean isStandalone () { return true; }
@Override public String toString () { return "Faux"; }
}
@@ -166,13 +166,8 @@ public class Template {
}
protected Template indent(String indent) {
/*
* What we want to do here is rebuild this partial template
* but indented.
*
* If identing does not change anything we return
* the original template.
*/
// What we want to do here is rebuild this partial template but indented.
// If identing does not change anything we return the original template.
if (indent.equals("")) {
return this;
}
@@ -397,32 +392,26 @@ public class Template {
/** A template is broken into segments. */
protected static abstract class Segment {
abstract void execute (Template tmpl, Context ctx, Writer out);
abstract void decompile (Mustache.Delims delims, StringBuilder into);
abstract void visit (Mustache.Visitor visitor);
/**
* Recursively indent by the parameter indent.
* @param indent should be space characters that are not \n
* @param first append indent to the first line (regardless if it has a \n or not)
* @param last append indent on the last \n that has no text after it
* @return newly crated segment or the same segment if nothing changed.
* @param indent should be space characters that are not {@code \n}.
* @param first append indent to the first line (regardless if it has a {@code \n} or not).
* @param last append indent on the last {@code \n} that has no text after it.
* @return a newly created segment or the same segment if nothing changed.
*/
abstract Segment indent(String indent, boolean first, boolean last);
abstract Segment indent (String indent, boolean first, boolean last);
/**
* Whether or not the segment is standalone.
* For blocks this is based on the closing tag.
* Once Trim is called standalone tags are determined so
* that proper (re)indentation will work without reparsing
* the template.
*
* String and variable tags are never standalone.
*
* The definition of standalone is defined by the mustache spec.
*
* @return true if the tag is standalone
* Whether or not the segment is standalone. The definition of standalone is defined by the
* mustache spec. String and variable tags are never standalone. For blocks this is based on
* the closing tag. Once {@code trim} is called, standalone tags are determined so that
* proper (re)indentation will work without reparsing the template.
* @return true if the tag is standalone.
*/
abstract boolean isStandalone();
abstract boolean isStandalone ();
protected static void write (Writer out, CharSequence data) {
try {
@@ -1,3 +1,7 @@
//
// JMustache - A Java implementation of the Mustache templating language
// http://github.com/samskivert/jmustache/blob/master/LICENSE
package com.samskivert.mustache;
import static org.junit.Assert.assertEquals;
@@ -25,7 +29,6 @@ public class PartialThreadSafeTest {
long t = System.currentTimeMillis();
AtomicInteger loadCount = new AtomicInteger();
TemplateLoader loader = new TemplateLoader() {
@Override
public Reader getTemplate(String name) throws Exception {
if ("partial".equals(name)) {
@@ -63,7 +66,5 @@ public class PartialThreadSafeTest {
assertEquals(1, loadCount.get());
System.out.println(loadCount);
System.out.println(System.currentTimeMillis() - t);
}
}
@@ -229,7 +229,6 @@ public abstract class SharedTests
} catch (UnsupportedOperationException uoe) {} // expected
}
Map<String,String> partials = new LinkedHashMap<>();
@SafeVarargs
@@ -20,5 +20,4 @@ public class CustomSpecTest extends SpecTest {
};
return SpecTest.data("/custom/specs/", groups);
}
}
@@ -25,5 +25,4 @@ public class OfficialSpecTest extends SpecTest {
};
return SpecTest.data("/specs/specs/", groups);
}
}
@@ -67,7 +67,6 @@ public abstract class SpecTest {
s = s.replace('\t', '\u21E5');
s = s.replace("\n", "\u21B5\n");
s = s.replace("\u240D", "\u240D\n");
return s;
}
@@ -75,7 +74,6 @@ public abstract class SpecTest {
return (text == null) ? null : text.replace("\r", "\\r").replace("\n", "\\n");
}
public static Collection<Object[]> data (String specPath, String[] groups) {
List<Object[]> tuples = new ArrayList<>();
int i = 0;
@@ -112,5 +110,4 @@ public abstract class SpecTest {
throw err;
}
}
}