1 | Prism.languages.treeview = {
|
2 | 'treeview-part': {
|
3 | pattern: /^.+/m,
|
4 | inside: {
|
5 | 'entry-line': [
|
6 | {
|
7 | pattern: /\|-- |├── /,
|
8 | alias: 'line-h'
|
9 | },
|
10 | {
|
11 | pattern: /\| |│ /,
|
12 | alias: 'line-v'
|
13 | },
|
14 | {
|
15 | pattern: /`-- |└── /,
|
16 | alias: 'line-v-last'
|
17 | },
|
18 | {
|
19 | pattern: / {4}/,
|
20 | alias: 'line-v-gap'
|
21 | }
|
22 | ],
|
23 | 'entry-name': {
|
24 | pattern: /.*\S.*/,
|
25 | inside: {
|
26 |
|
27 | 'operator': / -> /,
|
28 | }
|
29 | }
|
30 | }
|
31 | }
|
32 | };
|
33 |
|
34 | Prism.hooks.add('wrap', function (env) {
|
35 | if (env.language === 'treeview' && env.type === 'entry-name') {
|
36 | var classes = env.classes;
|
37 |
|
38 | var folderPattern = /(^|[^\\])\/\s*$/;
|
39 | if (folderPattern.test(env.content)) {
|
40 |
|
41 |
|
42 |
|
43 | env.content = env.content.replace(folderPattern, '$1');
|
44 | classes.push('dir');
|
45 | } else {
|
46 |
|
47 |
|
48 |
|
49 | env.content = env.content.replace(/(^|[^\\])[=*|]\s*$/, '$1');
|
50 |
|
51 | var parts = env.content.toLowerCase().replace(/\s+/g, '').split('.');
|
52 | while (parts.length > 1) {
|
53 | parts.shift();
|
54 |
|
55 | classes.push('ext-' + parts.join('-'));
|
56 | }
|
57 | }
|
58 |
|
59 | if (env.content[0] === '.') {
|
60 | classes.push('dotfile');
|
61 | }
|
62 | }
|
63 | });
|