blob: e66e44762096f21256d77e79c28ffa95433c9f6e [file] [log] [blame]
library mustache;
@MirrorsUsed(metaTargets: const [mustache])
import 'dart:mirrors';
part 'src/lambda_context.dart';
part 'src/node.dart';
part 'src/parse.dart';
part 'src/renderer.dart';
part 'src/scanner.dart';
part 'src/template.dart';
part 'src/token.dart';
/// [Mustache template documentation](http://mustache.github.com/mustache.5.html)
/// Use new Template(source) instead.
@deprecated
Template parse(String source, {bool lenient : false})
=> new Template(source, lenient: lenient);
/// A Template can be efficienctly rendered multiple times with different
/// values.
abstract class Template {
/// The constructor parses the template source and throws [TemplateException]
/// if the syntax of the source is invalid. Tag names may only contain the
/// characters a-z, A-Z, 0-9, underscore, minus, and period unless lenient
/// mode is specified.
factory Template(String source,
{String name,
bool lenient,
bool htmlEscapeValues,
PartialResolver partialResolver,
Map<String,LambdaFunction> helpers}) = _Template.fromSource;
String get name;
String get source;
/// [values] can be a combination of Map, List, String. Any non-String object
/// will be converted using toString(). Missing values will cause a
/// [TemplateException], unless lenient module is enabled.
String renderString(values);
/// [values] can be a combination of Map, List, String. Any non-String object
/// will be converted using toString(). Missing values will cause a
/// [TemplateException], unless lenient module is enabled.
void render(values, StringSink sink);
}
@deprecated
abstract class MustacheFormatException implements FormatException {
}
typedef Template PartialResolver(String templateName);
typedef Object LambdaFunction(LambdaContext context);
/// Passed as an argument to a mustache lambda function. The methods on
/// this object may only be called before the lambda function returns. If a
/// method is called after it has returned an exception will be thrown.
abstract class LambdaContext {
/// Render the current section tag in the current context and return the
/// result as a string. If provided, value will be added to the top of the
/// context's stack.
String renderString({Object value});
/// Render and directly output the current section tag. If provided, value
/// will be added to the top of the context's stack.
void render({Object value});
/// Output a string. The output will not be html escaped, and will be written
/// before the output returned from the lambda.
void write(Object object);
/// Get the unevaluated template source for the current section tag.
String get source;
/// Evaluate the string as a mustache template using the current context. If
/// provided, value will be added to the top of the context's stack.
String renderSource(String source, {Object value});
/// Lookup the value of a variable in the current context.
Object lookup(String variableName);
bool get isHelper;
List<String> get arguments;
}
const MustacheMirrorsUsedAnnotation mustache = const MustacheMirrorsUsedAnnotation();
class MustacheMirrorsUsedAnnotation {
const MustacheMirrorsUsedAnnotation();
}
/// [TemplateException] is used to obtain the line and column numbers
/// of the token which caused parse or render to fail.
abstract class TemplateException implements MustacheFormatException, Exception {
/// A message describing the problem parsing or rendering the template.
String get message;
/// The name used to identify the template, as passed to the Template
/// constructor.
String get templateName;
/// The 1-based line number of the token where formatting error was found.
int get line;
/// The 1-based column number of the token where formatting error was found.
int get column;
/// The character offset within the template source.
int get offset;
/// The template source.
String get source;
/// A short source substring of the source at the point the problem occurred
/// with parsing or rendering.
String get context;
String toString();
}