extwee 2.0.6 → 2.2.1
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/.eslintrc.json +25 -25
- package/.github/FUNDING.yml +3 -0
- package/.github/dependabot.yml +11 -0
- package/.github/workflows/nodejs.yml +25 -24
- package/.travis.yml +13 -13
- package/CODE_OF_CONDUCT.md +82 -82
- package/LICENSE +21 -21
- package/README.md +173 -36
- package/SECURITY.md +12 -12
- package/babel.config.json +18 -22
- package/build/extwee +0 -0
- package/build/extwee.exe +0 -0
- package/build/extwee.web.min.js +2 -0
- package/build/extwee.web.min.js.LICENSE.txt +1 -0
- package/docs/.nojekyll +0 -0
- package/docs/README.md +167 -0
- package/docs/_sidebar.md +20 -0
- package/docs/examples/dynamicPassages.md +28 -0
- package/docs/examples/jsonToTwee.md +23 -0
- package/docs/examples/twsToTwee.md +25 -0
- package/docs/formats/json.md +17 -0
- package/docs/formats/twee.md +13 -0
- package/docs/formats/twine1HTML.md +13 -0
- package/docs/formats/twine2ArchiveHTML.md +13 -0
- package/docs/formats/twine2HTML.md +13 -0
- package/docs/formats/tws.md +9 -0
- package/docs/index.html +26 -0
- package/docs/install/binaries.md +9 -0
- package/docs/install/npm.md +20 -0
- package/docs/install/npx.md +9 -0
- package/docs/objects/passage.md +47 -0
- package/docs/objects/story.md +70 -0
- package/docs/objects/storyformat.md +27 -0
- package/index.html +22 -0
- package/index.js +29 -31
- package/package.json +68 -58
- package/src/JSON/parse.js +128 -0
- package/src/Passage.js +279 -202
- package/src/Story.js +653 -523
- package/src/StoryFormat/parse.js +134 -0
- package/src/StoryFormat.js +259 -300
- package/src/TWS/parse.js +86 -0
- package/src/Twee/parse.js +157 -0
- package/src/Twine1HTML/compile.js +58 -0
- package/src/Twine1HTML/parse.js +134 -0
- package/src/Twine2ArchiveHTML/compile.js +36 -0
- package/src/Twine2ArchiveHTML/parse.js +49 -0
- package/src/Twine2HTML/compile.js +35 -0
- package/src/Twine2HTML/parse.js +349 -0
- package/src/extwee.js +206 -0
- package/test/CLI/CLI.test.js +49 -0
- package/test/CLI/files/example.json +1 -0
- package/test/CLI/files/example6.twee +22 -0
- package/test/{Roundtrip → CLI/files}/harlowe.js +2 -2
- package/test/CLI/{input.html → files/input.html} +47 -47
- package/test/CLI/files/output/test.twee +0 -0
- package/test/CLI/{tweeExample.twee → files/tweeExample.twee} +17 -17
- package/test/CLI/files/twine1/LICENSE.txt +32 -0
- package/test/CLI/files/twine1/code.js +5 -0
- package/test/CLI/files/twine1/engine.js +43 -0
- package/test/CLI/files/twine1/header.html +325 -0
- package/test/CLI/files/twine1Test.html +371 -0
- package/test/CLI/{twineExample.html → files/twineExample.html} +16 -15
- package/test/JSON/JSON.Parse.test.js +316 -0
- package/test/Passage.test.js +244 -104
- package/test/Roundtrip/{Example1.html → Files/Example1.html} +63 -63
- package/test/Roundtrip/Files/LICENSE +19 -0
- package/test/Roundtrip/Files/example1.twee +10 -0
- package/test/Roundtrip/{example2.twee → Files/example2.twee} +27 -18
- package/test/Roundtrip/{example4.twee → Files/example4.twee} +27 -27
- package/test/{StoryFormatParser → Roundtrip/Files}/harlowe.js +2 -2
- package/test/Roundtrip/{round.html → Files/round.html} +6 -4
- package/test/Roundtrip/Roundtrip.test.js +54 -0
- package/test/Story.test.js +677 -423
- package/test/StoryFormat/StoryFormat.Parse.test.js +91 -0
- package/test/{StoryFormatParser → StoryFormat/StoryFormatParser}/example.js +3 -3
- package/test/{StoryFormatParser → StoryFormat/StoryFormatParser}/example2.js +3 -3
- package/test/{CLI → StoryFormat/StoryFormatParser}/harlowe.js +2 -2
- package/test/StoryFormat.test.js +152 -152
- package/test/TWS/Parse.test.js +78 -0
- package/test/TWS/TWSParser/Example1.tws +150 -0
- package/test/TWS/TWSParser/Example5.tws +414 -0
- package/test/TWS/TWSParser/noscale.tws +0 -0
- package/test/TWS/TWSParser/nostory.tws +0 -0
- package/test/Twee/Twee.Parse.test.js +76 -0
- package/test/{TweeParser → Twee/TweeParser}/emptytags.twee +2 -2
- package/test/{TweeParser → Twee/TweeParser}/example.twee +32 -32
- package/test/{TweeParser → Twee/TweeParser}/missing.twee +19 -19
- package/test/{TweeParser → Twee/TweeParser}/multipleScriptPassages.twee +19 -19
- package/test/{TweeParser → Twee/TweeParser}/multipleStyleTag.twee +19 -19
- package/test/{TweeParser → Twee/TweeParser}/multipletags.twee +10 -10
- package/test/{TweeParser → Twee/TweeParser}/noTitle.twee +2 -2
- package/test/{TweeParser → Twee/TweeParser}/notes.twee +16 -16
- package/test/{TweeParser → Twee/TweeParser}/pasagemetadataerror.twee +2 -2
- package/test/{TweeParser → Twee/TweeParser}/scriptPassage.twee +16 -16
- package/test/{TweeParser → Twee/TweeParser}/singletag.twee +13 -13
- package/test/{TweeParser → Twee/TweeParser}/startMetadata.twee +14 -14
- package/test/{TweeParser → Twee/TweeParser}/storydataerror.twee +25 -25
- package/test/{TweeParser → Twee/TweeParser}/stylePassage.twee +16 -16
- package/test/{Story → Twee/TweeParser}/test.twee +25 -25
- package/test/Twine1HTML/Twine1HTML.Compile.test.js +180 -0
- package/test/Twine1HTML/Twine1HTML.Parse.test.js +183 -0
- package/test/Twine1HTML/Twine1HTMLCompiler/Twine1/LICENSE +674 -0
- package/test/Twine1HTML/Twine1HTMLCompiler/Twine1/engine.js +43 -0
- package/test/Twine1HTML/Twine1HTMLCompiler/Twine1/jquery.js +4 -0
- package/test/Twine1HTML/Twine1HTMLCompiler/Twine1/modernizr.js +4 -0
- package/test/Twine1HTML/Twine1HTMLCompiler/engineTest.html +1 -0
- package/test/Twine1HTML/Twine1HTMLCompiler/jonah-1.4.2/LICENSE +32 -0
- package/test/Twine1HTML/Twine1HTMLCompiler/jonah-1.4.2/code.js +4 -0
- package/test/Twine1HTML/Twine1HTMLCompiler/jonah-1.4.2/header.html +327 -0
- package/test/Twine1HTML/Twine1HTMLCompiler/test.html +0 -0
- package/test/Twine1HTML/Twine1HTMLCompiler/test1.html +6 -0
- package/test/Twine1HTML/Twine1HTMLCompiler/test2.html +6 -0
- package/test/Twine1HTML/Twine1HTMLCompiler/test3.html +43 -0
- package/test/Twine1HTML/Twine1HTMLCompiler/test4.html +372 -0
- package/test/Twine1HTML/Twine1HTMLCompiler/test5.html +372 -0
- package/test/Twine2ArchiveHTML/Twine2ArchiveHTML.Compile.test.js +35 -0
- package/test/Twine2ArchiveHTML/Twine2ArchiveHTML.Parse.test.js +25 -0
- package/test/Twine2ArchiveHTML/Twine2ArchiveHTMLCompiler/test1.html +6 -0
- package/test/Twine2ArchiveHTML/Twine2ArchiveHTMLParser/test1.html +3 -0
- package/test/Twine2HTML/Twine2HTML.Compile.test.js +224 -0
- package/test/Twine2HTML/Twine2HTML.Parse.test.js +173 -0
- package/test/{HTMLWriter → Twine2HTML/Twine2HTMLCompiler}/creator.html +4 -4
- package/test/{CLI → Twine2HTML/Twine2HTMLCompiler}/example6.twee +15 -15
- package/test/{HTMLWriter → Twine2HTML/Twine2HTMLCompiler}/missingStoryTitle.twee +29 -29
- package/test/{HTMLWriter → Twine2HTML/Twine2HTMLCompiler}/test2.html +10 -8
- package/test/{HTMLWriter → Twine2HTML/Twine2HTMLCompiler}/test3.html +1 -1
- package/test/{HTMLWriter → Twine2HTML/Twine2HTMLCompiler}/test4.html +4 -4
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/Example1.html +52 -52
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/Tags.html +15 -15
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/lyingStartnode.html +15 -15
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/lyingTagColors.html +48 -48
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingCreator.html +11 -11
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingCreatorVersion.html +11 -11
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingFormat.html +11 -11
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingFormatVersion.html +11 -11
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingIFID.html +11 -11
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingName.html +33 -33
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingPID.html +15 -15
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingPassageName.html +15 -15
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingPassageTags.html +15 -15
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingPosition.html +15 -15
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingScript.html +14 -14
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingSize.html +35 -35
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingStartnode.html +11 -11
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingStyle.html +14 -14
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/missingZoom.html +11 -11
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/twineExample.html +23 -23
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/twineExample2.html +15 -15
- package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/twineExample3.html +15 -15
- package/test/Twine2HTML/Twine2HTMLParser/unescaping.html +33 -0
- package/tsconfig.json +21 -0
- package/types/index.d.ts +14 -0
- package/types/src/JSON/parse.d.ts +8 -0
- package/types/src/Passage.d.ts +72 -0
- package/types/src/Story.d.ts +161 -0
- package/types/src/StoryFormat/parse.d.ts +7 -0
- package/types/src/StoryFormat.d.ts +97 -0
- package/types/src/TWS/parse.d.ts +10 -0
- package/types/src/Twee/parse.d.ts +10 -0
- package/types/src/Twine1HTML/compile.d.ts +17 -0
- package/types/src/Twine1HTML/parse.d.ts +10 -0
- package/types/src/Twine2ArchiveHTML/compile.d.ts +6 -0
- package/types/src/Twine2ArchiveHTML/parse.d.ts +6 -0
- package/types/src/Twine2HTML/compile.d.ts +9 -0
- package/types/src/Twine2HTML/parse.d.ts +17 -0
- package/types/src/extwee.d.ts +2 -0
- package/web-index.js +29 -0
- package/webpack.config.js +12 -0
- package/bin/extwee.js +0 -47
- package/src/FileReader.js +0 -33
- package/src/HTMLParser.js +0 -345
- package/src/HTMLWriter.js +0 -231
- package/src/StoryFormatParser.js +0 -142
- package/src/TweeParser.js +0 -161
- package/src/TweeWriter.js +0 -121
- package/story-formats/chapbook-1.2.0/format.js +0 -1
- package/story-formats/chapbook-1.2.0/logo.svg +0 -1
- package/story-formats/harlowe-1.2.4/format.js +0 -1
- package/story-formats/harlowe-1.2.4/icon.svg +0 -78
- package/story-formats/harlowe-2.1.0/format.js +0 -2
- package/story-formats/harlowe-2.1.0/icon.svg +0 -78
- package/story-formats/harlowe-3.1.0/format.js +0 -3
- package/story-formats/harlowe-3.1.0/icon.svg +0 -78
- package/story-formats/paperthin-1.0.0/format.js +0 -1
- package/story-formats/paperthin-1.0.0/icon.svg +0 -5
- package/story-formats/snowman-1.4.0/format.js +0 -1
- package/story-formats/snowman-1.4.0/icon.svg +0 -436
- package/story-formats/snowman-2.0.2/format.js +0 -1
- package/story-formats/snowman-2.0.2/icon.svg +0 -436
- package/story-formats/sugarcube-1.0.35/LICENSE +0 -23
- package/story-formats/sugarcube-1.0.35/format.js +0 -1
- package/story-formats/sugarcube-1.0.35/icon.svg +0 -56
- package/story-formats/sugarcube-2.31.1/LICENSE +0 -22
- package/story-formats/sugarcube-2.31.1/format.js +0 -1
- package/story-formats/sugarcube-2.31.1/icon.svg +0 -56
- package/test/CLI/test2.html +0 -45
- package/test/CLI.test.js +0 -30
- package/test/FileReader/t1.txt +0 -1
- package/test/FileReader.test.js +0 -14
- package/test/HTMLParser.test.js +0 -177
- package/test/HTMLWriter/example6.twee +0 -16
- package/test/HTMLWriter.test.js +0 -287
- package/test/Roundtrip/example1.twee +0 -21
- package/test/Roundtrip.test.js +0 -48
- package/test/Story/startmeta.twee +0 -29
- package/test/StoryFormatParser.test.js +0 -91
- package/test/TweeParser/test.twee +0 -25
- package/test/TweeParser.test.js +0 -79
- package/test/TweeWriter/test1.twee +0 -18
- package/test/TweeWriter/test3.twee +0 -12
- package/test/TweeWriter/test4.twee +0 -14
- package/test/TweeWriter/test5.twee +0 -20
- package/test/TweeWriter/test6.twee +0 -15
- package/test/TweeWriter/test7.twee +0 -15
- package/test/TweeWriter.test.js +0 -107
- /package/test/CLI/{test.twee → files/test.twee} +0 -0
- /package/test/{StoryFormatParser → StoryFormat/StoryFormatParser}/format.js +0 -0
- /package/test/{StoryFormatParser → StoryFormat/StoryFormatParser}/format_doublename.js +0 -0
- /package/test/{StoryFormatParser → StoryFormat/StoryFormatParser}/missingAuthor.js +0 -0
- /package/test/{StoryFormatParser → StoryFormat/StoryFormatParser}/missingDescription.js +0 -0
- /package/test/{StoryFormatParser → StoryFormat/StoryFormatParser}/missingImage.js +0 -0
- /package/test/{StoryFormatParser → StoryFormat/StoryFormatParser}/missingLicense.js +0 -0
- /package/test/{StoryFormatParser → StoryFormat/StoryFormatParser}/missingName.js +0 -0
- /package/test/{StoryFormatParser → StoryFormat/StoryFormatParser}/missingProofing.js +0 -0
- /package/test/{StoryFormatParser → StoryFormat/StoryFormatParser}/missingSource.js +0 -0
- /package/test/{StoryFormatParser → StoryFormat/StoryFormatParser}/missingURL.js +0 -0
- /package/test/{StoryFormatParser → StoryFormat/StoryFormatParser}/missingVersion.js +0 -0
- /package/test/{StoryFormatParser → StoryFormat/StoryFormatParser}/versionWrong.js +0 -0
- /package/test/{HTMLWriter → Twine2HTML/Twine2HTMLCompiler}/TestTags.html +0 -0
- /package/test/{HTMLWriter → Twine2HTML/Twine2HTMLCompiler}/test11.html +0 -0
- /package/test/{HTMLWriter → Twine2HTML/Twine2HTMLCompiler}/test6.html +0 -0
- /package/test/{HTMLParser → Twine2HTML/Twine2HTMLParser}/tagColors.html +0 -0
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import StoryFormatParser from '../src/StoryFormatParser.js';
|
|
2
|
-
import FileReader from '../src/FileReader';
|
|
3
|
-
|
|
4
|
-
describe('StoryFormatParser', () => {
|
|
5
|
-
describe('#parse()', () => {
|
|
6
|
-
it('Should throw error if JSON missing', () => {
|
|
7
|
-
const fr = FileReader.read('test/StoryFormatParser/example.js');
|
|
8
|
-
expect(() => { StoryFormatParser.parse(fr); }).toThrow();
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
it('Should throw error if JSON malformed', () => {
|
|
12
|
-
const fr = FileReader.read('test/StoryFormatParser/example2.js');
|
|
13
|
-
expect(() => { StoryFormatParser.parse(fr); }).toThrow();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it('Should correctly parse a StoryFormat name', () => {
|
|
17
|
-
const fr = FileReader.read('test/StoryFormatParser/format.js');
|
|
18
|
-
const sfp = StoryFormatParser.parse(fr);
|
|
19
|
-
expect(sfp.name).toBe('Snowman');
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('Should correctly parse Harlowe story format', () => {
|
|
23
|
-
const fr = FileReader.read('test/StoryFormatParser/harlowe.js');
|
|
24
|
-
const sfp = StoryFormatParser.parse(fr);
|
|
25
|
-
expect(sfp.name).toBe('Harlowe');
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it('Should detect missing name and set default', () => {
|
|
29
|
-
const fr = FileReader.read('test/StoryFormatParser/missingName.js');
|
|
30
|
-
const sfp = StoryFormatParser.parse(fr);
|
|
31
|
-
expect(sfp.name).toBe('Untitled Story Format');
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it('Should detect missing author and set default', () => {
|
|
35
|
-
const fr = FileReader.read('test/StoryFormatParser/missingAuthor.js');
|
|
36
|
-
const sfp = StoryFormatParser.parse(fr);
|
|
37
|
-
expect(sfp.author).toBe('');
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it('Should detect missing description and set default', () => {
|
|
41
|
-
const fr = FileReader.read('test/StoryFormatParser/missingDescription.js');
|
|
42
|
-
const sfp = StoryFormatParser.parse(fr);
|
|
43
|
-
expect(sfp.description).toBe('');
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it('Should detect missing image and set default', () => {
|
|
47
|
-
const fr = FileReader.read('test/StoryFormatParser/missingImage.js');
|
|
48
|
-
const sfp = StoryFormatParser.parse(fr);
|
|
49
|
-
expect(sfp.image).toBe('');
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it('Should detect missing url and set default', () => {
|
|
53
|
-
const fr = FileReader.read('test/StoryFormatParser/missingURL.js');
|
|
54
|
-
const sfp = StoryFormatParser.parse(fr);
|
|
55
|
-
expect(sfp.url).toBe('');
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
it('Should detect missing license and set default', () => {
|
|
59
|
-
const fr = FileReader.read('test/StoryFormatParser/missingLicense.js');
|
|
60
|
-
const sfp = StoryFormatParser.parse(fr);
|
|
61
|
-
expect(sfp.license).toBe('');
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it('Should detect proofing license and set default', () => {
|
|
65
|
-
const fr = FileReader.read('test/StoryFormatParser/missingProofing.js');
|
|
66
|
-
const sfp = StoryFormatParser.parse(fr);
|
|
67
|
-
expect(sfp.proofing).toBe(false);
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
it('Should throw error if version does not exist', () => {
|
|
71
|
-
const fr = FileReader.read('test/StoryFormatParser/missingVersion.js');
|
|
72
|
-
expect(() => {
|
|
73
|
-
StoryFormatParser.parse(fr);
|
|
74
|
-
}).toThrow();
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
it('Should throw error if version is not semantic style', () => {
|
|
78
|
-
const fr = FileReader.read('test/StoryFormatParser/versionWrong.js');
|
|
79
|
-
expect(() => {
|
|
80
|
-
StoryFormatParser.parse(fr);
|
|
81
|
-
}).toThrow();
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
it('Should throw error if source is not found', () => {
|
|
85
|
-
const fr = FileReader.read('test/StoryFormatParser/missingSource.js');
|
|
86
|
-
expect(() => {
|
|
87
|
-
StoryFormatParser.parse(fr);
|
|
88
|
-
}).toThrow();
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
:: StoryTitle
|
|
2
|
-
twineExample
|
|
3
|
-
|
|
4
|
-
:: Start
|
|
5
|
-
Some content.
|
|
6
|
-
|
|
7
|
-
:: StoryData
|
|
8
|
-
{
|
|
9
|
-
"ifid": "2B68ECD6-348F-4CF5-96F8-549A512A8128",
|
|
10
|
-
"format": "Harlowe",
|
|
11
|
-
"formatVersion": "2.1.0",
|
|
12
|
-
"zoom": "1"
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
:: Script1 [script]
|
|
16
|
-
// Some code
|
|
17
|
-
|
|
18
|
-
:: Script2 [script]
|
|
19
|
-
//More code here!
|
|
20
|
-
|
|
21
|
-
:: Style1 [stylesheet]
|
|
22
|
-
body {font-size: 1.2em}
|
|
23
|
-
|
|
24
|
-
:: Style2 [stylesheet]
|
|
25
|
-
p {font-style: italic;}
|
package/test/TweeParser.test.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import FileReader from '../src/FileReader.js';
|
|
2
|
-
import TweeParser from '../src/TweeParser.js';
|
|
3
|
-
|
|
4
|
-
describe('TweeParser', () => {
|
|
5
|
-
describe('#parse()', () => {
|
|
6
|
-
it('Should throw error if non-string is used', () => {
|
|
7
|
-
expect(() => { TweeParser.parse(1); }).toThrow();
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
it('Should throw error if empty string is used', () => {
|
|
11
|
-
expect(() => { TweeParser.parse(); }).toThrow();
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
it('Should throw error if no passages are present', () => {
|
|
15
|
-
expect(() => { TweeParser.parse('()()'); }).toThrow();
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it('Should throw error if it detects malformed passage headers', () => {
|
|
19
|
-
expect(() => { TweeParser.parse('::{}[]\nNo name'); }).toThrow();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('Should cut notes before passages', () => {
|
|
23
|
-
const fr = FileReader.read('test/TweeParser/notes.twee');
|
|
24
|
-
const story = TweeParser.parse(fr);
|
|
25
|
-
const p = story.getPassageByName('StoryTitle');
|
|
26
|
-
expect(p.text).toBe('twineExample');
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it('Should be able to parse Twee file for Story Name', () => {
|
|
30
|
-
const fr = FileReader.read('test/TweeParser/example.twee');
|
|
31
|
-
const story = TweeParser.parse(fr);
|
|
32
|
-
const p = story.getPassageByName('StoryTitle');
|
|
33
|
-
expect(p.text).toBe('twineExample');
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('Should parse single tag on Start passage', () => {
|
|
37
|
-
const fr = FileReader.read('test/TweeParser/singletag.twee');
|
|
38
|
-
const story = TweeParser.parse(fr);
|
|
39
|
-
const start = story.getPassageByName('Start');
|
|
40
|
-
expect(start.tags).toHaveLength(1);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('Should parse multiple tag', () => {
|
|
44
|
-
const fr = FileReader.read('test/TweeParser/multipletags.twee');
|
|
45
|
-
const story = TweeParser.parse(fr);
|
|
46
|
-
const start = story.getPassageByName('Start');
|
|
47
|
-
expect(start.tags).toHaveLength(2);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it('Should parse single script passage', () => {
|
|
51
|
-
const fr = FileReader.read('test/TweeParser/scriptPassage.twee');
|
|
52
|
-
const story = TweeParser.parse(fr);
|
|
53
|
-
const p = story.getPassageByName('UserScript');
|
|
54
|
-
expect(p.tags).toHaveLength(1);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it('Should parse single stylesheet passage', () => {
|
|
58
|
-
const fr = FileReader.read('test/TweeParser/stylePassage.twee');
|
|
59
|
-
const story = TweeParser.parse(fr);
|
|
60
|
-
const p = story.getPassageByName('UserStylesheet');
|
|
61
|
-
expect(p.tags).toHaveLength(1);
|
|
62
|
-
expect(p.name).toBe('UserStylesheet');
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
it('Should parse StoryTitle', () => {
|
|
66
|
-
const fr = FileReader.read('test/TweeParser/test.twee');
|
|
67
|
-
const story = TweeParser.parse(fr);
|
|
68
|
-
const p = story.getPassageByName('StoryTitle');
|
|
69
|
-
expect(p).not.toBe(null);
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
it('Should parse StoryAuthor', () => {
|
|
73
|
-
const fr = FileReader.read('test/TweeParser/example.twee');
|
|
74
|
-
const story = TweeParser.parse(fr);
|
|
75
|
-
const p = story.getPassageByName('StoryAuthor');
|
|
76
|
-
expect(p).not.toBe(null);
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
});
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
:: StoryData
|
|
2
|
-
{
|
|
3
|
-
"ifid": "580061AA-F033-46F0-997E-D45857DCFE9D",
|
|
4
|
-
"start": "Start",
|
|
5
|
-
"tag-colors": {
|
|
6
|
-
"bar": "green",
|
|
7
|
-
"foo": "red",
|
|
8
|
-
"qaz": "blue"
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
:: StoryTitle
|
|
13
|
-
Title
|
|
14
|
-
|
|
15
|
-
:: Start
|
|
16
|
-
Content
|
|
17
|
-
|
|
18
|
-
:: Untitled
|
|
19
|
-
Some stuff
|
|
20
|
-
|
package/test/TweeWriter.test.js
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import FileReader from '../src/FileReader.js';
|
|
2
|
-
import Story from '../src/Story.js';
|
|
3
|
-
import Passage from '../src/Passage.js';
|
|
4
|
-
import TweeWriter from '../src/TweeWriter.js';
|
|
5
|
-
import TweeParser from '../src/TweeParser.js';
|
|
6
|
-
|
|
7
|
-
describe('TweeWriter', () => {
|
|
8
|
-
describe('#write()', () => {
|
|
9
|
-
let s = null;
|
|
10
|
-
|
|
11
|
-
beforeEach(() => {
|
|
12
|
-
s = new Story();
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('Should throw error if object passed is not instanceof Story', () => {
|
|
16
|
-
expect(() => { TweeWriter.write({}); }).toThrow();
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it('Should throw error if output file invalid', () => {
|
|
20
|
-
expect(() => { TweeWriter.write(new Story(), ''); }).toThrow();
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it('Should write Twee file', () => {
|
|
24
|
-
s.addPassage(new Passage('StoryData', '{}'));
|
|
25
|
-
s.addPassage(new Passage('StoryTitle', 'Title'));
|
|
26
|
-
s.addPassage(new Passage('Start', 'Content'));
|
|
27
|
-
TweeWriter.write(s, 'test/TweeWriter/test1.twee');
|
|
28
|
-
const fr = FileReader.read('test/TweeWriter/test1.twee');
|
|
29
|
-
const story = TweeParser.parse(fr);
|
|
30
|
-
const p = story.getPassageByName('StoryTitle');
|
|
31
|
-
expect(p.text).toBe('Title');
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it('Should correctly write Twee file with passage tags', () => {
|
|
35
|
-
s.addPassage(new Passage('Start', '', ['tag', 'tags']));
|
|
36
|
-
s.addPassage(new Passage('StoryTitle', 'Title'));
|
|
37
|
-
// Verify only one passage.
|
|
38
|
-
expect(s.size()).toBe(1);
|
|
39
|
-
|
|
40
|
-
// Set an ifid property
|
|
41
|
-
s.IFID = 'DE7DF8AD-E4CD-499E-A4E7-C5B98B73449A';
|
|
42
|
-
|
|
43
|
-
// Write contents to file.
|
|
44
|
-
TweeWriter.write(s, 'test/TweeWriter/test3.twee');
|
|
45
|
-
// Read file.
|
|
46
|
-
const fr = FileReader.read('test/TweeWriter/test3.twee');
|
|
47
|
-
// Parse file.
|
|
48
|
-
const tp = TweeParser.parse(fr);
|
|
49
|
-
// Verify only two passages
|
|
50
|
-
expect(tp.size()).toBe(1);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it('Should write format, formatVersion, zoom, and start', () => {
|
|
54
|
-
s.addPassage(new Passage('StoryTitle', 'Title'));
|
|
55
|
-
s.addPassage(new Passage('Start', 'Content'));
|
|
56
|
-
s.addPassage(new Passage('Untitled', 'Some stuff'));
|
|
57
|
-
|
|
58
|
-
s.format = 'Test';
|
|
59
|
-
s.formatVersion = '1.2.3';
|
|
60
|
-
s.zoom = 1;
|
|
61
|
-
s.start = 'Untitled';
|
|
62
|
-
|
|
63
|
-
TweeWriter.write(s, 'test/TweeWriter/test1.twee');
|
|
64
|
-
const fr = FileReader.read('test/TweeWriter/test1.twee');
|
|
65
|
-
const story2 = TweeParser.parse(fr);
|
|
66
|
-
console.log(story2);
|
|
67
|
-
expect(story2.format).toBe('Test');
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
it('Should write tag colors', () => {
|
|
71
|
-
s.addPassage(new Passage('StoryTitle', 'Title'));
|
|
72
|
-
s.addPassage(new Passage('Start', 'Content'));
|
|
73
|
-
s.addPassage(new Passage('Untitled', 'Some stuff'));
|
|
74
|
-
s.tagColors = {
|
|
75
|
-
bar: 'green',
|
|
76
|
-
foo: 'red',
|
|
77
|
-
qaz: 'blue'
|
|
78
|
-
};
|
|
79
|
-
TweeWriter.write(s, 'test/TweeWriter/test5.twee');
|
|
80
|
-
const fr = FileReader.read('test/TweeWriter/test5.twee');
|
|
81
|
-
const story2 = TweeParser.parse(fr);
|
|
82
|
-
expect(story2.tagColors.bar).toBe('green');
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it('Should write Twee file with "script" tags', () => {
|
|
86
|
-
s.addPassage(new Passage('Test', 'Test', ['script']));
|
|
87
|
-
s.addPassage(new Passage('StoryTitle', 'Title'));
|
|
88
|
-
s.addPassage(new Passage('Start', 'Content'));
|
|
89
|
-
TweeWriter.write(s, 'test/TweeWriter/test6.twee');
|
|
90
|
-
const fr = FileReader.read('test/TweeWriter/test6.twee');
|
|
91
|
-
const story = TweeParser.parse(fr);
|
|
92
|
-
const p = story.getPassagesByTag('script');
|
|
93
|
-
expect(p[0].text).toBe('Test');
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
it('Should write Twee file with "stylesheet" tags', () => {
|
|
97
|
-
s.addPassage(new Passage('Test', 'Test', ['stylesheet']));
|
|
98
|
-
s.addPassage(new Passage('StoryTitle', 'Title'));
|
|
99
|
-
s.addPassage(new Passage('Start', 'Content'));
|
|
100
|
-
TweeWriter.write(s, 'test/TweeWriter/test7.twee');
|
|
101
|
-
const fr = FileReader.read('test/TweeWriter/test7.twee');
|
|
102
|
-
const story = TweeParser.parse(fr);
|
|
103
|
-
const p = story.getPassagesByTag('stylesheet');
|
|
104
|
-
expect(p[0].text).toBe('Test');
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
});
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|