Inline delimiter code
diff --git a/lib/src/scanner.dart b/lib/src/scanner.dart
index 8c7665c..f07c68c 100644
--- a/lib/src/scanner.dart
+++ b/lib/src/scanner.dart
@@ -11,18 +11,31 @@
_lenient = lenient,
_itr = source.runes.iterator {
- var delims = _parseDelimiterString(delimiters);
- _openDelimiter = delims[0];
- _openDelimiterInner = delims[1];
- _closeDelimiterInner = delims[2];
- _closeDelimiter = delims[3];
-
if (source == '') {
_c = _EOF;
} else {
_itr.moveNext();
_c = _itr.current;
}
+
+ if (delimiters == null) {
+ _openDelimiter = _openDelimiterInner = _OPEN_MUSTACHE;
+ _closeDelimiter = _closeDelimiterInner = _CLOSE_MUSTACHE;
+
+ } else if (delimiters.length == 3) {
+ _openDelimiter = delimiters.codeUnits[0];
+ _closeDelimiter = delimiters.codeUnits[2];
+
+ } else if (delimiters.length == 5) {
+ _openDelimiter = delimiters.codeUnits[0];
+ _openDelimiterInner = delimiters.codeUnits[1];
+ _closeDelimiterInner = delimiters.codeUnits[3];
+ _closeDelimiter = delimiters.codeUnits[4];
+
+ } else {
+ throw new TemplateException(
+ 'Invalid delimiter string $delimiters', null, null, null);
+ }
}
final String _templateName;
@@ -320,11 +333,16 @@
if (delimiterInner != null) _expect(delimiterInner);
_expect(delimiter);
- var value = _delimiterString(
- _openDelimiter,
- _openDelimiterInner,
- _closeDelimiterInner,
- _closeDelimiter);
+ // Create delimiter string.
+ var buffer = new StringBuffer();
+ buffer.writeCharCode(_openDelimiter);
+ if (_openDelimiterInner != null) buffer.writeCharCode(_openDelimiterInner);
+ buffer.write(' ');
+ if (_closeDelimiterInner != null) {
+ buffer.writeCharCode(_closeDelimiterInner);
+ }
+ buffer.writeCharCode(_closeDelimiter);
+ var value = buffer.toString();
_append(TokenType.changeDelimiter, value, start, _offset);
}
@@ -335,33 +353,6 @@
}
-_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 new TemplateException(
- 'Invalid delimiter string $s', null, null, null);
- }
-}
-
const int _EOF = -1;
const int _TAB = 9;
const int _NEWLINE = 10;