xref: /expo/docs/components/base/languages/ini.ts (revision 0d3418f0)
1export function installIni(Prism: any) {
2  // https://github.com/PrismJS/prism/blob/master/components/prism-ini.js
3  Prism.languages.ini = {
4    comment: {
5      pattern: /(^[ \f\t\v]*)[#;][^\n\r]*/m,
6      lookbehind: true,
7    },
8    header: {
9      pattern: /(^[ \f\t\v]*)\[[^\n\r\]]*\]?/m,
10      lookbehind: true,
11      inside: {
12        'section-name': {
13          pattern: /(^\[[ \f\t\v]*)[^ \f\t\v\]]+(?:[ \f\t\v]+[^ \f\t\v\]]+)*/,
14          lookbehind: true,
15          alias: 'selector',
16        },
17        punctuation: /\[|\]/,
18      },
19    },
20    key: {
21      pattern: /(^[ \f\t\v]*)[^ \f\n\r\t\v=]+(?:[ \f\t\v]+[^ \f\n\r\t\v=]+)*(?=[ \f\t\v]*=)/m,
22      lookbehind: true,
23      alias: 'attr-name',
24    },
25    value: {
26      pattern: /(=[ \f\t\v]*)[^ \f\n\r\t\v]+(?:[ \f\t\v]+[^ \f\n\r\t\v]+)*/,
27      lookbehind: true,
28      alias: 'attr-value',
29      inside: {
30        'inner-value': {
31          pattern: /^("|').+(?=\1$)/,
32          lookbehind: true,
33        },
34      },
35    },
36    punctuation: /=/,
37  };
38}
39