extwee 1.6.0 → 2.0.2
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 -0
- package/.github/workflows/nodejs.yml +24 -25
- package/.travis.yml +13 -13
- package/CODE_OF_CONDUCT.md +82 -0
- package/LICENSE +21 -21
- package/README.md +36 -205
- package/SECURITY.md +12 -0
- package/babel.config.json +22 -0
- package/bin/extwee.js +49 -0
- package/index.js +31 -26
- package/package.json +59 -37
- package/src/FileReader.js +33 -36
- package/src/HTMLParser.js +343 -206
- package/src/HTMLWriter.js +227 -177
- package/src/Passage.js +202 -20
- package/src/Story.js +461 -148
- package/src/StoryFormat.js +300 -41
- package/src/StoryFormatParser.js +142 -65
- package/src/TweeParser.js +161 -255
- package/src/TweeWriter.js +98 -111
- package/story-formats/chapbook-1.2.0/format.js +1 -0
- package/story-formats/chapbook-1.2.0/logo.svg +1 -0
- package/story-formats/harlowe-1.2.4/format.js +1 -0
- package/story-formats/harlowe-1.2.4/icon.svg +78 -0
- package/story-formats/harlowe-2.1.0/format.js +2 -0
- package/story-formats/harlowe-2.1.0/icon.svg +78 -0
- package/story-formats/harlowe-3.1.0/format.js +3 -0
- package/story-formats/harlowe-3.1.0/icon.svg +78 -0
- package/story-formats/paperthin-1.0.0/format.js +1 -0
- package/story-formats/paperthin-1.0.0/icon.svg +5 -0
- package/story-formats/snowman-1.4.0/format.js +1 -0
- package/story-formats/snowman-1.4.0/icon.svg +436 -0
- package/story-formats/snowman-2.0.2/format.js +1 -0
- package/story-formats/snowman-2.0.2/icon.svg +436 -0
- package/story-formats/sugarcube-1.0.35/LICENSE +23 -0
- package/story-formats/sugarcube-1.0.35/format.js +1 -0
- package/story-formats/sugarcube-1.0.35/icon.svg +56 -0
- package/story-formats/sugarcube-2.31.1/LICENSE +22 -0
- package/story-formats/sugarcube-2.31.1/format.js +1 -0
- package/story-formats/sugarcube-2.31.1/icon.svg +56 -0
- package/test/{HTMLWriter/example7.twee → CLI/example6.twee} +16 -16
- package/test/CLI/harlowe.js +3 -0
- package/test/CLI/input.html +47 -0
- package/test/CLI/test.twee +18 -0
- package/test/CLI/test2.html +47 -0
- package/test/CLI/tweeExample.twee +17 -0
- package/test/CLI/twineExample.html +15 -0
- package/test/CLI.test.js +30 -0
- package/test/FileReader.test.js +14 -0
- package/test/HTMLParser/Example1.html +53 -0
- package/test/HTMLParser/Tags.html +15 -0
- package/test/HTMLParser/lyingStartnode.html +15 -0
- package/test/HTMLParser/lyingTagColors.html +48 -0
- package/test/HTMLParser/missingCreator.html +11 -0
- package/test/HTMLParser/missingCreatorVersion.html +11 -0
- package/test/HTMLParser/missingFormat.html +11 -0
- package/test/HTMLParser/missingFormatVersion.html +11 -0
- package/test/HTMLParser/missingIFID.html +11 -0
- package/test/HTMLParser/missingName.html +33 -0
- package/test/HTMLParser/missingPID.html +15 -0
- package/test/HTMLParser/missingPassageName.html +15 -0
- package/test/HTMLParser/missingPassageTags.html +15 -0
- package/test/HTMLParser/missingPosition.html +15 -0
- package/test/HTMLParser/missingScript.html +14 -0
- package/test/HTMLParser/missingSize.html +35 -0
- package/test/HTMLParser/missingStartnode.html +11 -0
- package/test/HTMLParser/missingStyle.html +14 -0
- package/test/HTMLParser/missingZoom.html +11 -0
- package/test/HTMLParser/tagColors.html +31 -0
- package/test/HTMLParser/twineExample.html +15 -46
- package/test/HTMLParser/twineExample2.html +15 -0
- package/test/HTMLParser/twineExample3.html +15 -0
- package/test/HTMLParser.test.js +177 -0
- package/test/HTMLWriter/TestTags.html +42 -0
- package/test/HTMLWriter/{test10.html → creator.html} +8 -5
- package/test/HTMLWriter/example6.twee +16 -16
- package/test/HTMLWriter/{example.twee → missingStoryTitle.twee} +29 -29
- package/test/HTMLWriter/test11.html +123 -0
- package/test/HTMLWriter/test2.html +15 -12
- package/test/HTMLWriter/test3.html +7 -13
- package/test/HTMLWriter/test4.html +8 -5
- package/test/HTMLWriter/test6.html +7 -5
- package/test/HTMLWriter.test.js +289 -0
- package/test/Passage.test.js +104 -0
- package/test/Roundtrip/Example1.html +64 -0
- package/test/Roundtrip/example1.twee +21 -0
- package/test/Roundtrip/example2.twee +18 -0
- package/test/Roundtrip/harlowe.js +3 -0
- package/test/Roundtrip/round.html +50 -0
- package/test/Roundtrip.test.js +48 -0
- package/test/Story/startmeta.twee +29 -29
- package/test/Story/test.twee +25 -25
- package/test/Story.test.js +282 -0
- package/test/StoryFormat.test.js +152 -0
- package/test/StoryFormatParser/example.js +3 -0
- package/test/StoryFormatParser/{test2.js → example2.js} +3 -3
- package/test/StoryFormatParser/format_doublename.js +1 -0
- package/test/StoryFormatParser/harlowe.js +2 -2
- package/test/StoryFormatParser/missingAuthor.js +1 -0
- package/test/StoryFormatParser/missingDescription.js +1 -0
- package/test/StoryFormatParser/missingImage.js +1 -0
- package/test/StoryFormatParser/missingLicense.js +1 -0
- package/test/StoryFormatParser/missingName.js +1 -0
- package/test/StoryFormatParser/missingProofing.js +1 -0
- package/test/StoryFormatParser/missingSource.js +1 -0
- package/test/StoryFormatParser/missingURL.js +1 -0
- package/test/StoryFormatParser/missingVersion.js +1 -0
- package/test/StoryFormatParser/versionWrong.js +1 -0
- package/test/StoryFormatParser.test.js +91 -0
- package/test/TweeParser/emptytags.twee +2 -2
- package/test/TweeParser/example.twee +32 -29
- package/test/TweeParser/missing.twee +19 -0
- package/test/{HTMLWriter/example5.twee → TweeParser/multipleScriptPassages.twee} +19 -13
- package/test/{HTMLWriter/example4.twee → TweeParser/multipleStyleTag.twee} +19 -13
- package/test/TweeParser/multipletags.twee +10 -2
- package/test/TweeParser/noTitle.twee +2 -0
- package/test/TweeParser/notes.twee +16 -0
- package/test/TweeParser/pasagemetadataerror.twee +2 -2
- package/test/{HTMLWriter/example2.twee → TweeParser/scriptPassage.twee} +16 -13
- package/test/TweeParser/singletag.twee +13 -2
- package/test/TweeParser/startMetadata.twee +14 -0
- package/test/TweeParser/storydataerror.twee +25 -25
- package/test/{HTMLWriter/example3.twee → TweeParser/stylePassage.twee} +16 -13
- package/test/TweeParser/test.twee +25 -25
- package/test/TweeParser.test.js +79 -0
- package/test/TweeWriter/test1.twee +14 -9
- package/test/TweeWriter/test3.twee +7 -10
- package/test/TweeWriter/test4.twee +14 -0
- package/test/TweeWriter/test5.twee +20 -0
- package/test/TweeWriter.test.js +85 -0
- package/main.js +0 -106
- package/src/DirectoryReader.js +0 -107
- package/src/DirectoryWatcher.js +0 -92
- package/test/DirectoryReader/css/test.css +0 -3
- package/test/DirectoryReader1/js/Site.js +0 -1
- package/test/DirectoryReader2/error.js +0 -1
- package/test/DirectoryReader2/example.css +0 -3
- package/test/DirectoryReader2/index.twee +0 -6
- package/test/DirectoryReader3/twee/index.twee +0 -6
- package/test/DirectoryWatcher/example.txt +0 -0
- package/test/DirectoryWatcher/test.txt +0 -0
- package/test/DirectoryWatcher/test1.txt +0 -0
- package/test/HTMLWriter/test5.html +0 -48
- package/test/HTMLWriter/test7.html +0 -48
- package/test/HTMLWriter/test8.html +0 -48
- package/test/HTMLWriter/test9.html +0 -48
- package/test/StoryFormatParser/test.js +0 -2
- package/test/TweeParser/test.twee3 +0 -11
- package/test/TweeWriter/metatest.twee +0 -12
- package/test/TweeWriter/test2.twee +0 -15
- package/test/test.js +0 -722
package/src/DirectoryReader.js
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
const fs = require("fs");
|
|
2
|
-
const FileReader = require('./FileReader.js');
|
|
3
|
-
const shell = require('shelljs');
|
|
4
|
-
// Tell shelljs to be quiet about warnings
|
|
5
|
-
shell.config.silent = true;
|
|
6
|
-
const CleanCSS = require('clean-css');
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @class DirectoryReader
|
|
10
|
-
* @module DirectoryReader
|
|
11
|
-
*/
|
|
12
|
-
class DirectoryReader {
|
|
13
|
-
/**
|
|
14
|
-
* @method DirectoryReader
|
|
15
|
-
* @constructor
|
|
16
|
-
*/
|
|
17
|
-
constructor (directory) {
|
|
18
|
-
|
|
19
|
-
try {
|
|
20
|
-
|
|
21
|
-
this.directory = fs.realpathSync(directory);
|
|
22
|
-
|
|
23
|
-
} catch(event) {
|
|
24
|
-
|
|
25
|
-
throw new Error("Error: Cannot resolve to real path!");
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
this.CSScontents = "";
|
|
30
|
-
this.JScontents = "";
|
|
31
|
-
this.tweeContents = "";
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
watch() {
|
|
36
|
-
|
|
37
|
-
// Reset content
|
|
38
|
-
this.CSScontents = this.JScontents = this.tweeContents = "";
|
|
39
|
-
|
|
40
|
-
// Look for CSS files
|
|
41
|
-
this.CSScontents = this.processCSS();
|
|
42
|
-
// Look for JS files
|
|
43
|
-
this.JScontents = this.processJS();
|
|
44
|
-
// Look for Twee files
|
|
45
|
-
this.tweeContents = this.processTwee();
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
processJS() {
|
|
50
|
-
|
|
51
|
-
let fileContents = "";
|
|
52
|
-
|
|
53
|
-
console.info("Processing JS files...");
|
|
54
|
-
|
|
55
|
-
shell.ls('-R', this.directory + '/**/*.js').forEach(function (value) {
|
|
56
|
-
|
|
57
|
-
console.info(" Loading " + value);
|
|
58
|
-
const file = new FileReader(value);
|
|
59
|
-
fileContents += file.contents;
|
|
60
|
-
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
return fileContents;
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
processCSS() {
|
|
68
|
-
|
|
69
|
-
let fileContents = "";
|
|
70
|
-
|
|
71
|
-
console.info("Processing CSS files...");
|
|
72
|
-
shell.ls('-R', this.directory + '/**/*.css').forEach(function (value) {
|
|
73
|
-
console.info(" Loading " + value);
|
|
74
|
-
const file = new FileReader(value);
|
|
75
|
-
fileContents += file.contents;
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
const output = new CleanCSS({level: 2});
|
|
79
|
-
let {styles} = output.minify(fileContents);
|
|
80
|
-
return styles;
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
processTwee() {
|
|
85
|
-
|
|
86
|
-
let fileType = ["tw", "tw2", "twee", "twee2", "tw3", "twee3"];
|
|
87
|
-
|
|
88
|
-
let fileContents = "";
|
|
89
|
-
|
|
90
|
-
console.info("Processing Twee files...");
|
|
91
|
-
for(let i = 0; i < fileType.length; i++) {
|
|
92
|
-
|
|
93
|
-
shell.ls('-R', this.directory + '/**/*.' + fileType[i]).forEach(function (value) {
|
|
94
|
-
const file = new FileReader(value);
|
|
95
|
-
console.info(" Loading " + value);
|
|
96
|
-
fileContents += file.contents;
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return fileContents;
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
module.exports = DirectoryReader;
|
package/src/DirectoryWatcher.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
const fs = require("fs");
|
|
2
|
-
const chokidar = require('chokidar');
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @class DirectoryWatcher
|
|
6
|
-
* @module DirectoryWatcher
|
|
7
|
-
*/
|
|
8
|
-
class DirectoryWatcher {
|
|
9
|
-
/**
|
|
10
|
-
* @method DirectoryWatcher
|
|
11
|
-
* @constructor
|
|
12
|
-
*/
|
|
13
|
-
constructor (directory, callback) {
|
|
14
|
-
|
|
15
|
-
this.directory = directory;
|
|
16
|
-
this.watcher = null;
|
|
17
|
-
this.callback = callback;
|
|
18
|
-
|
|
19
|
-
// Test if callback is a function or not
|
|
20
|
-
if( !(this.callback instanceof Function) ) {
|
|
21
|
-
|
|
22
|
-
throw new Error("Error: Expected function!");
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
try {
|
|
27
|
-
|
|
28
|
-
this.directory = fs.realpathSync(this.directory);
|
|
29
|
-
|
|
30
|
-
} catch(event) {
|
|
31
|
-
|
|
32
|
-
throw new Error("Error: Directory does not exist!");
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
watch() {
|
|
39
|
-
|
|
40
|
-
console.info("Watching " + this.directory + " for changes.");
|
|
41
|
-
console.info("Press CTRL+C to stop.");
|
|
42
|
-
|
|
43
|
-
// Setup the Chokidar watcher
|
|
44
|
-
this.watcher = chokidar.watch(this.directory, {
|
|
45
|
-
ignored: /.html/,
|
|
46
|
-
persistent: true,
|
|
47
|
-
ignoreInitial: false
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
// Catch initial scan
|
|
51
|
-
this.watcher.on('ready', () => {
|
|
52
|
-
this.callback('ready');
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
// Catch change events
|
|
56
|
-
this.watcher.on('change', (path) => {
|
|
57
|
-
console.info("Change detected on " + path);
|
|
58
|
-
this.callback('change');
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
// Catch add events
|
|
62
|
-
this.watcher.on('add', (path) => {
|
|
63
|
-
console.info("Addition detected on " + path);
|
|
64
|
-
this.callback('add');
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
stopWatching() {
|
|
70
|
-
|
|
71
|
-
if(this.watcher == null) {
|
|
72
|
-
|
|
73
|
-
throw new Error("Invalid watcher object!");
|
|
74
|
-
|
|
75
|
-
} else {
|
|
76
|
-
|
|
77
|
-
// If this is a function, call it
|
|
78
|
-
if(typeof this.watcher.close == "function") {
|
|
79
|
-
|
|
80
|
-
this.watcher.close().then(() => {
|
|
81
|
-
console.log('Stopped watching.');
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
module.exports = DirectoryWatcher;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
console.log("Test")
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
console.log("Example!");
|
|
File without changes
|
|
File without changes
|
|
File without changes
|