123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- (function (Prism) {
- var interpolation = /\\\((?:[^()]|\([^()]*\))*\)/.source;
- var string = RegExp(/(^|[^\\])"(?:[^"\r\n\\]|\\[^\r\n(]|__)*"/.source.replace(/__/g, function () { return interpolation; }));
- var stringInterpolation = {
- 'interpolation': {
- pattern: RegExp(/((?:^|[^\\])(?:\\{2})*)/.source + interpolation),
- lookbehind: true,
- inside: {
- 'content': {
- pattern: /^(\\\()[\s\S]+(?=\)$)/,
- lookbehind: true,
- inside: null // see below
- },
- 'punctuation': /^\\\(|\)$/
- }
- }
- };
- var jq = Prism.languages.jq = {
- 'comment': /#.*/,
- 'property': {
- pattern: RegExp(string.source + /(?=\s*:(?!:))/.source),
- lookbehind: true,
- greedy: true,
- inside: stringInterpolation
- },
- 'string': {
- pattern: string,
- lookbehind: true,
- greedy: true,
- inside: stringInterpolation
- },
- 'function': {
- pattern: /(\bdef\s+)[a-z_]\w+/i,
- lookbehind: true
- },
- 'variable': /\B\$\w+/,
- 'property-literal': {
- pattern: /\b[a-z_]\w*(?=\s*:(?!:))/i,
- alias: 'property'
- },
- 'keyword': /\b(?:as|break|catch|def|elif|else|end|foreach|if|import|include|label|module|modulemeta|null|reduce|then|try|while)\b/,
- 'boolean': /\b(?:false|true)\b/,
- 'number': /(?:\b\d+\.|\B\.)?\b\d+(?:[eE][+-]?\d+)?\b/,
- 'operator': [
- {
- pattern: /\|=?/,
- alias: 'pipe'
- },
- /\.\.|[!=<>]?=|\?\/\/|\/\/=?|[-+*/%]=?|[<>?]|\b(?:and|not|or)\b/
- ],
- 'c-style-function': {
- pattern: /\b[a-z_]\w*(?=\s*\()/i,
- alias: 'function'
- },
- 'punctuation': /::|[()\[\]{},:;]|\.(?=\s*[\[\w$])/,
- 'dot': {
- pattern: /\./,
- alias: 'important'
- }
- };
- stringInterpolation.interpolation.inside.content.inside = jq;
- }(Prism));
|