summaryrefslogtreecommitdiffstats
path: root/public/prism/prism-mongodb.js
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2021-12-30 19:47:21 +0100
committerArmand Philippot <git@armandphilippot.com>2021-12-30 19:47:21 +0100
commita98b5ea6fe8e8cc98a55e0fd793e6e8660ea31c1 (patch)
tree542810ab5aef99150db228bb54fd58303dcb31c7 /public/prism/prism-mongodb.js
parentab355897a12b7bda1089a44de326d41455a0f7a3 (diff)
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-mongodb.js')
-rw-r--r--public/prism/prism-mongodb.js295
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);