| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 | 
							- /*
 
- Language: Lasso
 
- Author: Eric Knibbe <eric@lassosoft.com>
 
- 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.
 
- Website: http://www.lassosoft.com/What-Is-Lasso
 
- */
 
- function lasso(hljs) {
 
-   const LASSO_IDENT_RE = '[a-zA-Z_][\\w.]*';
 
-   const LASSO_ANGLE_RE = '<\\?(lasso(script)?|=)';
 
-   const LASSO_CLOSE_RE = '\\]|\\?>';
 
-   const LASSO_KEYWORDS = {
 
-     $pattern: LASSO_IDENT_RE + '|&[lg]t;',
 
-     literal:
 
-       'true false none minimal full all void and or not ' +
 
-       'bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft',
 
-     built_in:
 
-       'array date decimal duration integer map pair string tag xml null ' +
 
-       'boolean bytes keyword list locale queue set stack staticarray ' +
 
-       'local var variable global data self inherited currentcapture givenblock',
 
-     keyword:
 
-       'cache database_names database_schemanames database_tablenames ' +
 
-       'define_tag define_type email_batch encode_set html_comment handle ' +
 
-       'handle_error header if inline iterate ljax_target link ' +
 
-       'link_currentaction link_currentgroup link_currentrecord link_detail ' +
 
-       'link_firstgroup link_firstrecord link_lastgroup link_lastrecord ' +
 
-       'link_nextgroup link_nextrecord link_prevgroup link_prevrecord log ' +
 
-       'loop namespace_using output_none portal private protect records ' +
 
-       'referer referrer repeating resultset rows search_args ' +
 
-       'search_arguments select sort_args sort_arguments thread_atomic ' +
 
-       'value_list while abort case else fail_if fail_ifnot fail if_empty ' +
 
-       'if_false if_null if_true loop_abort loop_continue loop_count params ' +
 
-       'params_up return return_value run_children soap_definetag ' +
 
-       'soap_lastrequest soap_lastresponse tag_name ascending average by ' +
 
-       'define descending do equals frozen group handle_failure import in ' +
 
-       'into join let match max min on order parent protected provide public ' +
 
-       'require returnhome skip split_thread sum take thread to trait type ' +
 
-       'where with yield yieldhome'
 
-   };
 
-   const HTML_COMMENT = hljs.COMMENT(
 
-     '<!--',
 
-     '-->',
 
-     {
 
-       relevance: 0
 
-     }
 
-   );
 
-   const LASSO_NOPROCESS = {
 
-     className: 'meta',
 
-     begin: '\\[noprocess\\]',
 
-     starts: {
 
-       end: '\\[/noprocess\\]',
 
-       returnEnd: true,
 
-       contains: [HTML_COMMENT]
 
-     }
 
-   };
 
-   const LASSO_START = {
 
-     className: 'meta',
 
-     begin: '\\[/noprocess|' + LASSO_ANGLE_RE
 
-   };
 
-   const LASSO_DATAMEMBER = {
 
-     className: 'symbol',
 
-     begin: '\'' + LASSO_IDENT_RE + '\''
 
-   };
 
-   const LASSO_CODE = [
 
-     hljs.C_LINE_COMMENT_MODE,
 
-     hljs.C_BLOCK_COMMENT_MODE,
 
-     hljs.inherit(hljs.C_NUMBER_MODE, {
 
-       begin: hljs.C_NUMBER_RE + '|(-?infinity|NaN)\\b'
 
-     }),
 
-     hljs.inherit(hljs.APOS_STRING_MODE, {
 
-       illegal: null
 
-     }),
 
-     hljs.inherit(hljs.QUOTE_STRING_MODE, {
 
-       illegal: null
 
-     }),
 
-     {
 
-       className: 'string',
 
-       begin: '`',
 
-       end: '`'
 
-     },
 
-     { // variables
 
-       variants: [
 
-         {
 
-           begin: '[#$]' + LASSO_IDENT_RE
 
-         },
 
-         {
 
-           begin: '#',
 
-           end: '\\d+',
 
-           illegal: '\\W'
 
-         }
 
-       ]
 
-     },
 
-     {
 
-       className: 'type',
 
-       begin: '::\\s*',
 
-       end: LASSO_IDENT_RE,
 
-       illegal: '\\W'
 
-     },
 
-     {
 
-       className: 'params',
 
-       variants: [
 
-         {
 
-           begin: '-(?!infinity)' + LASSO_IDENT_RE,
 
-           relevance: 0
 
-         },
 
-         {
 
-           begin: '(\\.\\.\\.)'
 
-         }
 
-       ]
 
-     },
 
-     {
 
-       begin: /(->|\.)\s*/,
 
-       relevance: 0,
 
-       contains: [LASSO_DATAMEMBER]
 
-     },
 
-     {
 
-       className: 'class',
 
-       beginKeywords: 'define',
 
-       returnEnd: true,
 
-       end: '\\(|=>',
 
-       contains: [
 
-         hljs.inherit(hljs.TITLE_MODE, {
 
-           begin: LASSO_IDENT_RE + '(=(?!>))?|[-+*/%](?!>)'
 
-         })
 
-       ]
 
-     }
 
-   ];
 
-   return {
 
-     name: 'Lasso',
 
-     aliases: [
 
-       'ls',
 
-       'lassoscript'
 
-     ],
 
-     case_insensitive: true,
 
-     keywords: LASSO_KEYWORDS,
 
-     contains: [
 
-       {
 
-         className: 'meta',
 
-         begin: LASSO_CLOSE_RE,
 
-         relevance: 0,
 
-         starts: { // markup
 
-           end: '\\[|' + LASSO_ANGLE_RE,
 
-           returnEnd: true,
 
-           relevance: 0,
 
-           contains: [HTML_COMMENT]
 
-         }
 
-       },
 
-       LASSO_NOPROCESS,
 
-       LASSO_START,
 
-       {
 
-         className: 'meta',
 
-         begin: '\\[no_square_brackets',
 
-         starts: {
 
-           end: '\\[/no_square_brackets\\]', // not implemented in the language
 
-           keywords: LASSO_KEYWORDS,
 
-           contains: [
 
-             {
 
-               className: 'meta',
 
-               begin: LASSO_CLOSE_RE,
 
-               relevance: 0,
 
-               starts: {
 
-                 end: '\\[noprocess\\]|' + LASSO_ANGLE_RE,
 
-                 returnEnd: true,
 
-                 contains: [HTML_COMMENT]
 
-               }
 
-             },
 
-             LASSO_NOPROCESS,
 
-             LASSO_START
 
-           ].concat(LASSO_CODE)
 
-         }
 
-       },
 
-       {
 
-         className: 'meta',
 
-         begin: '\\[',
 
-         relevance: 0
 
-       },
 
-       {
 
-         className: 'meta',
 
-         begin: '^#!',
 
-         end: 'lasso9$',
 
-         relevance: 10
 
-       }
 
-     ].concat(LASSO_CODE)
 
-   };
 
- }
 
- module.exports = lasso;
 
 
  |