UNPKG

refractor

Version:

Lightweight, robust, elegant virtual syntax highlighting using Prism

51 lines (49 loc) 1.47 kB
// @ts-nocheck /** * @import {Refractor} from '../lib/core.js' */ import refractorClike from './clike.js' firestoreSecurityRules.displayName = 'firestore-security-rules' firestoreSecurityRules.aliases = [] /** @param {Refractor} Prism */ export default function firestoreSecurityRules(Prism) { Prism.register(refractorClike) Prism.languages['firestore-security-rules'] = Prism.languages.extend( 'clike', { comment: /\/\/.*/, keyword: /\b(?:allow|function|if|match|null|return|rules_version|service)\b/, operator: /&&|\|\||[<>!=]=?|[-+*/%]|\b(?:in|is)\b/ } ) delete Prism.languages['firestore-security-rules']['class-name'] Prism.languages.insertBefore('firestore-security-rules', 'keyword', { path: { pattern: /(^|[\s(),])(?:\/(?:[\w\xA0-\uFFFF]+|\{[\w\xA0-\uFFFF]+(?:=\*\*)?\}|\$\([\w\xA0-\uFFFF.]+\)))+/, lookbehind: true, greedy: true, inside: { variable: { pattern: /\{[\w\xA0-\uFFFF]+(?:=\*\*)?\}|\$\([\w\xA0-\uFFFF.]+\)/, inside: { operator: /=/, keyword: /\*\*/, punctuation: /[.$(){}]/ } }, punctuation: /\// } }, method: { // to make the pattern shorter, the actual method names are omitted pattern: /(\ballow\s+)[a-z]+(?:\s*,\s*[a-z]+)*(?=\s*[:;])/, lookbehind: true, alias: 'builtin', inside: { punctuation: /,/ } } }) }