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.
Files changed (151) hide show
  1. package/.eslintrc.json +25 -0
  2. package/.github/workflows/nodejs.yml +24 -25
  3. package/.travis.yml +13 -13
  4. package/CODE_OF_CONDUCT.md +82 -0
  5. package/LICENSE +21 -21
  6. package/README.md +36 -205
  7. package/SECURITY.md +12 -0
  8. package/babel.config.json +22 -0
  9. package/bin/extwee.js +49 -0
  10. package/index.js +31 -26
  11. package/package.json +59 -37
  12. package/src/FileReader.js +33 -36
  13. package/src/HTMLParser.js +343 -206
  14. package/src/HTMLWriter.js +227 -177
  15. package/src/Passage.js +202 -20
  16. package/src/Story.js +461 -148
  17. package/src/StoryFormat.js +300 -41
  18. package/src/StoryFormatParser.js +142 -65
  19. package/src/TweeParser.js +161 -255
  20. package/src/TweeWriter.js +98 -111
  21. package/story-formats/chapbook-1.2.0/format.js +1 -0
  22. package/story-formats/chapbook-1.2.0/logo.svg +1 -0
  23. package/story-formats/harlowe-1.2.4/format.js +1 -0
  24. package/story-formats/harlowe-1.2.4/icon.svg +78 -0
  25. package/story-formats/harlowe-2.1.0/format.js +2 -0
  26. package/story-formats/harlowe-2.1.0/icon.svg +78 -0
  27. package/story-formats/harlowe-3.1.0/format.js +3 -0
  28. package/story-formats/harlowe-3.1.0/icon.svg +78 -0
  29. package/story-formats/paperthin-1.0.0/format.js +1 -0
  30. package/story-formats/paperthin-1.0.0/icon.svg +5 -0
  31. package/story-formats/snowman-1.4.0/format.js +1 -0
  32. package/story-formats/snowman-1.4.0/icon.svg +436 -0
  33. package/story-formats/snowman-2.0.2/format.js +1 -0
  34. package/story-formats/snowman-2.0.2/icon.svg +436 -0
  35. package/story-formats/sugarcube-1.0.35/LICENSE +23 -0
  36. package/story-formats/sugarcube-1.0.35/format.js +1 -0
  37. package/story-formats/sugarcube-1.0.35/icon.svg +56 -0
  38. package/story-formats/sugarcube-2.31.1/LICENSE +22 -0
  39. package/story-formats/sugarcube-2.31.1/format.js +1 -0
  40. package/story-formats/sugarcube-2.31.1/icon.svg +56 -0
  41. package/test/{HTMLWriter/example7.twee → CLI/example6.twee} +16 -16
  42. package/test/CLI/harlowe.js +3 -0
  43. package/test/CLI/input.html +47 -0
  44. package/test/CLI/test.twee +18 -0
  45. package/test/CLI/test2.html +47 -0
  46. package/test/CLI/tweeExample.twee +17 -0
  47. package/test/CLI/twineExample.html +15 -0
  48. package/test/CLI.test.js +30 -0
  49. package/test/FileReader.test.js +14 -0
  50. package/test/HTMLParser/Example1.html +53 -0
  51. package/test/HTMLParser/Tags.html +15 -0
  52. package/test/HTMLParser/lyingStartnode.html +15 -0
  53. package/test/HTMLParser/lyingTagColors.html +48 -0
  54. package/test/HTMLParser/missingCreator.html +11 -0
  55. package/test/HTMLParser/missingCreatorVersion.html +11 -0
  56. package/test/HTMLParser/missingFormat.html +11 -0
  57. package/test/HTMLParser/missingFormatVersion.html +11 -0
  58. package/test/HTMLParser/missingIFID.html +11 -0
  59. package/test/HTMLParser/missingName.html +33 -0
  60. package/test/HTMLParser/missingPID.html +15 -0
  61. package/test/HTMLParser/missingPassageName.html +15 -0
  62. package/test/HTMLParser/missingPassageTags.html +15 -0
  63. package/test/HTMLParser/missingPosition.html +15 -0
  64. package/test/HTMLParser/missingScript.html +14 -0
  65. package/test/HTMLParser/missingSize.html +35 -0
  66. package/test/HTMLParser/missingStartnode.html +11 -0
  67. package/test/HTMLParser/missingStyle.html +14 -0
  68. package/test/HTMLParser/missingZoom.html +11 -0
  69. package/test/HTMLParser/tagColors.html +31 -0
  70. package/test/HTMLParser/twineExample.html +15 -46
  71. package/test/HTMLParser/twineExample2.html +15 -0
  72. package/test/HTMLParser/twineExample3.html +15 -0
  73. package/test/HTMLParser.test.js +177 -0
  74. package/test/HTMLWriter/TestTags.html +42 -0
  75. package/test/HTMLWriter/{test10.html → creator.html} +8 -5
  76. package/test/HTMLWriter/example6.twee +16 -16
  77. package/test/HTMLWriter/{example.twee → missingStoryTitle.twee} +29 -29
  78. package/test/HTMLWriter/test11.html +123 -0
  79. package/test/HTMLWriter/test2.html +15 -12
  80. package/test/HTMLWriter/test3.html +7 -13
  81. package/test/HTMLWriter/test4.html +8 -5
  82. package/test/HTMLWriter/test6.html +7 -5
  83. package/test/HTMLWriter.test.js +289 -0
  84. package/test/Passage.test.js +104 -0
  85. package/test/Roundtrip/Example1.html +64 -0
  86. package/test/Roundtrip/example1.twee +21 -0
  87. package/test/Roundtrip/example2.twee +18 -0
  88. package/test/Roundtrip/harlowe.js +3 -0
  89. package/test/Roundtrip/round.html +50 -0
  90. package/test/Roundtrip.test.js +48 -0
  91. package/test/Story/startmeta.twee +29 -29
  92. package/test/Story/test.twee +25 -25
  93. package/test/Story.test.js +282 -0
  94. package/test/StoryFormat.test.js +152 -0
  95. package/test/StoryFormatParser/example.js +3 -0
  96. package/test/StoryFormatParser/{test2.js → example2.js} +3 -3
  97. package/test/StoryFormatParser/format_doublename.js +1 -0
  98. package/test/StoryFormatParser/harlowe.js +2 -2
  99. package/test/StoryFormatParser/missingAuthor.js +1 -0
  100. package/test/StoryFormatParser/missingDescription.js +1 -0
  101. package/test/StoryFormatParser/missingImage.js +1 -0
  102. package/test/StoryFormatParser/missingLicense.js +1 -0
  103. package/test/StoryFormatParser/missingName.js +1 -0
  104. package/test/StoryFormatParser/missingProofing.js +1 -0
  105. package/test/StoryFormatParser/missingSource.js +1 -0
  106. package/test/StoryFormatParser/missingURL.js +1 -0
  107. package/test/StoryFormatParser/missingVersion.js +1 -0
  108. package/test/StoryFormatParser/versionWrong.js +1 -0
  109. package/test/StoryFormatParser.test.js +91 -0
  110. package/test/TweeParser/emptytags.twee +2 -2
  111. package/test/TweeParser/example.twee +32 -29
  112. package/test/TweeParser/missing.twee +19 -0
  113. package/test/{HTMLWriter/example5.twee → TweeParser/multipleScriptPassages.twee} +19 -13
  114. package/test/{HTMLWriter/example4.twee → TweeParser/multipleStyleTag.twee} +19 -13
  115. package/test/TweeParser/multipletags.twee +10 -2
  116. package/test/TweeParser/noTitle.twee +2 -0
  117. package/test/TweeParser/notes.twee +16 -0
  118. package/test/TweeParser/pasagemetadataerror.twee +2 -2
  119. package/test/{HTMLWriter/example2.twee → TweeParser/scriptPassage.twee} +16 -13
  120. package/test/TweeParser/singletag.twee +13 -2
  121. package/test/TweeParser/startMetadata.twee +14 -0
  122. package/test/TweeParser/storydataerror.twee +25 -25
  123. package/test/{HTMLWriter/example3.twee → TweeParser/stylePassage.twee} +16 -13
  124. package/test/TweeParser/test.twee +25 -25
  125. package/test/TweeParser.test.js +79 -0
  126. package/test/TweeWriter/test1.twee +14 -9
  127. package/test/TweeWriter/test3.twee +7 -10
  128. package/test/TweeWriter/test4.twee +14 -0
  129. package/test/TweeWriter/test5.twee +20 -0
  130. package/test/TweeWriter.test.js +85 -0
  131. package/main.js +0 -106
  132. package/src/DirectoryReader.js +0 -107
  133. package/src/DirectoryWatcher.js +0 -92
  134. package/test/DirectoryReader/css/test.css +0 -3
  135. package/test/DirectoryReader1/js/Site.js +0 -1
  136. package/test/DirectoryReader2/error.js +0 -1
  137. package/test/DirectoryReader2/example.css +0 -3
  138. package/test/DirectoryReader2/index.twee +0 -6
  139. package/test/DirectoryReader3/twee/index.twee +0 -6
  140. package/test/DirectoryWatcher/example.txt +0 -0
  141. package/test/DirectoryWatcher/test.txt +0 -0
  142. package/test/DirectoryWatcher/test1.txt +0 -0
  143. package/test/HTMLWriter/test5.html +0 -48
  144. package/test/HTMLWriter/test7.html +0 -48
  145. package/test/HTMLWriter/test8.html +0 -48
  146. package/test/HTMLWriter/test9.html +0 -48
  147. package/test/StoryFormatParser/test.js +0 -2
  148. package/test/TweeParser/test.twee3 +0 -11
  149. package/test/TweeWriter/metatest.twee +0 -12
  150. package/test/TweeWriter/test2.twee +0 -15
  151. package/test/test.js +0 -722
@@ -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;
@@ -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,3 +0,0 @@
1
- body {
2
- background-color: green;
3
- }
@@ -1 +0,0 @@
1
- console.log("Test")
@@ -1 +0,0 @@
1
- console.log("Example!");
@@ -1,3 +0,0 @@
1
- body {
2
- color: red;
3
- }
@@ -1,6 +0,0 @@
1
- :: Start
2
- This is the beginning!
3
- Some new text. Some new text. Some new.
4
-
5
- :: StoryTitle
6
- This is the name of the story.
@@ -1,6 +0,0 @@
1
- :: Start
2
- This is the beginning!
3
- Some new text. Some new text. Some new.
4
-
5
- :: StoryTitle
6
- This is the name of the story.
File without changes
File without changes
File without changes