]> luflow.net public git repositories - flow-web.git/blob - static/highlight/languages/lasso.js
Initial commit.
[flow-web.git] / static / highlight / languages / lasso.js
1 /*! `lasso` grammar compiled for Highlight.js 11.11.1 */
2 (function(){
3 var hljsGrammar = (function () {
4 'use strict';
5
6 /*
7 Language: Lasso
8 Author: Eric Knibbe <eric@lassosoft.com>
9 Description: Lasso is a language and server platform for database-driven web applications. This definition handles Lasso 9 syntax and LassoScript for Lasso 8.6 and earlier.
10 Website: http://www.lassosoft.com/What-Is-Lasso
11 Category: database, web
12 */
13
14 function lasso(hljs) {
15 const LASSO_IDENT_RE = '[a-zA-Z_][\\w.]*';
16 const LASSO_ANGLE_RE = '<\\?(lasso(script)?|=)';
17 const LASSO_CLOSE_RE = '\\]|\\?>';
18 const LASSO_KEYWORDS = {
19 $pattern: LASSO_IDENT_RE + '|&[lg]t;',
20 literal:
21 'true false none minimal full all void and or not '
22 + 'bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft',
23 built_in:
24 'array date decimal duration integer map pair string tag xml null '
25 + 'boolean bytes keyword list locale queue set stack staticarray '
26 + 'local var variable global data self inherited currentcapture givenblock',
27 keyword:
28 'cache database_names database_schemanames database_tablenames '
29 + 'define_tag define_type email_batch encode_set html_comment handle '
30 + 'handle_error header if inline iterate ljax_target link '
31 + 'link_currentaction link_currentgroup link_currentrecord link_detail '
32 + 'link_firstgroup link_firstrecord link_lastgroup link_lastrecord '
33 + 'link_nextgroup link_nextrecord link_prevgroup link_prevrecord log '
34 + 'loop namespace_using output_none portal private protect records '
35 + 'referer referrer repeating resultset rows search_args '
36 + 'search_arguments select sort_args sort_arguments thread_atomic '
37 + 'value_list while abort case else fail_if fail_ifnot fail if_empty '
38 + 'if_false if_null if_true loop_abort loop_continue loop_count params '
39 + 'params_up return return_value run_children soap_definetag '
40 + 'soap_lastrequest soap_lastresponse tag_name ascending average by '
41 + 'define descending do equals frozen group handle_failure import in '
42 + 'into join let match max min on order parent protected provide public '
43 + 'require returnhome skip split_thread sum take thread to trait type '
44 + 'where with yield yieldhome'
45 };
46 const HTML_COMMENT = hljs.COMMENT(
47 '<!--',
48 '-->',
49 { relevance: 0 }
50 );
51 const LASSO_NOPROCESS = {
52 className: 'meta',
53 begin: '\\[noprocess\\]',
54 starts: {
55 end: '\\[/noprocess\\]',
56 returnEnd: true,
57 contains: [ HTML_COMMENT ]
58 }
59 };
60 const LASSO_START = {
61 className: 'meta',
62 begin: '\\[/noprocess|' + LASSO_ANGLE_RE
63 };
64 const LASSO_DATAMEMBER = {
65 className: 'symbol',
66 begin: '\'' + LASSO_IDENT_RE + '\''
67 };
68 const LASSO_CODE = [
69 hljs.C_LINE_COMMENT_MODE,
70 hljs.C_BLOCK_COMMENT_MODE,
71 hljs.inherit(hljs.C_NUMBER_MODE, { begin: hljs.C_NUMBER_RE + '|(-?infinity|NaN)\\b' }),
72 hljs.inherit(hljs.APOS_STRING_MODE, { illegal: null }),
73 hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }),
74 {
75 className: 'string',
76 begin: '`',
77 end: '`'
78 },
79 { // variables
80 variants: [
81 { begin: '[#$]' + LASSO_IDENT_RE },
82 {
83 begin: '#',
84 end: '\\d+',
85 illegal: '\\W'
86 }
87 ] },
88 {
89 className: 'type',
90 begin: '::\\s*',
91 end: LASSO_IDENT_RE,
92 illegal: '\\W'
93 },
94 {
95 className: 'params',
96 variants: [
97 {
98 begin: '-(?!infinity)' + LASSO_IDENT_RE,
99 relevance: 0
100 },
101 { begin: '(\\.\\.\\.)' }
102 ]
103 },
104 {
105 begin: /(->|\.)\s*/,
106 relevance: 0,
107 contains: [ LASSO_DATAMEMBER ]
108 },
109 {
110 className: 'class',
111 beginKeywords: 'define',
112 returnEnd: true,
113 end: '\\(|=>',
114 contains: [ hljs.inherit(hljs.TITLE_MODE, { begin: LASSO_IDENT_RE + '(=(?!>))?|[-+*/%](?!>)' }) ]
115 }
116 ];
117 return {
118 name: 'Lasso',
119 aliases: [
120 'ls',
121 'lassoscript'
122 ],
123 case_insensitive: true,
124 keywords: LASSO_KEYWORDS,
125 contains: [
126 {
127 className: 'meta',
128 begin: LASSO_CLOSE_RE,
129 relevance: 0,
130 starts: { // markup
131 end: '\\[|' + LASSO_ANGLE_RE,
132 returnEnd: true,
133 relevance: 0,
134 contains: [ HTML_COMMENT ]
135 }
136 },
137 LASSO_NOPROCESS,
138 LASSO_START,
139 {
140 className: 'meta',
141 begin: '\\[no_square_brackets',
142 starts: {
143 end: '\\[/no_square_brackets\\]', // not implemented in the language
144 keywords: LASSO_KEYWORDS,
145 contains: [
146 {
147 className: 'meta',
148 begin: LASSO_CLOSE_RE,
149 relevance: 0,
150 starts: {
151 end: '\\[noprocess\\]|' + LASSO_ANGLE_RE,
152 returnEnd: true,
153 contains: [ HTML_COMMENT ]
154 }
155 },
156 LASSO_NOPROCESS,
157 LASSO_START
158 ].concat(LASSO_CODE)
159 }
160 },
161 {
162 className: 'meta',
163 begin: '\\[',
164 relevance: 0
165 },
166 {
167 className: 'meta',
168 begin: '^#!',
169 end: 'lasso9$',
170 relevance: 10
171 }
172 ].concat(LASSO_CODE)
173 };
174 }
175
176 return lasso;
177
178 })();
179
180 hljs.registerLanguage('lasso', hljsGrammar);
181 })();