khulnasoft commited on
Commit
9b3ece2
1 Parent(s): da283fa

Upload 5 files

Browse files
jupyterlab-codeql-highlight/jupyterlab-codeql-highlight/__init__.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ # Running `npm run build` will create static resources in the static
2
+ # directory of this Python package (and create that directory if necessary).
3
+
4
+
5
+ def _jupyter_labextension_paths():
6
+ return [{
7
+ 'name': 'jupyterlab-codeql-highlight',
8
+ 'src': 'static',
9
+ }]
jupyterlab-codeql-highlight/lib/codeql.js ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: https://codemirror.net/LICENSE
3
+ import * as CodeMirror from 'codemirror';
4
+ import 'codemirror/addon/mode/simple';
5
+
6
+ // "use strict";
7
+
8
+ // from where select predicate in as order by asc desc module result this super
9
+ // abstract cached external final library noopt private deprecated override query pragma language bindingset noinline nomagic monotonicAggregates transient
10
+ // not and or implies exists forall forex any none
11
+ // if then else
12
+ // int float string boolean date
13
+ // import
14
+ // class extends instanceof
15
+ // avg concat count max min rank strictconcat strictcount strictsum sum
16
+ // false true
17
+ var builtins_base = [
18
+ "from", "where", "select", "predicate", "in", "as", "order", "by", "asc", "desc", "module", "result", "this", "super",
19
+ "abstract", "cached", "external", "final", "library", "noopt", "private", "deprecated", "override", "query", "pragma", "language", "bindingset", "noinline", "nomagic", "monotonicAggregates", "transient",
20
+ "not", "and", "or", "implies", "exists", "forall", "forex", "any", "none",
21
+ "if", "then", "else",
22
+ "int", "float", "string", "boolean", "date",
23
+ "import",
24
+ "class", "extends", "instanceof",
25
+ "avg", "concat", "count", "max", "min", "rank", "strictconcat", "strictcount", "strictsum", "sum",
26
+ "false", "true"
27
+ ];
28
+ var builtins_str = '(' + builtins_base.join('|') + ')\\b';
29
+
30
+ var builtins_functions = [];
31
+ var builtins_fun_str = '(' + builtins_functions.join('|') + ')(?=\\()';
32
+
33
+ CodeMirror.defineSimpleMode("codeql", {
34
+ // The start state contains the rules that are intially used
35
+ start: [
36
+ // Comments
37
+ { regex: /\/\/\/?.*$/, token: 'comment', sol: true },
38
+ { regex: /(\s)\/\/\/?.*$/, token: 'comment' },
39
+ { regex: /\s*\*.*$/, token: 'comment', sol: true },
40
+ { regex: /\/\*/, token: 'comment', push: 'comments_block' },
41
+
42
+ // Strings
43
+ { regex: /"/, token: 'string', push: 'string_regular' },
44
+ { regex: /`"/, token: 'string', push: 'string_compound' },
45
+
46
+ // Macros
47
+ { regex: /`/, token: 'variable-2', push: 'macro_local' },
48
+ { regex: /\$/, token: 'variable-2', push: 'macro_global' },
49
+
50
+ // Decimal Numbers
51
+ {
52
+ regex: /\b[+-]?(?:[0-9]+(?:\.[0-9]+)?|\.[0-9]+|\.)(?:[eE][+-]?[0-9]+)?[i]?\b/,
53
+ token: 'number'
54
+ },
55
+
56
+ // Keywords
57
+ // There are two separate dictionaries because the `\b` at the beginning of the regex seemed not to work. So instead, I either match the preceding space before the keyword or require the keyword to be at beginning of the string. I think this necessitates two different strings.
58
+ { regex: new RegExp('\\s' + builtins_str), token: 'keyword' },
59
+ { regex: new RegExp(builtins_str), token: 'keyword', sol: true },
60
+
61
+ { regex: new RegExp('\\s' + builtins_fun_str), token: 'def' },
62
+ { regex: /\s\w+(?=\()/, token: 'def' },
63
+
64
+ { regex: /[\{]/, indent: true },
65
+ { regex: /[\}]/, dedent: true },
66
+
67
+ { regex: /-|==|<=|>=|<|>|&|!=/, token: 'operator' },
68
+ { regex: /\*|\+|\^|\/|!|~|=|~=/, token: 'operator' },
69
+ ],
70
+ comments_block: [
71
+ { regex: /\/\*/, token: 'comment', push: 'comments_block' },
72
+ // this ends and restarts a comment block. but need to catch this so
73
+ // that it doesn\'t start _another_ level of comment blocks
74
+ { regex: /\*\/\*/, token: 'comment' },
75
+ { regex: /(\*\/\s+\*(?!\/)[^\n]*)|(\*\/)/, token: 'comment', pop: true },
76
+ // Match anything else as a character inside the comment
77
+ { regex: /./, token: 'comment' },
78
+ ],
79
+
80
+ string_compound: [
81
+ { regex: /`"/, token: 'string', push: 'string_compound' },
82
+ { regex: /"'/, token: 'string', pop: true },
83
+ { regex: /`/, token: 'variable-2', push: 'macro_local' },
84
+ { regex: /\$/, token: 'variable-2', push: 'macro_global' },
85
+ { regex: /./, token: 'string' }
86
+ ],
87
+ string_regular: [
88
+ { regex: /"/, token: 'string', pop: true },
89
+ { regex: /`/, token: 'variable-2', push: 'macro_local' },
90
+ { regex: /\$/, token: 'variable-2', push: 'macro_global' },
91
+ { regex: /./, token: 'string' }
92
+ ],
93
+ macro_local: [
94
+ { regex: /`/, token: 'variable-2', push: 'macro_local' },
95
+ { regex: /'/, token: 'variable-2', pop: true },
96
+ { regex: /./, token: 'variable-2' },
97
+ ],
98
+ macro_global: [
99
+ { regex: /\}/, token: 'variable-2', pop: true },
100
+ { regex: /.(?=[^\w\{\}])/, token: 'variable-2', pop: true },
101
+ { regex: /./, token: 'variable-2' },
102
+ ],
103
+ meta: {
104
+ closeBrackets: { pairs: "()[]{}`'\"\"" },
105
+ dontIndentStates: ['comment'],
106
+ electricInput: /^\s*\}$/,
107
+ blockCommentStart: '/*',
108
+ blockCommentEnd: '*/',
109
+ lineComment: '//',
110
+ fold: 'brace'
111
+ }
112
+ });
113
+
114
+ CodeMirror.defineMIME('text/x-codeql', 'codeql');
115
+ CodeMirror.defineMIME('text/codeql', 'codeql');
116
+
117
+ // When I paste this file in Jupyter, it won't work unless I include the
118
+ // following code, but when I leave this as a separate module, it won't work and
119
+ // raises an error.
120
+ CodeMirror.modeInfo.push({
121
+ ext: ['do', 'ado'],
122
+ mime: "text/x-codeql",
123
+ mode: 'codeql',
124
+ name: 'CodeQL'
125
+ });
jupyterlab-codeql-highlight/lib/plugin.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import './codeql'
2
+
3
+ export default [{
4
+ id: 'jupyterlab-codeql-highlight',
5
+ autoStart: true,
6
+ activate: function(app) {
7
+ console.log('JupyterLab `jupyterlab-codeql-highlight` extension is activated!');
8
+ console.log(app.commands);
9
+ registerStataFileType(app);
10
+ }
11
+ }];
12
+
13
+ function registerStataFileType(app) {
14
+ app.docRegistry.addFileType({
15
+ name: 'codeql',
16
+ displayName: 'CodeQL',
17
+ extensions: ['ql', 'qll'],
18
+ mimeTypes: ['text/x-codeql'],
19
+ });
20
+ }
jupyterlab-codeql-highlight/package-lock.json ADDED
The diff for this file is too large to render. See raw diff
 
jupyterlab-codeql-highlight/package.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "jupyterlab-codeql-highlight",
3
+ "version": "0.0.1",
4
+ "description": "Jupyterlab extension to highlight CodeQL syntax",
5
+ "author": "Alvaro Munoz",
6
+ "main": "lib/plugin.js",
7
+ "keywords": [
8
+ "jupyter",
9
+ "jupyterlab",
10
+ "jupyterlab-extension"
11
+ ],
12
+ "license": "MIT",
13
+ "repository": {
14
+ "url": "[email protected]:github/jupyterlab-codeql-highlight.git",
15
+ "type": "git"
16
+ },
17
+ "jupyterlab": {
18
+ "extension": true
19
+ },
20
+ "scripts": {},
21
+ "dependencies": {
22
+ "@jupyterlab/codemirror": "*"
23
+ },
24
+ "devDependencies": {}
25
+ }