twig function
Highlight.js language definition for twig.
Implementation
Mode twig(Highlight hljs) {
final Mode mode0 = Mode();
final Mode mode1 = Mode();
final Mode mode2 = Mode();
final Mode mode3 = Mode();
final Mode mode4 = Mode();
final Mode mode5 = Mode();
final Mode mode6 = Mode();
final Mode mode7 = Mode();
mode0.match = r'\|(?=[A-Za-z_]+:?)';
mode0.beginScope = r'punctuation';
mode0.relevance = 0;
mode0.contains = [mode1];
mode1.match = r'[A-Za-z_]+:?';
mode1.keywords = [
r'abs',
r'abbr_class',
r'abbr_method',
r'batch',
r'capitalize',
r'column',
r'convert_encoding',
r'country_name',
r'currency_name',
r'currency_symbol',
r'data_uri',
r'date',
r'date_modify',
r'default',
r'escape',
r'file_excerpt',
r'file_link',
r'file_relative',
r'filter',
r'first',
r'format',
r'format_args',
r'format_args_as_text',
r'format_currency',
r'format_date',
r'format_datetime',
r'format_file',
r'format_file_from_text',
r'format_number',
r'format_time',
r'html_to_markdown',
r'humanize',
r'inky_to_html',
r'inline_css',
r'join',
r'json_encode',
r'keys',
r'language_name',
r'last',
r'length',
r'locale_name',
r'lower',
r'map',
r'markdown',
r'markdown_to_html',
r'merge',
r'nl2br',
r'number_format',
r'raw',
r'reduce',
r'replace',
r'reverse',
r'round',
r'slice',
r'slug',
r'sort',
r'spaceless',
r'split',
r'striptags',
r'timezone_name',
r'title',
r'trans',
r'transchoice',
r'trim',
r'u|0',
r'upper',
r'url_encode',
r'yaml_dump',
r'yaml_encode',
];
mode2.beginKeywords =
r'absolute_url asset|0 asset_version attribute block constant controller|0 country_timezones csrf_token cycle date dump expression form|0 form_end form_errors form_help form_label form_rest form_row form_start form_widget html_classes include is_granted logout_path logout_url max min parent path|0 random range relative_path render render_esi source template_from_string url|0';
mode2.keywords = {
r'name': [
r'absolute_url',
r'asset|0',
r'asset_version',
r'attribute',
r'block',
r'constant',
r'controller|0',
r'country_timezones',
r'csrf_token',
r'cycle',
r'date',
r'dump',
r'expression',
r'form|0',
r'form_end',
r'form_errors',
r'form_help',
r'form_label',
r'form_rest',
r'form_row',
r'form_start',
r'form_widget',
r'html_classes',
r'include',
r'is_granted',
r'logout_path',
r'logout_url',
r'max',
r'min',
r'parent',
r'path|0',
r'random',
r'range',
r'relative_path',
r'render',
r'render_esi',
r'source',
r'template_from_string',
r'url|0',
],
};
mode2.relevance = 0;
mode2.contains = [mode3];
mode3.begin = r'\(';
mode3.end = r'\)';
mode3.excludeBegin = true;
mode3.excludeEnd = true;
mode3.contains = [mode4, mode7];
mode4.scope = r'string';
mode4.variants = [mode5, mode6];
mode5.begin = r"'";
mode5.end = r"'";
mode6.begin = r'"';
mode6.end = r'"';
mode7.scope = r'number';
mode7.match = r'\d+';
return Mode(
name: r'Twig',
aliases: [r'craftcms'],
caseInsensitive: true,
subLanguage: r'xml',
contains: [
Mode(
scope: r'comment',
begin: r'\{#',
end: r'#\}',
contains: [
Mode(
scope: r'doctag',
begin: r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',
end: r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',
excludeBegin: true,
relevance: 0,
),
Mode(
begin:
r"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",
),
],
),
Mode(
beginScope: {1: r'template-tag', 3: r'name'},
relevance: 2,
endScope: r'template-tag',
begin: [
r'\{%',
r'\s*',
r'(?:apply|autoescape|block|cache|deprecated|do|embed|extends|filter|flush|for|form_theme|from|if|import|include|macro|sandbox|set|stopwatch|trans|trans_default_domain|transchoice|use|verbatim|with|endapply|endautoescape|endblock|endcache|enddeprecated|enddo|endembed|endextends|endfilter|endflush|endfor|endform_theme|endfrom|endif|endimport|endinclude|endmacro|endsandbox|endset|endstopwatch|endtrans|endtrans_default_domain|endtranschoice|enduse|endverbatim|endwith)',
],
end: r'%\}',
keywords: r'in',
contains: [mode0, mode2, mode4, mode7],
),
Mode(
beginScope: {1: r'template-tag', 3: r'name'},
relevance: 1,
endScope: r'template-tag',
begin: [r'\{%', r'\s*', r'(?:[a-z_]+)'],
end: r'%\}',
keywords: r'in',
contains: [mode0, mode2, mode4, mode7],
),
Mode(
scope: r'template-variable',
begin: r'\{\{',
end: r'\}\}',
contains: [r'self', mode0, mode2, mode4, mode7],
),
],
);
}