diff options
| author | Armand Philippot <git@armandphilippot.com> | 2021-12-30 19:47:21 +0100 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2021-12-30 19:47:21 +0100 |
| commit | a98b5ea6fe8e8cc98a55e0fd793e6e8660ea31c1 (patch) | |
| tree | 542810ab5aef99150db228bb54fd58303dcb31c7 /public/prism/prism-mongodb.js | |
| parent | ab355897a12b7bda1089a44de326d41455a0f7a3 (diff) | |
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-mongodb.js')
| -rw-r--r-- | public/prism/prism-mongodb.js | 295 |
1 files changed, 295 insertions, 0 deletions
diff --git a/public/prism/prism-mongodb.js b/public/prism/prism-mongodb.js new file mode 100644 index 0000000..22bac3e --- /dev/null +++ b/public/prism/prism-mongodb.js @@ -0,0 +1,295 @@ +(function (Prism) { + var operators = [ + // query and projection + '$eq', + '$gt', + '$gte', + '$in', + '$lt', + '$lte', + '$ne', + '$nin', + '$and', + '$not', + '$nor', + '$or', + '$exists', + '$type', + '$expr', + '$jsonSchema', + '$mod', + '$regex', + '$text', + '$where', + '$geoIntersects', + '$geoWithin', + '$near', + '$nearSphere', + '$all', + '$elemMatch', + '$size', + '$bitsAllClear', + '$bitsAllSet', + '$bitsAnyClear', + '$bitsAnySet', + '$comment', + '$elemMatch', + '$meta', + '$slice', + + // update + '$currentDate', + '$inc', + '$min', + '$max', + '$mul', + '$rename', + '$set', + '$setOnInsert', + '$unset', + '$addToSet', + '$pop', + '$pull', + '$push', + '$pullAll', + '$each', + '$position', + '$slice', + '$sort', + '$bit', + + // aggregation pipeline stages + '$addFields', + '$bucket', + '$bucketAuto', + '$collStats', + '$count', + '$currentOp', + '$facet', + '$geoNear', + '$graphLookup', + '$group', + '$indexStats', + '$limit', + '$listLocalSessions', + '$listSessions', + '$lookup', + '$match', + '$merge', + '$out', + '$planCacheStats', + '$project', + '$redact', + '$replaceRoot', + '$replaceWith', + '$sample', + '$set', + '$skip', + '$sort', + '$sortByCount', + '$unionWith', + '$unset', + '$unwind', + + // aggregation pipeline operators + '$abs', + '$accumulator', + '$acos', + '$acosh', + '$add', + '$addToSet', + '$allElementsTrue', + '$and', + '$anyElementTrue', + '$arrayElemAt', + '$arrayToObject', + '$asin', + '$asinh', + '$atan', + '$atan2', + '$atanh', + '$avg', + '$binarySize', + '$bsonSize', + '$ceil', + '$cmp', + '$concat', + '$concatArrays', + '$cond', + '$convert', + '$cos', + '$dateFromParts', + '$dateToParts', + '$dateFromString', + '$dateToString', + '$dayOfMonth', + '$dayOfWeek', + '$dayOfYear', + '$degreesToRadians', + '$divide', + '$eq', + '$exp', + '$filter', + '$first', + '$floor', + '$function', + '$gt', + '$gte', + '$hour', + '$ifNull', + '$in', + '$indexOfArray', + '$indexOfBytes', + '$indexOfCP', + '$isArray', + '$isNumber', + '$isoDayOfWeek', + '$isoWeek', + '$isoWeekYear', + '$last', + '$last', + '$let', + '$literal', + '$ln', + '$log', + '$log10', + '$lt', + '$lte', + '$ltrim', + '$map', + '$max', + '$mergeObjects', + '$meta', + '$min', + '$millisecond', + '$minute', + '$mod', + '$month', + '$multiply', + '$ne', + '$not', + '$objectToArray', + '$or', + '$pow', + '$push', + '$radiansToDegrees', + '$range', + '$reduce', + '$regexFind', + '$regexFindAll', + '$regexMatch', + '$replaceOne', + '$replaceAll', + '$reverseArray', + '$round', + '$rtrim', + '$second', + '$setDifference', + '$setEquals', + '$setIntersection', + '$setIsSubset', + '$setUnion', + '$size', + '$sin', + '$slice', + '$split', + '$sqrt', + '$stdDevPop', + '$stdDevSamp', + '$strcasecmp', + '$strLenBytes', + '$strLenCP', + '$substr', + '$substrBytes', + '$substrCP', + '$subtract', + '$sum', + '$switch', + '$tan', + '$toBool', + '$toDate', + '$toDecimal', + '$toDouble', + '$toInt', + '$toLong', + '$toObjectId', + '$toString', + '$toLower', + '$toUpper', + '$trim', + '$trunc', + '$type', + '$week', + '$year', + '$zip', + + // aggregation pipeline query modifiers + '$comment', + '$explain', + '$hint', + '$max', + '$maxTimeMS', + '$min', + '$orderby', + '$query', + '$returnKey', + '$showDiskLoc', + '$natural', + ]; + + var builtinFunctions = [ + 'ObjectId', + 'Code', + 'BinData', + 'DBRef', + 'Timestamp', + 'NumberLong', + 'NumberDecimal', + 'MaxKey', + 'MinKey', + 'RegExp', + 'ISODate', + 'UUID', + ]; + + operators = operators.map(function (operator) { + return operator.replace('$', '\\$'); + }); + + var operatorsSource = '(?:' + operators.join('|') + ')\\b'; + + Prism.languages.mongodb = Prism.languages.extend('javascript', {}); + + Prism.languages.insertBefore('mongodb', 'string', { + property: { + pattern: + /(?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)(?=\s*:)/, + greedy: true, + inside: { + keyword: RegExp('^([\'"])?' + operatorsSource + '(?:\\1)?$'), + }, + }, + }); + + Prism.languages.mongodb.string.inside = { + url: { + // url pattern + pattern: + /https?:\/\/[-\w@:%.+~#=]{1,256}\.[a-z0-9()]{1,6}\b[-\w()@:%+.~#?&/=]*/i, + greedy: true, + }, + entity: { + // ipv4 + pattern: + /\b(?:(?:[01]?\d\d?|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d\d?|2[0-4]\d|25[0-5])\b/, + greedy: true, + }, + }; + + Prism.languages.insertBefore('mongodb', 'constant', { + builtin: { + pattern: RegExp('\\b(?:' + builtinFunctions.join('|') + ')\\b'), + alias: 'keyword', + }, + }); +})(Prism); |
