extwee 1.6.2 → 2.0.3

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 -24
  2. package/.github/workflows/nodejs.yml +24 -24
  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 -45
  12. package/src/FileReader.js +33 -35
  13. package/src/HTMLParser.js +343 -206
  14. package/src/HTMLWriter.js +231 -172
  15. package/src/Passage.js +202 -24
  16. package/src/Story.js +490 -122
  17. package/src/StoryFormat.js +300 -28
  18. package/src/StoryFormatParser.js +142 -59
  19. package/src/TweeParser.js +161 -207
  20. package/src/TweeWriter.js +98 -96
  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 +14 -11
  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 +369 -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 -32
  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 -114
  133. package/src/DirectoryWatcher.js +0 -87
  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 -736
package/package.json CHANGED
@@ -1,45 +1,59 @@
1
- {
2
- "name": "extwee",
3
- "version": "1.6.2",
4
- "description": "A Twee 3 compiler written in JS.",
5
- "author": "Dan Cox",
6
- "main": "index.js",
7
- "scripts": {
8
- "start": "node main.js",
9
- "test": "nyc mocha test/test.js",
10
- "lint": "eslint src/**/*.js --fix",
11
- "report-coverage": "nyc report --reporter=text-lcov > coverage.lcov"
12
- },
13
- "keywords": [
14
- "twine",
15
- "twee",
16
- "parser",
17
- "compiler"
18
- ],
19
- "license": "MIT",
20
- "dependencies": {
21
- "chokidar": "^3.3.0",
22
- "clean-css": "^4.2.3",
23
- "node-html-parser": "^1.2.3",
24
- "shelljs": "^0.8.3",
25
- "yargs": "^15.0.2"
26
- },
27
- "devDependencies": {
28
- "eslint": "^6.8.0",
29
- "eslint-config-standard": "^14.1.0",
30
- "eslint-plugin-import": "^2.20.1",
31
- "eslint-plugin-jsdoc": "^21.0.0",
32
- "eslint-plugin-node": "^11.0.0",
33
- "eslint-plugin-promise": "^4.2.1",
34
- "eslint-plugin-standard": "^4.0.1",
35
- "mocha": "^7.0.1",
36
- "nyc": "^15.0.0"
37
- },
38
- "repository": {
39
- "type": "git",
40
- "url": "https://github.com/videlais/extwee"
41
- },
42
- "bugs": {
43
- "url": "https://github.com/videlais/extwee/issues"
44
- }
45
- }
1
+ {
2
+ "name": "extwee",
3
+ "version": "2.0.3",
4
+ "description": "A Twee 3 compiler written in JS.",
5
+ "author": "Dan Cox",
6
+ "main": "index.js",
7
+ "bin": {
8
+ "extwee": "bin/extwee.js"
9
+ },
10
+ "scripts": {
11
+ "test": "jest --runInBand --coverage --colors",
12
+ "lint": "eslint ./src/**/*.js --fix",
13
+ "lint:test": "eslint ./test/*.test.js --fix",
14
+ "all": "npm run lint && npm run lint:test && npm run test"
15
+ },
16
+ "keywords": [
17
+ "twine",
18
+ "twee",
19
+ "parser",
20
+ "compiler"
21
+ ],
22
+ "license": "MIT",
23
+ "dependencies": {
24
+ "commander": "^4.1.1",
25
+ "node-html-parser": "^1.2.16",
26
+ "uuid": "^8.3.2"
27
+ },
28
+ "devDependencies": {
29
+ "@babel/cli": "^7.12.10",
30
+ "@babel/core": "^7.12.10",
31
+ "@babel/eslint-parser": "^7.12.1",
32
+ "@babel/eslint-plugin": "^7.12.1",
33
+ "@babel/plugin-proposal-class-properties": "^7.12.1",
34
+ "@babel/plugin-transform-runtime": "^7.12.10",
35
+ "@babel/polyfill": "^7.12.1",
36
+ "@babel/preset-env": "^7.12.11",
37
+ "babel-loader": "^8.2.2",
38
+ "core-js": "^3.8.1",
39
+ "eslint": "^7.7.0",
40
+ "eslint-config-standard": "^14.1.0",
41
+ "eslint-plugin-import": "^2.20.1",
42
+ "eslint-plugin-jest": "^24.1.3",
43
+ "eslint-plugin-jsdoc": "^30.2.1",
44
+ "eslint-plugin-node": "^11.0.0",
45
+ "eslint-plugin-promise": "^4.2.1",
46
+ "eslint-plugin-standard": "^4.0.1",
47
+ "jest": "^27.3.1",
48
+ "semver": "^5.7.1",
49
+ "shelljs": "^0.8.4"
50
+ },
51
+ "repository": {
52
+ "type": "git",
53
+ "url": "https://github.com/videlais/extwee"
54
+ },
55
+ "bugs": {
56
+ "url": "https://github.com/videlais/extwee/issues"
57
+ },
58
+ "type": "module"
59
+ }
package/src/FileReader.js CHANGED
@@ -1,35 +1,33 @@
1
- const fs = require('fs');
2
- /**
3
- * @class FileReader
4
- * @module FileReader
5
- */
6
- class FileReader {
7
- /**
8
- * @function FileReader
9
- * @class
10
- * @param {string} file - File to read
11
- */
12
- constructor (file) {
13
- this.contents = '';
14
- this.readFile(file);
15
- }
16
-
17
- /**
18
- * Read a text file
19
- *
20
- * @function readFile
21
- * @param {string} file - File to read
22
- * @returns {void}
23
- */
24
- readFile (file) {
25
- // Attempt to find the file
26
- if (fs.existsSync(file)) {
27
- // The file exists.
28
- this.contents = fs.readFileSync(file, 'utf8');
29
- } else {
30
- throw new Error('Error: File not found!');
31
- }
32
- }
33
- }
34
-
35
- module.exports = FileReader;
1
+ import fs from 'fs';
2
+ /**
3
+ * @class FileReader
4
+ * @module FileReader
5
+ */
6
+ export default class FileReader {
7
+ /**
8
+ * Read a text file
9
+ *
10
+ * @static
11
+ * @public
12
+ * @function readFile
13
+ * @memberof FileReader
14
+ * @param {string} file - Path of file to read
15
+ * @returns {string} Content of file
16
+ */
17
+ static read (file) {
18
+ // Setup default value
19
+ let contents = '';
20
+
21
+ // Attempt to find the file
22
+ if (fs.existsSync(file)) {
23
+ // The file exists.
24
+ contents = fs.readFileSync(file, 'utf8');
25
+ } else {
26
+ // Throw error if file does not exist
27
+ throw new Error('Error: File not found!');
28
+ }
29
+
30
+ // Return default or updated values
31
+ return contents;
32
+ }
33
+ }