Remove delimiter class
diff --git a/lib/mustache.dart b/lib/mustache.dart
index 17a8848..a187b7a 100644
--- a/lib/mustache.dart
+++ b/lib/mustache.dart
@@ -31,8 +31,7 @@
{bool lenient,
bool htmlEscapeValues,
String name,
- PartialResolver partialResolver,
- Delimiters delimiters}) = _Template.fromSource;
+ PartialResolver partialResolver}) = _Template.fromSource;
String get name;
String get source;
@@ -129,57 +128,3 @@
class MustacheMirrorsUsedAnnotation {
const MustacheMirrorsUsedAnnotation();
}
-
-
-//FIXME Don't expose this. Just take a string in the api.
-class Delimiters {
-
- const Delimiters.standard() : this(
- _OPEN_MUSTACHE,
- _OPEN_MUSTACHE,
- _CLOSE_MUSTACHE,
- _CLOSE_MUSTACHE);
-
- // Assume single space between delimiters.
- factory Delimiters.fromString(String delimiters) {
- if (delimiters.length == 3) {
- return new Delimiters(
- delimiters.codeUnits[0],
- null,
- null,
- delimiters.codeUnits[2]);
-
- } else if (delimiters.length == 5) {
- return new Delimiters(
- delimiters.codeUnits[0],
- delimiters.codeUnits[1],
- delimiters.codeUnits[3],
- delimiters.codeUnits[4]);
- } else {
- throw 'Invalid delimiter string'; //FIXME
- }
- }
-
- const Delimiters(this.open, this.openInner, this.closeInner, this.close);
-
- final int open;
- final int openInner;
- final int closeInner;
- final int close;
-
- String toString() {
- var value = new String.fromCharCode(open);
-
- if (openInner != null)
- value += new String.fromCharCode(openInner);
-
- value += ' ';
-
- if (closeInner != null)
- value += new String.fromCharCode(closeInner);
-
- value += new String.fromCharCode(close);
-
- return value;
- }
-}
diff --git a/lib/src/lambda_context.dart b/lib/src/lambda_context.dart
index af913e5..c52a2a7 100644
--- a/lib/src/lambda_context.dart
+++ b/lib/src/lambda_context.dart
@@ -61,9 +61,7 @@
_checkClosed();
var sink = new StringBuffer();
// Lambdas used for sections should parse with the current delimiters.
- var delimiters = _isSection
- ? new Delimiters.fromString(_renderer._delimiters)
- : new Delimiters.standard();
+ var delimiters = _isSection ? _renderer._delimiters : '{{ }}';
var node = _parse(source,
_renderer._lenient,
_renderer._templateName,
diff --git a/lib/src/parse.dart b/lib/src/parse.dart
index 6a92296..4b8e9f0 100644
--- a/lib/src/parse.dart
+++ b/lib/src/parse.dart
@@ -3,8 +3,10 @@
final RegExp _validTag = new RegExp(r'^[0-9a-zA-Z\_\-\.]+$');
final RegExp _integerTag = new RegExp(r'^[0-9]+$');
-_Node _parse(String source, bool lenient, String templateName,
- Delimiters delimiters) {
+_Node _parse(String source,
+ bool lenient,
+ String templateName,
+ String delimiters) {
if (source == null) throw new ArgumentError.notNull('Template source');
diff --git a/lib/src/scanner.dart b/lib/src/scanner.dart
index 61218b4..bf1dacf 100644
--- a/lib/src/scanner.dart
+++ b/lib/src/scanner.dart
@@ -22,15 +22,16 @@
class _Scanner {
- _Scanner(String source, this._templateName, Delimiters initial, {bool lenient: true})
+ _Scanner(String source, this._templateName, String delimiters, {bool lenient: true})
: _r = new _CharReader(source),
- _lenient = lenient,
- _openDelimiter = (initial == null) ? _OPEN_MUSTACHE : initial.open,
- _openDelimiterInner =
- (initial == null) ? _OPEN_MUSTACHE : initial.openInner,
- _closeDelimiterInner =
- (initial == null) ? _CLOSE_MUSTACHE : initial.closeInner,
- _closeDelimiter = (initial == null) ? _CLOSE_MUSTACHE : initial.close;
+ _lenient = lenient {
+
+ var delims = _parseDelimiterString(delimiters);
+ _openDelimiter = delims[0];
+ _openDelimiterInner = delims[1];
+ _closeDelimiterInner = delims[2];
+ _closeDelimiter = delims[3];
+ }
final String _templateName;
@@ -219,11 +220,11 @@
_expect(delimiterInner);
_expect(delimiter);
- var value = new Delimiters(
+ var value = _delimiterString(
_openDelimiter,
_openDelimiterInner,
_closeDelimiterInner,
- _closeDelimiter).toString();
+ _closeDelimiter);
_tokens.add(new _Token(_CHANGE_DELIMITER, value, line, col));
}
@@ -323,3 +324,28 @@
}
}
+_delimiterString(int open, int openInner, int closeInner, int close) {
+ var buffer = new StringBuffer();
+ buffer.writeCharCode(open);
+ if (openInner != null) buffer.writeCharCode(openInner);
+ buffer.write(' ');
+ if (closeInner != null) buffer.writeCharCode(closeInner);
+ buffer.writeCharCode(close);
+ return buffer.toString();
+}
+
+List<int> _parseDelimiterString(String s) {
+ if (s == null) return [_OPEN_MUSTACHE, _OPEN_MUSTACHE,
+ _CLOSE_MUSTACHE, _CLOSE_MUSTACHE];
+ if (s.length == 3) {
+ return [s.codeUnits[0], null, null, s.codeUnits[2]];
+
+ } else if (s.length == 5) {
+ return [s.codeUnits[0],
+ s.codeUnits[1],
+ s.codeUnits[3],
+ s.codeUnits[4]];
+ } else {
+ throw 'Invalid delimiter string $s'; //FIXME
+ }
+}
\ No newline at end of file
diff --git a/lib/src/template.dart b/lib/src/template.dart
index 82d8fe8..3574981 100644
--- a/lib/src/template.dart
+++ b/lib/src/template.dart
@@ -6,10 +6,9 @@
{bool lenient: false,
bool htmlEscapeValues : true,
String name,
- PartialResolver partialResolver,
- Delimiters delimiters : const Delimiters.standard()})
+ PartialResolver partialResolver})
: source = source,
- _root = _parse(source, lenient, name, delimiters),
+ _root = _parse(source, lenient, name, '{{ }}'),
_lenient = lenient,
_htmlEscapeValues = htmlEscapeValues,
_name = name,