mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2024-12-12 18:01:02 +01:00
113 lines
4.8 KiB
JavaScript
113 lines
4.8 KiB
JavaScript
|
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||
|
// Distributed under an MIT license: http://codemirror.net/LICENSE
|
||
|
|
||
|
(function(mod) {
|
||
|
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||
|
mod(require("../../lib/codemirror"));
|
||
|
else if (typeof define == "function" && define.amd) // AMD
|
||
|
define(["../../lib/codemirror"], mod);
|
||
|
else // Plain browser env
|
||
|
mod(CodeMirror);
|
||
|
})(function(CodeMirror) {
|
||
|
CodeMirror.defineSimpleMode('instantview', {
|
||
|
start: [
|
||
|
// string
|
||
|
{regex: /"(?:[^\\"]|\\.)*?(?:"|$)/, token: 'string'},
|
||
|
{regex: /("(?:[^\\"]|\\.)*?)(\\)(\s*$)/,
|
||
|
token: ['string', 'hr', null], push: 'string'},
|
||
|
// condition
|
||
|
{regex: /(\s*)([?!](?:domain|domain_not|path|path_not)\b)((?:[^\\#]|\\.)*)/,
|
||
|
token: [null, 'def', null], sol: true},
|
||
|
{regex: /(\s*)([?!](?:exists|not_exists|false|true|condition)\b)/,
|
||
|
token: [null, 'def'], sol: true},
|
||
|
// include
|
||
|
{regex: /(\s*)(\+\s*[a-z0-9.-]+)/,
|
||
|
token: [null, 'variable-3'], sol: true},
|
||
|
// replace_tag alias
|
||
|
{regex: /(\s*)(<[a-z0-9-]+>)/,
|
||
|
token: [null, 'tag'], sol: true},
|
||
|
// function with arguments
|
||
|
{regex: /(\s*)(@(?:debug|remove|match|replace|urlencode|urldecode|htmlencode|htmldecode|datetime|set_attr|set_attrs|style_to_attrs|background_to_image|json_to_xml|html_to_dom|prepend_to|append_to|before_el|after_el|prepend|append|before|after|replace_tag|wrap|wrap_inner|clone|detach|split_parent|pre|combine|inline|load|unsupported|simplify|if|if_not|map|repeat|while|while_not|function)\b)/,
|
||
|
token: [null, 'builtin'], sol: true},
|
||
|
// option
|
||
|
{regex: /(\s*)(~[a-z][a-z0-9_]*)/i,
|
||
|
token: [null, 'keyword'], sol: true},
|
||
|
// variable
|
||
|
{regex: /(\s*)(\$[a-z][a-z0-9_]*)(\??\+?)/i,
|
||
|
token: [null, 'variable-2', 'positive'], sol: true},
|
||
|
{regex: /\$(?:\$|@|[a-z][a-z0-9_]*)/i, token: 'variable-2'},
|
||
|
// property
|
||
|
{regex: /(\s*)([a-z][a-z0-9_]*)(!{0,2})/i,
|
||
|
token: [null, 'variable-2', 'positive'], sol: true},
|
||
|
// comment
|
||
|
{regex: /(#.*)(\\)(\s*$)/, token: ['comment', 'hr', null], push: 'comment'},
|
||
|
{regex: /#.*/, token: 'comment'},
|
||
|
// tag in xpath
|
||
|
{regex: /(\/)([a-z0-9-]+\:\:)?([a-z0-9_-]+|\*)/i,
|
||
|
token: [null, null, 'tag-2']},
|
||
|
// tag
|
||
|
{regex: /<[a-z0-9_-]+>/i, token: 'tag'},
|
||
|
// attribute
|
||
|
{regex: /@[a-z0-9-]+/, token: 'attribute'},
|
||
|
// index
|
||
|
{regex: /last\(\)|[-+]?(?:\.\d+|\d+\.?\d*)/i, token: 'number'},
|
||
|
// null
|
||
|
{regex: /null/, token: 'atom'},
|
||
|
// simple word
|
||
|
{regex: /\w[\w-]*/, token: 'variable'},
|
||
|
// continue line
|
||
|
{regex: /()(\\)(\s*$)/, token: [null, 'hr', null], next: 'next'}
|
||
|
],
|
||
|
next: [
|
||
|
// string
|
||
|
{regex: /"(?:[^\\"]|\\.)*?"$/, token: 'string', next: 'start'},
|
||
|
{regex: /"(?:[^\\"]|\\.)*?"/, token: 'string'},
|
||
|
{regex: /"(?:[^\\"]|\\.)*?$/, token: 'string', next: 'start'},
|
||
|
{regex: /("(?:[^\\"]|\\.)*?)(\\)(\s*$)/,
|
||
|
token: ['string', 'hr', null], push: 'string'},
|
||
|
// variable
|
||
|
{regex: /\$(?:\$|@|[a-z][a-z0-9_]*$)/i, token: 'variable-2', next: 'start'},
|
||
|
{regex: /\$(?:\$|@|[a-z][a-z0-9_]*)/i, token: 'variable-2'},
|
||
|
// comment
|
||
|
{regex: /(#.*)(\\)(\s*$)/, token: ['comment', 'hr', null], push: 'comment'},
|
||
|
{regex: /#.*$/, token: 'comment', next: 'start'},
|
||
|
// tag in xpath
|
||
|
{regex: /(\/)([a-z0-9-]+\:\:)?([a-z0-9_-]+|\*)$/i,
|
||
|
token: [null, null, 'tag-2'], next: 'start'},
|
||
|
{regex: /(\/)([a-z0-9-]+\:\:)?([a-z0-9_-]+|\*)/i,
|
||
|
token: [null, null, 'tag-2']},
|
||
|
// tag
|
||
|
{regex: /<[a-z0-9_-]+>$/i, token: 'tag', next: 'start'},
|
||
|
{regex: /<[a-z0-9_-]+>/i, token: 'tag'},
|
||
|
// attribute
|
||
|
{regex: /@[a-z0-9-]+$/, token: 'attribute', next: 'start'},
|
||
|
{regex: /@[a-z0-9-]+/, token: 'attribute'},
|
||
|
// index
|
||
|
{regex: /last\(\)|[-+]?(?:\.\d+|\d+\.?\d*)$/i, token: 'number', next: 'start'},
|
||
|
{regex: /last\(\)|[-+]?(?:\.\d+|\d+\.?\d*)/i, token: 'number'},
|
||
|
// null
|
||
|
{regex: /null/, token: 'atom'},
|
||
|
// simple word
|
||
|
{regex: /\w[\w-]*$/, token: 'variable', next: 'start'},
|
||
|
{regex: /\w[\w-]*/, token: 'variable'},
|
||
|
// continue line
|
||
|
{regex: /()(\\)(\s*$)/, token: [null, 'hr', null]},
|
||
|
// end of line
|
||
|
{regex: /[^\\]\s*$/, token: null, next: 'start'},
|
||
|
],
|
||
|
string: [
|
||
|
{regex: /(?:[^\\"]|\\.)*?"$/, token: 'string', next: 'start'},
|
||
|
{regex: /(?:[^\\"]|\\.)*?"/, token: 'string', pop: true},
|
||
|
{regex: /(?:[^\\"]|\\.)*?$/, token: 'string', next: 'start'},
|
||
|
{regex: /((?:[^\\"]|\\.)*?)(\\)(\s*$)/, token: ['string', 'hr', null]}
|
||
|
],
|
||
|
comment: [
|
||
|
{regex: /(.*)(\\)(\s*$)/, token: ['comment', 'hr', null]},
|
||
|
{regex: /.*$/, token: 'comment', next: 'start'}
|
||
|
],
|
||
|
meta: {
|
||
|
dontIndentStates: ['comment'],
|
||
|
lineComment: '#'
|
||
|
}
|
||
|
});
|
||
|
});
|