@dodona/papyros 2.1.1 → 2.2.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.js +3 -0
- package/dist/App.js.map +1 -1
- package/dist/CodeRunner.js +3 -3
- package/dist/Papyros.css +22 -0
- package/dist/Translations.d.ts +19 -0
- package/dist/Translations.js +14 -0
- package/dist/Translations.js.map +1 -1
- package/dist/editor/CodeEditor.d.ts +4 -0
- package/dist/editor/CodeEditor.js +17 -0
- package/dist/editor/CodeEditor.js.map +1 -1
- package/dist/editor/TestCodeExtension.d.ts +20 -0
- package/dist/editor/TestCodeExtension.js +142 -0
- package/dist/editor/TestCodeExtension.js.map +1 -0
- package/dist/workers/python/python_package.tar.gz.load_by_url +0 -0
- package/package.json +2 -1
package/dist/App.js
CHANGED
|
@@ -70,6 +70,9 @@ function startPapyros() {
|
|
|
70
70
|
setUpEditor(handler.batchEditor, LOCAL_STORAGE_KEYS.input);
|
|
71
71
|
}
|
|
72
72
|
yield papyros.launch();
|
|
73
|
+
// add test code
|
|
74
|
+
const testCode = "print('a')\nprint(\"Hello World!\")\nprint('b')";
|
|
75
|
+
papyros.codeRunner.editor.testCode = testCode;
|
|
73
76
|
});
|
|
74
77
|
}
|
|
75
78
|
startPapyros();
|
package/dist/App.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"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"}
|
package/dist/CodeRunner.js
CHANGED
|
@@ -69,7 +69,7 @@ export class CodeRunner extends Renderable {
|
|
|
69
69
|
this.programmingLanguage = programmingLanguage;
|
|
70
70
|
this.editor = new CodeEditor(() => {
|
|
71
71
|
if (this.state === RunState.Ready) {
|
|
72
|
-
this.runCode(this.editor.
|
|
72
|
+
this.runCode(this.editor.getCode());
|
|
73
73
|
}
|
|
74
74
|
});
|
|
75
75
|
this.inputManager = new InputManager((input) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -113,7 +113,7 @@ export class CodeRunner extends Renderable {
|
|
|
113
113
|
buttonText: t(`Papyros.run_modes.${mode}`),
|
|
114
114
|
classNames,
|
|
115
115
|
icon: MODE_ICONS[mode]
|
|
116
|
-
}, () => this.runCode(this.editor.
|
|
116
|
+
}, () => this.runCode(this.editor.getCode(), mode));
|
|
117
117
|
}
|
|
118
118
|
/**
|
|
119
119
|
* Start the backend to enable running code
|
|
@@ -133,7 +133,7 @@ export class CodeRunner extends Renderable {
|
|
|
133
133
|
this.outputManager.onOverflow(null);
|
|
134
134
|
}));
|
|
135
135
|
this.editor.setLintingSource((view) => __awaiter(this, void 0, void 0, function* () {
|
|
136
|
-
const workerDiagnostics = yield workerProxy.lintCode(this.editor.
|
|
136
|
+
const workerDiagnostics = yield workerProxy.lintCode(this.editor.getCode());
|
|
137
137
|
return workerDiagnostics.map(d => {
|
|
138
138
|
const fromline = view.state.doc.line(d.lineNr);
|
|
139
139
|
const toLine = view.state.doc.line(d.endLineNr);
|
package/dist/Papyros.css
CHANGED
|
@@ -504,6 +504,11 @@ Removes the default spacing and border for appropriate elements.
|
|
|
504
504
|
vertical-align: middle;
|
|
505
505
|
}
|
|
506
506
|
|
|
507
|
+
.papyros-button.btn-icon {
|
|
508
|
+
padding: 2px 8px;
|
|
509
|
+
min-width: 20px;
|
|
510
|
+
}
|
|
511
|
+
|
|
507
512
|
.cm-gutter.cm-debugline-gutter {
|
|
508
513
|
display: none !important;
|
|
509
514
|
}
|
|
@@ -512,6 +517,23 @@ Removes the default spacing and border for appropriate elements.
|
|
|
512
517
|
display: flex !important;
|
|
513
518
|
}
|
|
514
519
|
|
|
520
|
+
.papyros-test-code {
|
|
521
|
+
background-color: rgba(143, 182, 130, 0.1);
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
.papyros-test-code.cm-activeLine {
|
|
525
|
+
background-color: rgba(143, 182, 130, 0.1)
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
.papyros-test-code-widget {
|
|
529
|
+
background-color: rgba(143, 182, 130, 0.1);
|
|
530
|
+
color: #7d8799;
|
|
531
|
+
display: flex;
|
|
532
|
+
justify-content: space-between;
|
|
533
|
+
align-items: center;
|
|
534
|
+
padding: 0 2px 0 6px;
|
|
535
|
+
}
|
|
536
|
+
|
|
515
537
|
.placeholder\:_tw-text-placeholder-grey::-moz-placeholder {
|
|
516
538
|
--tw-text-opacity: 1 !important;
|
|
517
539
|
color: rgb(136 136 136 / var(--tw-text-opacity)) !important;
|
package/dist/Translations.d.ts
CHANGED
|
@@ -72,6 +72,13 @@ declare namespace ENGLISH_TRANSLATION {
|
|
|
72
72
|
let text_2: string;
|
|
73
73
|
}
|
|
74
74
|
export { _debugger as debugger };
|
|
75
|
+
export namespace editor {
|
|
76
|
+
namespace test_code {
|
|
77
|
+
let description: string;
|
|
78
|
+
let edit: string;
|
|
79
|
+
let remove: string;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
75
82
|
}
|
|
76
83
|
declare namespace DUTCH_TRANSLATION {
|
|
77
84
|
let Papyros_1: string;
|
|
@@ -177,6 +184,18 @@ declare namespace DUTCH_TRANSLATION {
|
|
|
177
184
|
export { text_2_1 as text_2 };
|
|
178
185
|
}
|
|
179
186
|
export { _debugger_1 as debugger };
|
|
187
|
+
export namespace editor_1 {
|
|
188
|
+
export namespace test_code_1 {
|
|
189
|
+
let description_1: string;
|
|
190
|
+
export { description_1 as description };
|
|
191
|
+
let edit_1: string;
|
|
192
|
+
export { edit_1 as edit };
|
|
193
|
+
let remove_1: string;
|
|
194
|
+
export { remove_1 as remove };
|
|
195
|
+
}
|
|
196
|
+
export { test_code_1 as test_code };
|
|
197
|
+
}
|
|
198
|
+
export { editor_1 as editor };
|
|
180
199
|
}
|
|
181
200
|
declare const ENGLISH_PHRASES: {
|
|
182
201
|
"Go to line": string;
|
package/dist/Translations.js
CHANGED
|
@@ -58,6 +58,13 @@ const ENGLISH_TRANSLATION = {
|
|
|
58
58
|
"title": "Drag the slider to walk through your code.",
|
|
59
59
|
"text_1": "This window shows how your program works step by step. Explore to see how your program builds and stores information.",
|
|
60
60
|
"text_2": "You can also use the %{previous} and %{next} buttons to go to the previous or next step. The %{first} and %{last} buttons can be used to directly jump to the first or last step respectively."
|
|
61
|
+
},
|
|
62
|
+
"editor": {
|
|
63
|
+
"test_code": {
|
|
64
|
+
"description": "This code is inserted by the testcase",
|
|
65
|
+
"edit": "Edit",
|
|
66
|
+
"remove": "Remove"
|
|
67
|
+
}
|
|
61
68
|
}
|
|
62
69
|
};
|
|
63
70
|
const DUTCH_TRANSLATION = {
|
|
@@ -116,6 +123,13 @@ const DUTCH_TRANSLATION = {
|
|
|
116
123
|
"title": "Verken je code stap voor stap",
|
|
117
124
|
"text_1": "Dit venster toont de werking van je programma in detail. Ontdek hoe je programma informatie opbouwt en bewaart.",
|
|
118
125
|
"text_2": "Gebruik de schuifbalk om door je code te wandelen. Je kan ook de %{previous} en %{next} knoppen gebruiken om naar de vorige of volgende stap te gaan. De %{first} en %{last} knoppen kunnen gebruikt worden om direct naar de eerste of laatste stap te gaan."
|
|
126
|
+
},
|
|
127
|
+
"editor": {
|
|
128
|
+
"test_code": {
|
|
129
|
+
"description": "Deze code werd ingevoegd door de testcase",
|
|
130
|
+
"edit": "Bewerk",
|
|
131
|
+
"remove": "Verwijder"
|
|
132
|
+
}
|
|
119
133
|
}
|
|
120
134
|
};
|
|
121
135
|
// Override some default English phrases to also use capitalized text
|
package/dist/Translations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Translations.js","sourceRoot":"","sources":["../src/Translations.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Translations.js","sourceRoot":"","sources":["../src/Translations.js"],"names":[],"mappings":";AAAA,4BAA4B;AAC5B,uDAAuD;AACvD,6EAA6E;AAE7E,MAAM,mBAAmB,GAAG;IACxB,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,MAAM;IACd,kBAAkB,EAAE,2EAA2E;IAC/F,OAAO,EAAE,OAAO;IAChB,mBAAmB,EAAE;QACjB,aAAa,EAAE,uCAAuC;QACtD,OAAO,EAAE,iDAAiD;YACtD,iDAAiD;KACxD;IACD,gBAAgB,EAAE,2EAA2E;IAC7F,QAAQ,EAAE,QAAQ;IAClB,oBAAoB,EAAE,2CAA2C;IACjE,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,4BAA4B;IACxC,aAAa,EAAE,kCAAkC;IACjD,QAAQ,EAAE;QACN,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,UAAU;QACtB,SAAS,EAAE,SAAS;QACpB,gBAAgB,EAAE,gBAAgB;QAClC,OAAO,EAAE,GAAG;KACf;IACD,sBAAsB,EAAE,sBAAsB;IAC9C,uBAAuB,EAAE;QACrB,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,YAAY;KAC7B;IACD,SAAS,EAAE;QACP,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,YAAY;KACrB;IACD,sBAAsB,EAAE;QACpB,aAAa,EAAE,4BAA4B;QAC3C,OAAO,EAAE,uBAAuB;KACnC;IACD,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,WAAW;IACxB,iBAAiB,EAAE,kDAAkD;IACrE,0BAA0B,EAAE,qCAAqC;IACjE,WAAW,EAAE,sCAAsC;IACnD,sBAAsB,EAAE,oCAAoC;IAC5D,cAAc,EAAE,gDAAgD;IAChE,SAAS,EAAE,sBAAsB;IACjC,WAAW,EAAE;QACT,SAAS,EAAE,cAAc;QACzB,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,KAAK;KACf;IACD,YAAY,EAAE,2CAA2C;IACzD,wBAAwB,EAAE,iEAAiE;IAC3F,UAAU,EAAE;QACR,OAAO,EAAE,4CAA4C;QACrD,QAAQ,EAAE,uHAAuH;QACjI,QAAQ,EAAE,gMAAgM;KAC7M;IACD,QAAQ,EAAE;QACN,WAAW,EAAE;YACT,aAAa,EAAE,uCAAuC;YACtD,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,QAAQ;SACrB;KACJ;CACJ,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACtB,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,MAAM;IACd,kBAAkB,EAAE,wFAAwF;IAC5G,OAAO,EAAE,QAAQ;IACjB,mBAAmB,EAAE;QACjB,aAAa,EAAE,iCAAiC;QAChD,OAAO,EAAE,4DAA4D;YACjE,+DAA+D;KACtE;IACD,gBAAgB,EAAE,4EAA4E;IAC9F,QAAQ,EAAE,SAAS;IACnB,oBAAoB,EAAE,mCAAmC;IACzD,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE;QACN,SAAS,EAAE,mBAAmB;QAC9B,UAAU,EAAE,iBAAiB;QAC7B,SAAS,EAAE,eAAe;QAC1B,gBAAgB,EAAE,2BAA2B;QAC7C,OAAO,EAAE,GAAG;KACf;IACD,UAAU,EAAE,8BAA8B;IAC1C,aAAa,EAAE,+BAA+B;IAC9C,sBAAsB,EAAE,iBAAiB;IACzC,uBAAuB,EAAE;QACrB,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,YAAY;KAC7B;IACD,SAAS,EAAE;QACP,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,YAAY;KACrB;IACD,sBAAsB,EAAE;QACpB,aAAa,EAAE,mCAAmC;QAClD,OAAO,EAAE,uBAAuB;KACnC;IACD,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,aAAa;IACzB,WAAW,EAAE,eAAe;IAC5B,iBAAiB,EAAE,oEAAoE;IACvF,0BAA0B,EAAE,2CAA2C;IACvE,WAAW,EAAE,mCAAmC;IAChD,sBAAsB,EAAE,wDAAwD;IAChF,cAAc,EAAE,+DAA+D;IAC/E,SAAS,EAAE,4CAA4C;IACvD,WAAW,EAAE;QACT,SAAS,EAAE,oBAAoB;QAC/B,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,WAAW;KACrB;IACD,YAAY,EAAE,yCAAyC;IACvD,wBAAwB,EAAE,uEAAuE;IACjG,UAAU,EAAE;QACR,OAAO,EAAE,+BAA+B;QACxC,QAAQ,EAAE,iHAAiH;QAC3H,QAAQ,EAAE,+PAA+P;KAC5Q;IACD,QAAQ,EAAE;QACN,WAAW,EAAE;YACT,aAAa,EAAE,2CAA2C;YAC1D,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,WAAW;SACxB;KACJ;CACJ,CAAC;AAEF,qEAAqE;AACrE,MAAM,eAAe,GAAG;IACpB,qBAAqB;IACrB,YAAY,EAAE,YAAY;IAC1B,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,MAAM;IACd,UAAU,EAAE,UAAU;IACtB,KAAK,EAAE,KAAK;IACZ,YAAY,EAAE,YAAY;IAC1B,SAAS,EAAE,SAAS;IACpB,aAAa,EAAE,aAAa;IAC5B,OAAO,EAAE,SAAS;CACrB,CAAA;AAED,MAAM,aAAa,GAAG;IAClB,mBAAmB;IACnB,mBAAmB,EAAE,kBAAkB;IACvC,mBAAmB;IACnB,cAAc,EAAE,mBAAmB;IACnC,gBAAgB,EAAE,oBAAoB;IACtC,IAAI,EAAE,KAAK;IACX,aAAa,EAAE,iBAAiB;IAChC,QAAQ,EAAE,YAAY;IACtB,WAAW,EAAE,iBAAiB;IAC9B,aAAa,EAAE,kBAAkB;IACjC,qBAAqB;IACrB,YAAY,EAAE,mBAAmB;IACjC,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,MAAM;IACb,YAAY,EAAE,qBAAqB;IACnC,SAAS,EAAE,WAAW;IACtB,aAAa,EAAE,iBAAiB;IAChC,OAAO,EAAE,SAAS;IAClB,eAAe,EAAE,sBAAsB;IACvC,SAAS,EAAE,UAAU;IACrB,mBAAmB;IACnB,aAAa,EAAE,WAAW;IAC1B,gBAAgB,EAAE,gBAAgB;CACnC,CAAA;AAEH,MAAM,YAAY,GAAG;IACjB,EAAE,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE;IACtC,EAAE,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE;CACvC,CAAC;AAEF,MAAM,wBAAwB,GAAG;IAC7B,EAAE,EAAE,eAAe;IACnB,EAAE,EAAE,aAAa;CACpB,CAAC;AACF,6CAA6C;AAC7C,MAAM,CAAC,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;AAC3C,MAAM,CAAC,OAAO,CAAC,wBAAwB,GAAG,wBAAwB,CAAC"}
|
|
@@ -12,6 +12,7 @@ export declare class CodeEditor extends CodeMirrorEditor {
|
|
|
12
12
|
static AUTOCOMPLETION: string;
|
|
13
13
|
static LINTING: string;
|
|
14
14
|
private debugLineGutter;
|
|
15
|
+
private testCodeExtension;
|
|
15
16
|
/**
|
|
16
17
|
* Construct a new CodeEditor
|
|
17
18
|
* @param {Function} onRunRequest Callback for when the user wants to run the code
|
|
@@ -19,6 +20,9 @@ export declare class CodeEditor extends CodeMirrorEditor {
|
|
|
19
20
|
* @param {number} indentLength The length in spaces for the indent unit
|
|
20
21
|
*/
|
|
21
22
|
constructor(onRunRequest: () => void, initialCode?: string, indentLength?: number);
|
|
23
|
+
set testCode(code: string);
|
|
24
|
+
getText(): string;
|
|
25
|
+
getCode(): string;
|
|
22
26
|
setDarkMode(darkMode: boolean): void;
|
|
23
27
|
/**
|
|
24
28
|
* @param {ProgrammingLanguage} language The language to use
|
|
@@ -16,6 +16,7 @@ import { darkTheme } from "./DarkTheme";
|
|
|
16
16
|
import { DebugLineGutter } from "./Gutters";
|
|
17
17
|
import { BackendManager } from "../BackendManager";
|
|
18
18
|
import { BackendEventType } from "../BackendEvent";
|
|
19
|
+
import { TestCodeExtension } from "./TestCodeExtension";
|
|
19
20
|
/**
|
|
20
21
|
* Component that provides useful features to users writing code
|
|
21
22
|
*/
|
|
@@ -61,6 +62,22 @@ export class CodeEditor extends CodeMirrorEditor {
|
|
|
61
62
|
const line = e.data.line;
|
|
62
63
|
this.debugLineGutter.markLine(this.editorView, line);
|
|
63
64
|
});
|
|
65
|
+
this.testCodeExtension = new TestCodeExtension(this.editorView);
|
|
66
|
+
this.addExtension(this.testCodeExtension.toExtension());
|
|
67
|
+
}
|
|
68
|
+
set testCode(code) {
|
|
69
|
+
this.testCodeExtension.testCode = code;
|
|
70
|
+
}
|
|
71
|
+
getText() {
|
|
72
|
+
if (this.testCodeExtension) {
|
|
73
|
+
return this.testCodeExtension.getNonTestCode();
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
return super.getText();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
getCode() {
|
|
80
|
+
return super.getText();
|
|
64
81
|
}
|
|
65
82
|
setDarkMode(darkMode) {
|
|
66
83
|
let styleExtensions = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEditor.js","sourceRoot":"","sources":["../../src/editor/CodeEditor.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"CodeEditor.js","sourceRoot":"","sources":["../../src/editor/CodeEditor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Extension } from "@codemirror/state";
|
|
2
|
+
import { EditorView } from "@codemirror/view";
|
|
3
|
+
export declare class TestCodeExtension {
|
|
4
|
+
private view;
|
|
5
|
+
private lines;
|
|
6
|
+
private widget;
|
|
7
|
+
private allowEdit;
|
|
8
|
+
constructor(view: EditorView);
|
|
9
|
+
private get numberOfTestLines();
|
|
10
|
+
private lineFromEnd;
|
|
11
|
+
private highlightLines;
|
|
12
|
+
private addWidget;
|
|
13
|
+
private clearAllLineEffects;
|
|
14
|
+
private getReadOnlyRanges;
|
|
15
|
+
private insertTestCode;
|
|
16
|
+
reset(keepCode?: boolean): void;
|
|
17
|
+
set testCode(code: string);
|
|
18
|
+
getNonTestCode(): string;
|
|
19
|
+
toExtension(): Extension;
|
|
20
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { StateField, StateEffect } from "@codemirror/state";
|
|
2
|
+
import { Decoration, EditorView, WidgetType } from "@codemirror/view";
|
|
3
|
+
import readOnlyRangesExtension from "codemirror-readonly-ranges";
|
|
4
|
+
import { t } from "../util/Util";
|
|
5
|
+
const addLineEffect = StateEffect.define();
|
|
6
|
+
const clearAllLineEffects = StateEffect.define();
|
|
7
|
+
const lineEffectExtension = StateField.define({
|
|
8
|
+
create() {
|
|
9
|
+
return Decoration.none;
|
|
10
|
+
},
|
|
11
|
+
update(value, transaction) {
|
|
12
|
+
let v = value.map(transaction.changes);
|
|
13
|
+
for (const effect of transaction.effects) {
|
|
14
|
+
if (effect.is(addLineEffect)) {
|
|
15
|
+
v = value.update({ add: effect.value });
|
|
16
|
+
}
|
|
17
|
+
if (effect.is(clearAllLineEffects)) {
|
|
18
|
+
v = Decoration.none;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return v;
|
|
22
|
+
},
|
|
23
|
+
provide: f => EditorView.decorations.from(f)
|
|
24
|
+
});
|
|
25
|
+
const highlightDecoration = Decoration.line({ class: "papyros-test-code" });
|
|
26
|
+
// Widget to manage the test code
|
|
27
|
+
class TestCodeWidget extends WidgetType {
|
|
28
|
+
constructor(testCodeExtension) {
|
|
29
|
+
super();
|
|
30
|
+
this.testCodeExtension = testCodeExtension;
|
|
31
|
+
}
|
|
32
|
+
toDOM() {
|
|
33
|
+
console.log("create test code widget");
|
|
34
|
+
const element = document.createElement("div");
|
|
35
|
+
element.classList.add("papyros-test-code-widget");
|
|
36
|
+
const span = document.createElement("span");
|
|
37
|
+
span.innerText = t("Papyros.editor.test_code.description");
|
|
38
|
+
element.appendChild(span);
|
|
39
|
+
const buttons = document.createElement("div");
|
|
40
|
+
const editButton = document.createElement("button");
|
|
41
|
+
editButton.classList.add("btn-secondary", "papyros-button", "btn-icon");
|
|
42
|
+
editButton.innerHTML = "<i class=\"mdi mdi-pencil\"></i>";
|
|
43
|
+
editButton.addEventListener("click", () => {
|
|
44
|
+
console.log("edit test code");
|
|
45
|
+
this.testCodeExtension.reset(true);
|
|
46
|
+
});
|
|
47
|
+
editButton.title = t("Papyros.editor.test_code.edit");
|
|
48
|
+
buttons.appendChild(editButton);
|
|
49
|
+
const deleteButton = document.createElement("button");
|
|
50
|
+
deleteButton.classList.add("btn-secondary", "papyros-button", "btn-icon");
|
|
51
|
+
deleteButton.innerHTML = "<i class=\"mdi mdi-close\"></i>";
|
|
52
|
+
deleteButton.addEventListener("click", () => {
|
|
53
|
+
console.log("remove test code");
|
|
54
|
+
this.testCodeExtension.reset();
|
|
55
|
+
});
|
|
56
|
+
deleteButton.title = t("Papyros.editor.test_code.remove");
|
|
57
|
+
buttons.appendChild(deleteButton);
|
|
58
|
+
element.appendChild(buttons);
|
|
59
|
+
return element;
|
|
60
|
+
}
|
|
61
|
+
ignoreEvent() {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export class TestCodeExtension {
|
|
66
|
+
constructor(view) {
|
|
67
|
+
this.lines = "";
|
|
68
|
+
this.allowEdit = true;
|
|
69
|
+
this.view = view;
|
|
70
|
+
this.widget = Decoration.widget({ widget: new TestCodeWidget(this), block: true, side: 1 });
|
|
71
|
+
}
|
|
72
|
+
get numberOfTestLines() {
|
|
73
|
+
return this.lines.split("\n").length;
|
|
74
|
+
}
|
|
75
|
+
lineFromEnd(line, state = undefined) {
|
|
76
|
+
const currentState = state || this.view.state;
|
|
77
|
+
const lineFromEnd = currentState.doc.lines - line;
|
|
78
|
+
return currentState.doc.line(lineFromEnd);
|
|
79
|
+
}
|
|
80
|
+
highlightLines() {
|
|
81
|
+
for (let i = 0; i < this.numberOfTestLines; i++) {
|
|
82
|
+
this.view.dispatch({
|
|
83
|
+
effects: addLineEffect.of([highlightDecoration.range(this.lineFromEnd(i).from)])
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
addWidget() {
|
|
88
|
+
this.view.dispatch({
|
|
89
|
+
effects: addLineEffect.of([this.widget.range(this.lineFromEnd(this.numberOfTestLines).to)])
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
clearAllLineEffects() {
|
|
93
|
+
this.view.dispatch({
|
|
94
|
+
effects: clearAllLineEffects.of(null)
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
getReadOnlyRanges(state) {
|
|
98
|
+
if (this.allowEdit) {
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
101
|
+
return [{
|
|
102
|
+
from: this.lineFromEnd(this.numberOfTestLines - 1, state).from,
|
|
103
|
+
to: undefined // until last line
|
|
104
|
+
}];
|
|
105
|
+
}
|
|
106
|
+
insertTestCode(code) {
|
|
107
|
+
this.view.dispatch({ changes: { from: this.lineFromEnd(0).to, insert: "\n" } });
|
|
108
|
+
this.view.dispatch({ changes: { from: this.lineFromEnd(0).to, insert: code } });
|
|
109
|
+
this.lines = code;
|
|
110
|
+
}
|
|
111
|
+
reset(keepCode = false) {
|
|
112
|
+
this.allowEdit = true;
|
|
113
|
+
this.clearAllLineEffects();
|
|
114
|
+
if (this.lines === "") {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
if (!keepCode) {
|
|
118
|
+
this.view.dispatch({ changes: { from: this.lineFromEnd(this.numberOfTestLines).to, to: this.lineFromEnd(0).to, insert: "" } });
|
|
119
|
+
}
|
|
120
|
+
this.lines = "";
|
|
121
|
+
}
|
|
122
|
+
set testCode(code) {
|
|
123
|
+
this.reset();
|
|
124
|
+
if (code === "") {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
this.insertTestCode(code);
|
|
128
|
+
this.allowEdit = false;
|
|
129
|
+
this.highlightLines();
|
|
130
|
+
this.addWidget();
|
|
131
|
+
}
|
|
132
|
+
getNonTestCode() {
|
|
133
|
+
if (this.allowEdit) {
|
|
134
|
+
return this.view.state.doc.toString();
|
|
135
|
+
}
|
|
136
|
+
return this.view.state.doc.sliceString(0, this.lineFromEnd(this.numberOfTestLines).to);
|
|
137
|
+
}
|
|
138
|
+
toExtension() {
|
|
139
|
+
return [lineEffectExtension, readOnlyRangesExtension(this.getReadOnlyRanges.bind(this))];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=TestCodeExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestCodeExtension.js","sourceRoot":"","sources":["../../src/editor/TestCodeExtension.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dodona/papyros",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0-beta.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"homepage": ".",
|
|
6
6
|
"devDependencies": {
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"@codemirror/view": "^6.22.1",
|
|
48
48
|
"@dodona/trace-component": "1.1.6",
|
|
49
49
|
"@lezer/common": "^1.1.0",
|
|
50
|
+
"codemirror-readonly-ranges": "^0.1.0-alpha.2",
|
|
50
51
|
"comlink": "^4.4.1",
|
|
51
52
|
"comsync": "^0.0.9",
|
|
52
53
|
"escape-html": "^1.0.3",
|