extwee 2.0.0 → 2.0.4
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/bin/extwee.js +1 -1
- package/package.json +4 -5
- package/src/HTMLWriter.js +40 -5
- package/src/Story.js +31 -2
- package/src/TweeParser.js +2 -7
- package/test/CLI/test2.html +2 -2
- package/test/HTMLWriter/creator.html +2 -2
- package/test/HTMLWriter/test11.html +3 -3
- package/test/HTMLWriter/test2.html +1 -1
- package/test/HTMLWriter/test3.html +1 -1
- package/test/HTMLWriter/test4.html +2 -2
- package/test/HTMLWriter/test6.html +2 -2
- package/test/HTMLWriter.test.js +24 -14
- package/test/Passage.test.js +22 -22
- package/test/Roundtrip/round.html +2 -2
- package/test/Story.test.js +172 -85
- package/test/TweeParser.test.js +14 -14
- package/test/TweeWriter/test1.twee +1 -1
- package/test/TweeWriter/test5.twee +1 -1
- package/test/TweeWriter.test.js +15 -12
package/test/HTMLWriter.test.js
CHANGED
|
@@ -6,18 +6,18 @@ import HTMLWriter from '../src/HTMLWriter.js';
|
|
|
6
6
|
import Story from '../src/Story.js';
|
|
7
7
|
import Passage from '../src/Passage.js';
|
|
8
8
|
|
|
9
|
-
describe('HTMLWriter',
|
|
10
|
-
describe('#write()',
|
|
11
|
-
|
|
9
|
+
describe('HTMLWriter', () => {
|
|
10
|
+
describe('#write()', () => {
|
|
11
|
+
it('story should be instanceof Story', () => {
|
|
12
12
|
expect(() => { HTMLWriter.write('test/HTMLWriter/test.html', {}); }).toThrow();
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
it('storyFormat should be instanceof StoryFormat', () => {
|
|
16
16
|
const s = new Story();
|
|
17
17
|
expect(() => { HTMLWriter.write('test/HTMLWriter/test.html', s, {}); }).toThrow();
|
|
18
18
|
});
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
it('Read, write, and read HTML', () => {
|
|
21
21
|
// Read HTML.
|
|
22
22
|
const fr = FileReader.read('test/HTMLParser/twineExample3.html');
|
|
23
23
|
// Parse HTML.
|
|
@@ -44,7 +44,7 @@ describe('HTMLWriter', function () {
|
|
|
44
44
|
expect(s1Title).toBe(s2Title);
|
|
45
45
|
});
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
it('Should write one and two-tag passages', () => {
|
|
48
48
|
// Read HTML.
|
|
49
49
|
const fr = FileReader.read('test/HTMLWriter/TestTags.html');
|
|
50
50
|
// Parse HTML.
|
|
@@ -81,7 +81,7 @@ describe('HTMLWriter', function () {
|
|
|
81
81
|
expect(tags).toBe(tags2);
|
|
82
82
|
});
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
it('Should throw error if file path invalid', () => {
|
|
85
85
|
// Read HTML.
|
|
86
86
|
const fr = FileReader.read('test/HTMLParser/twineExample3.html');
|
|
87
87
|
// Parse HTML.
|
|
@@ -98,7 +98,7 @@ describe('HTMLWriter', function () {
|
|
|
98
98
|
}).toThrow();
|
|
99
99
|
});
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
it('Should not add optional position to passages', () => {
|
|
102
102
|
// Create Story.
|
|
103
103
|
const story = new Story();
|
|
104
104
|
// Add passage.
|
|
@@ -135,7 +135,7 @@ describe('HTMLWriter', function () {
|
|
|
135
135
|
});
|
|
136
136
|
});
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
it("Don't write creator if missing originally", () => {
|
|
139
139
|
// Create a new story.
|
|
140
140
|
const story = new Story();
|
|
141
141
|
|
|
@@ -174,7 +174,7 @@ describe('HTMLWriter', function () {
|
|
|
174
174
|
expect(story.creator).toBe(story2.creator);
|
|
175
175
|
});
|
|
176
176
|
|
|
177
|
-
|
|
177
|
+
it('Throw error if StoryTitle does not exist', () => {
|
|
178
178
|
// Create a new story.
|
|
179
179
|
const story = new Story();
|
|
180
180
|
|
|
@@ -191,7 +191,7 @@ describe('HTMLWriter', function () {
|
|
|
191
191
|
}).toThrow();
|
|
192
192
|
});
|
|
193
193
|
|
|
194
|
-
|
|
194
|
+
it('Throw error if no start or Start exists', () => {
|
|
195
195
|
// Create a new story.
|
|
196
196
|
const story = new Story();
|
|
197
197
|
|
|
@@ -212,7 +212,7 @@ describe('HTMLWriter', function () {
|
|
|
212
212
|
}).toThrow();
|
|
213
213
|
});
|
|
214
214
|
|
|
215
|
-
|
|
215
|
+
it('Write with Start without start', () => {
|
|
216
216
|
// Create a new story.
|
|
217
217
|
const story = new Story();
|
|
218
218
|
|
|
@@ -242,7 +242,7 @@ describe('HTMLWriter', function () {
|
|
|
242
242
|
expect(story2.start).toBe('Start');
|
|
243
243
|
});
|
|
244
244
|
|
|
245
|
-
|
|
245
|
+
it('Throw error if starting passage property does not exist', () => {
|
|
246
246
|
// Create a new story.
|
|
247
247
|
const story = new Story();
|
|
248
248
|
|
|
@@ -266,7 +266,7 @@ describe('HTMLWriter', function () {
|
|
|
266
266
|
}).toThrow();
|
|
267
267
|
});
|
|
268
268
|
|
|
269
|
-
|
|
269
|
+
it('Should correctly replace all instances of STORY_NAME', () => {
|
|
270
270
|
const fr = FileReader.read('test/HTMLWriter/example6.twee');
|
|
271
271
|
const story = TweeParser.parse(fr);
|
|
272
272
|
const storyFormatFile = FileReader.read('test/StoryFormatParser/format_doublename.js');
|
|
@@ -276,4 +276,14 @@ describe('HTMLWriter', function () {
|
|
|
276
276
|
expect(frh.indexOf('STORY_NAME')).toBe(-1);
|
|
277
277
|
});
|
|
278
278
|
});
|
|
279
|
+
|
|
280
|
+
describe('escape()', () => {
|
|
281
|
+
it('Should throw error if argument is not string', () => {
|
|
282
|
+
expect(() => { HTMLWriter.escape(1); }).toThrow();
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
it('Should escape HTML sequences', () => {
|
|
286
|
+
expect(HTMLWriter.escape('<script>alert("Hi!");</script>')).toBe('<script>alert("Hi!");</script>');
|
|
287
|
+
});
|
|
288
|
+
});
|
|
279
289
|
});
|
package/test/Passage.test.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import Passage from '../src/Passage.js';
|
|
2
2
|
|
|
3
|
-
describe('Passage',
|
|
4
|
-
describe('#constructor()',
|
|
5
|
-
test('Set default values',
|
|
3
|
+
describe('Passage', () => {
|
|
4
|
+
describe('#constructor()', () => {
|
|
5
|
+
test('Set default values', () => {
|
|
6
6
|
const p = new Passage();
|
|
7
7
|
expect(p.name).toBe('');
|
|
8
8
|
expect(p.tags).toHaveLength(0);
|
|
@@ -12,14 +12,14 @@ describe('Passage', function () {
|
|
|
12
12
|
});
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
-
describe('name',
|
|
16
|
-
test('Set name',
|
|
15
|
+
describe('name', () => {
|
|
16
|
+
test('Set name', () => {
|
|
17
17
|
const p = new Passage();
|
|
18
18
|
p.name = 'New';
|
|
19
19
|
expect(p.name).toBe('New');
|
|
20
20
|
});
|
|
21
21
|
|
|
22
|
-
test('Throw error if name is not String',
|
|
22
|
+
test('Throw error if name is not String', () => {
|
|
23
23
|
const p = new Passage();
|
|
24
24
|
expect(() => {
|
|
25
25
|
p.name = 1;
|
|
@@ -27,14 +27,14 @@ describe('Passage', function () {
|
|
|
27
27
|
});
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
-
describe('tags',
|
|
31
|
-
test('Set tags',
|
|
30
|
+
describe('tags', () => {
|
|
31
|
+
test('Set tags', () => {
|
|
32
32
|
const p = new Passage();
|
|
33
33
|
p.tags = ['tag'];
|
|
34
34
|
expect(p.tags).toHaveLength(1);
|
|
35
35
|
});
|
|
36
36
|
|
|
37
|
-
test('Throw error if tags is not Array',
|
|
37
|
+
test('Throw error if tags is not Array', () => {
|
|
38
38
|
const p = new Passage();
|
|
39
39
|
expect(() => {
|
|
40
40
|
p.tags = 1;
|
|
@@ -42,14 +42,14 @@ describe('Passage', function () {
|
|
|
42
42
|
});
|
|
43
43
|
});
|
|
44
44
|
|
|
45
|
-
describe('metadata',
|
|
46
|
-
test('Set metadata',
|
|
45
|
+
describe('metadata', () => {
|
|
46
|
+
test('Set metadata', () => {
|
|
47
47
|
const p = new Passage();
|
|
48
48
|
p.metadata = { position: '100,100' };
|
|
49
49
|
expect(p.metadata).toEqual({ position: '100,100' });
|
|
50
50
|
});
|
|
51
51
|
|
|
52
|
-
test('Throw error if metadata is not an Object',
|
|
52
|
+
test('Throw error if metadata is not an Object', () => {
|
|
53
53
|
const p = new Passage();
|
|
54
54
|
expect(() => {
|
|
55
55
|
p.metadata = 1;
|
|
@@ -57,14 +57,14 @@ describe('Passage', function () {
|
|
|
57
57
|
});
|
|
58
58
|
});
|
|
59
59
|
|
|
60
|
-
describe('text',
|
|
61
|
-
test('Set text',
|
|
60
|
+
describe('text', () => {
|
|
61
|
+
test('Set text', () => {
|
|
62
62
|
const p = new Passage();
|
|
63
63
|
p.text = 'New';
|
|
64
64
|
expect(p.text).toBe('New');
|
|
65
65
|
});
|
|
66
66
|
|
|
67
|
-
test('Throw error if text is not a String',
|
|
67
|
+
test('Throw error if text is not a String', () => {
|
|
68
68
|
const p = new Passage();
|
|
69
69
|
expect(() => {
|
|
70
70
|
p.text = 1;
|
|
@@ -72,14 +72,14 @@ describe('Passage', function () {
|
|
|
72
72
|
});
|
|
73
73
|
});
|
|
74
74
|
|
|
75
|
-
describe('pid',
|
|
76
|
-
test('Set PID',
|
|
75
|
+
describe('pid', () => {
|
|
76
|
+
test('Set PID', () => {
|
|
77
77
|
const p = new Passage();
|
|
78
78
|
p.pid = 12;
|
|
79
79
|
expect(p.pid).toBe(12);
|
|
80
80
|
});
|
|
81
81
|
|
|
82
|
-
test('Throw error if pid is not a Number',
|
|
82
|
+
test('Throw error if pid is not a Number', () => {
|
|
83
83
|
const p = new Passage();
|
|
84
84
|
expect(() => {
|
|
85
85
|
p.pid = [];
|
|
@@ -87,16 +87,16 @@ describe('Passage', function () {
|
|
|
87
87
|
});
|
|
88
88
|
});
|
|
89
89
|
|
|
90
|
-
describe('toString()',
|
|
91
|
-
test('Create name string',
|
|
90
|
+
describe('toString()', () => {
|
|
91
|
+
test('Create name string', () => {
|
|
92
92
|
const p = new Passage('Name', 'Test');
|
|
93
93
|
expect(p.toString()).toBe(':: Name\nTest\n\n');
|
|
94
94
|
});
|
|
95
|
-
test('Create tags string',
|
|
95
|
+
test('Create tags string', () => {
|
|
96
96
|
const p = new Passage('Name', 'Test', ['tags', 'another']);
|
|
97
97
|
expect(p.toString()).toBe(':: Name [tags another]\nTest\n\n');
|
|
98
98
|
});
|
|
99
|
-
test('Create metadata string',
|
|
99
|
+
test('Create metadata string', () => {
|
|
100
100
|
const p = new Passage('Name', 'Test', ['tags', 'another'], { position: '100,100' });
|
|
101
101
|
expect(p.toString()).toBe(':: Name [tags another] {"position":"100,100"}\nTest\n\n');
|
|
102
102
|
});
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
5
|
-
<title>
|
|
5
|
+
<title>Example1</title>
|
|
6
6
|
<style title="Twine CSS">@-webkit-keyframes appear{0%{opacity:0}to{opacity:1}}@keyframes appear{0%{opacity:0}to{opacity:1}}@-webkit-keyframes fade-in-out{0%,to{opacity:0}50%{opacity:1}}@keyframes fade-in-out{0%,to{opacity:0}50%{opacity:1}}@-webkit-keyframes rumble{50%{-webkit-transform:translateY(-0.2em);transform:translateY(-0.2em)}}@keyframes rumble{50%{-webkit-transform:translateY(-0.2em);transform:translateY(-0.2em)}}@-webkit-keyframes shudder{50%{-webkit-transform:translateX(0.2em);transform:translateX(0.2em)}}@keyframes shudder{50%{-webkit-transform:translateX(0.2em);transform:translateX(0.2em)}}@-webkit-keyframes box-flash{0%{background-color:white;color:white}}@keyframes box-flash{0%{background-color:white;color:white}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(0, 0);transform:scale(0, 0)}20%{-webkit-transform:scale(1.2, 1.2);transform:scale(1.2, 1.2)}40%{-webkit-transform:scale(0.9, 0.9);transform:scale(0.9, 0.9)}60%{-webkit-transform:scale(1.05, 1.05);transform:scale(1.05, 1.05)}80%{-webkit-transform:scale(0.925, 0.925);transform:scale(0.925, 0.925)}to{-webkit-transform:scale(1, 1);transform:scale(1, 1)}}@keyframes pulse{0%{-webkit-transform:scale(0, 0);transform:scale(0, 0)}20%{-webkit-transform:scale(1.2, 1.2);transform:scale(1.2, 1.2)}40%{-webkit-transform:scale(0.9, 0.9);transform:scale(0.9, 0.9)}60%{-webkit-transform:scale(1.05, 1.05);transform:scale(1.05, 1.05)}80%{-webkit-transform:scale(0.925, 0.925);transform:scale(0.925, 0.925)}to{-webkit-transform:scale(1, 1);transform:scale(1, 1)}}@-webkit-keyframes shudder-in{0%, to{-webkit-transform:translateX(0em);transform:translateX(0em)}5%, 25%, 45%{-webkit-transform:translateX(-1em);transform:translateX(-1em)}15%, 35%, 55%{-webkit-transform:translateX(1em);transform:translateX(1em)}65%{-webkit-transform:translateX(-0.6em);transform:translateX(-0.6em)}75%{-webkit-transform:translateX(0.6em);transform:translateX(0.6em)}85%{-webkit-transform:translateX(-0.2em);transform:translateX(-0.2em)}95%{-webkit-transform:translateX(0.2em);transform:translateX(0.2em)}}@keyframes shudder-in{0%, to{-webkit-transform:translateX(0em);transform:translateX(0em)}5%, 25%, 45%{-webkit-transform:translateX(-1em);transform:translateX(-1em)}15%, 35%, 55%{-webkit-transform:translateX(1em);transform:translateX(1em)}65%{-webkit-transform:translateX(-0.6em);transform:translateX(-0.6em)}75%{-webkit-transform:translateX(0.6em);transform:translateX(0.6em)}85%{-webkit-transform:translateX(-0.2em);transform:translateX(-0.2em)}95%{-webkit-transform:translateX(0.2em);transform:translateX(0.2em)}}@-webkit-keyframes rumble-in{0%, to{-webkit-transform:translateY(0em);transform:translateY(0em)}5%, 25%, 45%{-webkit-transform:translateY(-1em);transform:translateY(-1em)}15%, 35%, 55%{-webkit-transform:translateY(1em);transform:translateY(1em)}65%{-webkit-transform:translateY(-0.6em);transform:translateY(-0.6em)}75%{-webkit-transform:translateY(0.6em);transform:translateY(0.6em)}85%{-webkit-transform:translateY(-0.2em);transform:translateY(-0.2em)}95%{-webkit-transform:translateY(0.2em);transform:translateY(0.2em)}}@keyframes rumble-in{0%, to{-webkit-transform:translateY(0em);transform:translateY(0em)}5%, 25%, 45%{-webkit-transform:translateY(-1em);transform:translateY(-1em)}15%, 35%, 55%{-webkit-transform:translateY(1em);transform:translateY(1em)}65%{-webkit-transform:translateY(-0.6em);transform:translateY(-0.6em)}75%{-webkit-transform:translateY(0.6em);transform:translateY(0.6em)}85%{-webkit-transform:translateY(-0.2em);transform:translateY(-0.2em)}95%{-webkit-transform:translateY(0.2em);transform:translateY(0.2em)}}@-webkit-keyframes slide-right{0%{-webkit-transform:translateX(-100vw);transform:translateX(-100vw)}}@keyframes slide-right{0%{-webkit-transform:translateX(-100vw);transform:translateX(-100vw)}}@-webkit-keyframes slide-left{0%{-webkit-transform:translateX(100vw);transform:translateX(100vw)}}@keyframes slide-left{0%{-webkit-transform:translateX(100vw);transform:translateX(100vw)}}@-webkit-keyframes slide-up{0%{-webkit-transform:translateY(100vh);transform:translateY(100vh)}}@keyframes slide-up{0%{-webkit-transform:translateY(100vh);transform:translateY(100vh)}}@-webkit-keyframes slide-down{0%{-webkit-transform:translateY(-100vh);transform:translateY(-100vh)}}@keyframes slide-down{0%{-webkit-transform:translateY(-100vh);transform:translateY(-100vh)}}@-webkit-keyframes flicker{0%,29%,31%,63%,65%,77%,79%,86%,88%,91%,93%{opacity:0}30%{opacity:0.2}64%{opacity:0.4}78%{opacity:0.6}87%{opacity:0.8}92%, to{opacity:1}}@keyframes flicker{0%,29%,31%,63%,65%,77%,79%,86%,88%,91%,93%{opacity:0}30%{opacity:0.2}64%{opacity:0.4}78%{opacity:0.6}87%{opacity:0.8}92%, to{opacity:1}}.debug-mode tw-expression[type=hookref]{background-color:rgba(115,123,140,0.15)}.debug-mode tw-expression[type=hookref]::after{font-size:0.8rem;padding-left:0.2rem;padding-right:0.2rem;vertical-align:top;content:"?" attr(name)}.debug-mode tw-expression[type=variable]{background-color:rgba(140,128,115,0.15)}.debug-mode tw-expression[type=variable]::after{font-size:0.8rem;padding-left:0.2rem;padding-right:0.2rem;vertical-align:top;content:"$" attr(name)}.debug-mode tw-expression[type=tempVariable]{background-color:rgba(140,128,115,0.15)}.debug-mode tw-expression[type=tempVariable]::after{font-size:0.8rem;padding-left:0.2rem;padding-right:0.2rem;vertical-align:top;content:"_" attr(name)}.debug-mode tw-expression[type=macro]:nth-of-type(4n+0){background-color:rgba(136,153,102,0.15)}.debug-mode tw-expression[type=macro]:nth-of-type(2n+1){background-color:rgba(102,153,102,0.15)}.debug-mode tw-expression[type=macro]:nth-of-type(4n+2){background-color:rgba(102,153,136,0.15)}.debug-mode tw-expression[type=macro][name="display"]{background-color:rgba(0,170,255,0.1) !important}.debug-mode tw-expression[type=macro][name="if"],.debug-mode tw-expression[type=macro][name="if"]+tw-hook:not([name]),.debug-mode tw-expression[type=macro][name="unless"],.debug-mode tw-expression[type=macro][name="unless"]+tw-hook:not([name]),.debug-mode tw-expression[type=macro][name="elseif"],.debug-mode tw-expression[type=macro][name="elseif"]+tw-hook:not([name]),.debug-mode tw-expression[type=macro][name="else"],.debug-mode tw-expression[type=macro][name="else"]+tw-hook:not([name]){background-color:rgba(0,255,0,0.1) !important}.debug-mode tw-expression[type=macro].false{background-color:rgba(255,0,0,0.2) !important}.debug-mode tw-expression[type=macro].false+tw-hook:not([name]){display:none}.debug-mode tw-expression[type=macro][name="a"],.debug-mode tw-expression[type=macro][name="array"],.debug-mode tw-expression[type=macro][name="datamap"],.debug-mode tw-expression[type=macro][name="dataset"],.debug-mode tw-expression[type=macro][name="colour"],.debug-mode tw-expression[type=macro][name="color"],.debug-mode tw-expression[type=macro][name="num"],.debug-mode tw-expression[type=macro][name="number"],.debug-mode tw-expression[type=macro][name="text"],.debug-mode tw-expression[type=macro][name="print"]{background-color:rgba(255,255,0,0.2) !important}.debug-mode tw-expression[type=macro][name="put"],.debug-mode tw-expression[type=macro][name="set"]{background-color:rgba(255,128,0,0.2) !important}.debug-mode tw-expression[type=macro][name="script"]{background-color:rgba(255,191,0,0.2) !important}.debug-mode tw-expression[type=macro][name="style"]{background-color:rgba(185,198,198,0.2) !important}.debug-mode tw-expression[type=macro][name^="link"],.debug-mode tw-expression[type=macro][name^="click"],.debug-mode tw-expression[type=macro][name^="mouseover"],.debug-mode tw-expression[type=macro][name^="mouseout"]{background-color:rgba(128,223,32,0.2) !important}.debug-mode tw-expression[type=macro][name^="replace"],.debug-mode tw-expression[type=macro][name^="prepend"],.debug-mode tw-expression[type=macro][name^="append"],.debug-mode tw-expression[type=macro][name^="remove"]{background-color:rgba(223,96,32,0.2) !important}.debug-mode tw-expression[type=macro][name="live"]{background-color:rgba(32,96,223,0.2) !important}.debug-mode tw-expression[type=macro]::before{content:"(" attr(name) ":)";padding:0 0.5rem;font-size:1rem;vertical-align:middle;line-height:normal;background-color:inherit;border:1px solid rgba(255,255,255,0.5)}.debug-mode tw-hook{background-color:rgba(0,85,255,0.1) !important}.debug-mode tw-hook::before{font-size:0.8rem;padding-left:0.2rem;padding-right:0.2rem;vertical-align:top;content:"["}.debug-mode tw-hook::after{font-size:0.8rem;padding-left:0.2rem;padding-right:0.2rem;vertical-align:top;content:"]"}.debug-mode tw-hook[name]::after{font-size:0.8rem;padding-left:0.2rem;padding-right:0.2rem;vertical-align:top;content:"]<" attr(name) "|"}.debug-mode tw-pseudo-hook{background-color:rgba(255,170,0,0.1) !important}.debug-mode tw-collapsed::before{font-size:0.8rem;padding-left:0.2rem;padding-right:0.2rem;vertical-align:top;content:"{"}.debug-mode tw-collapsed::after{font-size:0.8rem;padding-left:0.2rem;padding-right:0.2rem;vertical-align:top;content:"}"}.debug-mode tw-verbatim::before,.debug-mode tw-verbatim::after{font-size:0.8rem;padding-left:0.2rem;padding-right:0.2rem;vertical-align:top;content:"`"}.debug-mode tw-align[style*="text-align: center"]{background:linear-gradient(to right, rgba(255,204,189,0) 0%, rgba(255,204,189,0.25) 50%, rgba(255,204,189,0) 100%)}.debug-mode tw-align[style*="text-align: left"]{background:linear-gradient(to right, rgba(255,204,189,0.25) 0%, rgba(255,204,189,0) 100%)}.debug-mode tw-align[style*="text-align: right"]{background:linear-gradient(to right, rgba(255,204,189,0) 0%, rgba(255,204,189,0.25) 100%)}.debug-mode tw-column{background-color:rgba(189,228,255,0.2)}.debug-mode tw-enchantment{animation:enchantment 0.5s infinite;-webkit-animation:enchantment 0.5s infinite;border:1px solid}.debug-mode tw-link::after,.debug-mode tw-broken-link::after{font-size:0.8rem;padding-left:0.2rem;padding-right:0.2rem;vertical-align:top;content:attr(passage-name)}.debug-mode tw-include{background-color:rgba(204,128,51,0.1)}.debug-mode tw-include::before{font-size:0.8rem;padding-left:0.2rem;padding-right:0.2rem;vertical-align:top;content:attr(type) ' "' attr(title) '"'}@keyframes enchantment{0%,to{border-color:#ffb366}50%{border-color:#6fc}}@-webkit-keyframes enchantment{0%,to{border-color:#ffb366}50%{border-color:#6fc}}tw-debugger{position:fixed;box-sizing:border-box;bottom:0;right:0;z-index:999999;min-width:10em;min-height:1em;padding:1em;font-size:1.25em;font-family:sans-serif;border-left:solid #000 2px;border-top:solid #000 2px;border-top-left-radius:.5em;background:#fff;opacity:1}tw-debugger select{margin-right:1em;width:12em}tw-debugger button{border-radius:3px;border:solid #999 1px;margin:auto 4px;background-color:#fff;font-size:inherit}tw-debugger button.enabled{background-color:#eee;box-shadow:inset #ddd 3px 5px 0.5em}tw-debugger .variables{display:-webkit-box;display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-webkit-box-orient:vertical;-webkit-flex-direction:column;-moz-flex-direction:column;-ms-flex-direction:column;flex-direction:column;position:absolute;bottom:100%;left:-2px;right:0;padding:1em;max-height:40vh;overflow-y:scroll;overflow-x:hidden;z-index:999998;background:#fff;border:inherit;border-top-left-radius:.5em;border-bottom-left-radius:.5em;font-size:0.8em}tw-debugger .variables:empty,tw-debugger .variables[hidden]{display:none}tw-debugger .variables .variable-row{display:-webkit-box;display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-webkit-box-orient:horizontal;-webkit-flex-direction:row;-moz-flex-direction:row;-ms-flex-direction:row;flex-direction:row;flex-shrink:0}tw-debugger .variables .variable-row:nth-child(2n){background:#EEE}tw-debugger .variables .variable-name{display:inline-block;width:50%}tw-debugger .variables .variable-name::before{content:"$"}tw-debugger .variables .variable-name.temporary::before{content:"_"}tw-debugger .variables .variable-name .temporary-variable-scope{opacity:0.8;font-size:0.75em}tw-debugger .variables .variable-name .temporary-variable-scope::before{content:" in "}tw-debugger .variables .variable-value{display:inline-block;width:50%}tw-link,.link,tw-icon,.enchantment-clickblock{cursor:pointer}tw-link,.enchantment-link{color:#4169E1;font-weight:bold;text-decoration:none;transition:color 0.2s ease-in-out}tw-enchantment[style^="color"] tw-link:not(:hover),tw-enchantment[style*=" color"] tw-link:not(:hover),tw-enchantment[style^="color"] .enchantment-link:not(:hover),tw-enchantment[style*=" color"] .enchantment-link:not(:hover){color:inherit}tw-link:hover,.enchantment-link:hover{color:#00bfff}tw-link:active,.enchantment-link:active{color:#DD4B39}.visited{color:#6941e1}tw-enchantment[style^="color"] .visited:not(:hover),tw-enchantment[style*=" color"] .visited:not(:hover){color:inherit}.visited:hover{color:#E3E}tw-broken-link{color:#993333;border-bottom:2px solid #993333;cursor:not-allowed}tw-enchantment[style^="color"] tw-broken-link:not(:hover),tw-enchantment[style*=" color"] tw-broken-link:not(:hover){color:inherit}.enchantment-mouseover{border-bottom:1px dashed #666}.enchantment-mouseout{border:rgba(64,149,191,0.25) 1px solid}.enchantment-mouseout:hover{background-color:rgba(64,149,191,0.25);border:transparent 1px solid;border-radius:0.2em}.enchantment-clickblock{box-shadow:inset 0 0 0 0.5vmax;display:block;color:rgba(65,105,225,0.5);transition:color 0.2s ease-in-out}.enchantment-clickblock:hover{color:rgba(0,191,255,0.5)}.enchantment-clickblock:active{color:rgba(222,78,59,0.5)}html{margin:0;height:100%;overflow-x:hidden}*,:before,:after{position:relative;box-sizing:inherit}body{margin:0;height:100%}tw-storydata{display:none}tw-story{display:-webkit-box;display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-webkit-box-orient:vertical;-webkit-flex-direction:column;-moz-flex-direction:column;-ms-flex-direction:column;flex-direction:column;font:100% Georgia, serif;box-sizing:border-box;width:100%;min-height:100%;font-size:1.5em;line-height:1.5em;padding:5% 20%;margin:0;overflow:hidden;background-color:#000;color:#fff}tw-passage{display:block}br+br{display:block;height:0;margin:0.8ex 0}tw-sidebar{left:-5em;width:3em;position:absolute;text-align:center;display:block}tw-icon{display:block;margin:0.5em 0;opacity:0.2;font-size:2.75em}tw-icon:hover{opacity:0.4}tw-hook:empty,tw-expression:empty{display:none}tw-error{display:inline-block;border-radius:0.2em;padding:0.2em;font-size:1rem;cursor:help}tw-error.error{background-color:rgba(223,58,190,0.4);color:#fff}tw-error.warning{background-color:rgba(223,140,58,0.4);color:#fff;display:none}.debug-mode tw-error.warning{display:inline}tw-error-explanation{display:block;font-size:0.8rem;line-height:1rem}tw-error-explanation-button{cursor:pointer;line-height:0em;border-radius:1px;border:1px solid black;font-size:0.8rem;margin:0 0.4rem;opacity:0.5}tw-error-explanation-button .folddown-arrowhead{display:inline-block}tw-notifier{border-radius:0.2em;padding:0.2em;font-size:1rem;background-color:rgba(223,182,58,0.4);display:none}.debug-mode tw-notifier{display:inline}tw-notifier::before{content:attr(message)}tw-colour{border:1px solid black;display:inline-block;width:1em;height:1em}select{background-color:transparent;font:inherit;border-style:solid;padding:2px}select:not([disabled]){color:inherit}h1{font-size:3em}h2{font-size:2.25em}h3{font-size:1.75em}h1,h2,h3,h4,h5,h6{line-height:1em;margin:0.3em 0 0.6em 0}pre{font-size:1rem}small{font-size:70%}big{font-size:120%}mark{color:rgba(0,0,0,0.6);background-color:#ff9}ins{color:rgba(0,0,0,0.6);background-color:rgba(255,242,204,0.5);border-radius:0.5em;box-shadow:0em 0em 0.2em #ffe699;text-decoration:none}center{text-align:center;margin:0 auto;width:60%}blink{text-decoration:none;animation:fade-in-out 1s steps(1, end) infinite alternate;-webkit-animation:fade-in-out 1s steps(1, end) infinite alternate}tw-align{display:block}tw-columns{display:-webkit-box;display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-webkit-box-orient:horizontal;-webkit-flex-direction:row;-moz-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;-moz-justify-content:space-between;justify-content:space-between}tw-outline{color:white;text-shadow:-1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000}tw-shadow{text-shadow:0.08em 0.08em 0.08em #000}tw-emboss{text-shadow:0.08em 0.08em 0em #000;color:white}tw-condense{letter-spacing:-0.08em}tw-expand{letter-spacing:0.1em}tw-blur{color:transparent;text-shadow:0em 0em 0.08em #000}tw-blurrier{color:transparent;text-shadow:0em 0em 0.2em #000}tw-blurrier::selection{background-color:transparent;color:transparent}tw-blurrier::-moz-selection{background-color:transparent;color:transparent}tw-smear{color:transparent;text-shadow:0em 0em 0.02em rgba(0,0,0,0.75),-0.2em 0em 0.5em rgba(0,0,0,0.5),0.2em 0em 0.5em rgba(0,0,0,0.5)}tw-mirror{display:inline-block;transform:scaleX(-1);-webkit-transform:scaleX(-1)}tw-upside-down{display:inline-block;transform:scaleY(-1);-webkit-transform:scaleY(-1)}tw-fade-in-out{text-decoration:none;animation:fade-in-out 2s ease-in-out infinite alternate;-webkit-animation:fade-in-out 2s ease-in-out infinite alternate}tw-rumble{-webkit-animation:rumble linear 0.1s 0s infinite;animation:rumble linear 0.1s 0s infinite;display:inline-block}tw-shudder{-webkit-animation:shudder linear 0.1s 0s infinite;animation:shudder linear 0.1s 0s infinite;display:inline-block}tw-shudder-in{animation:shudder-in 1s ease-out;-webkit-animation:shudder-in 1s ease-out}.transition-in{-webkit-animation:appear 0ms step-start;animation:appear 0ms step-start}.transition-out{-webkit-animation:appear 0ms step-end;animation:appear 0ms step-end}[data-t8n^=dissolve].transition-in{-webkit-animation:appear .8s;animation:appear .8s}[data-t8n^=dissolve].transition-out{-webkit-animation:appear .8s reverse;animation:appear .8s reverse}[data-t8n^=shudder].transition-in{display:inline-block;-webkit-animation:shudder-in .8s;animation:shudder-in .8s}[data-t8n^=shudder].transition-out{display:inline-block;-webkit-animation:shudder-in .8s reverse;animation:shudder-in .8s reverse}[data-t8n^=rumble].transition-in{display:inline-block;-webkit-animation:rumble-in .8s;animation:rumble-in .8s}[data-t8n^=rumble].transition-out{display:inline-block;-webkit-animation:rumble-in .8s reverse;animation:rumble-in .8s reverse}[data-t8n^=boxflash].transition-in{-webkit-animation:box-flash .8s;animation:box-flash .8s}[data-t8n^=pulse].transition-in{-webkit-animation:pulse .8s;animation:pulse .8s;display:inline-block}[data-t8n^=pulse].transition-out{-webkit-animation:pulse .8s reverse;animation:pulse .8s reverse;display:inline-block}[data-t8n^=slideleft].transition-in{-webkit-animation:slide-left .8s;animation:slide-left .8s;display:inline-block}[data-t8n^=slideleft].transition-out{-webkit-animation:slide-right .8s reverse;animation:slide-right .8s reverse;display:inline-block}[data-t8n^=slideright].transition-in{-webkit-animation:slide-right .8s;animation:slide-right .8s;display:inline-block}[data-t8n^=slideright].transition-out{-webkit-animation:slide-left .8s reverse;animation:slide-left .8s reverse;display:inline-block}[data-t8n^=slideup].transition-in{-webkit-animation:slide-up .8s;animation:slide-up .8s;display:inline-block}[data-t8n^=slideup].transition-out{-webkit-animation:slide-down .8s reverse;animation:slide-down .8s reverse;display:inline-block}[data-t8n^=slidedown].transition-in{-webkit-animation:slide-down .8s;animation:slide-down .8s;display:inline-block}[data-t8n^=slidedown].transition-out{-webkit-animation:slide-up .8s reverse;animation:slide-up .8s reverse;display:inline-block}[data-t8n^=flicker].transition-in{-webkit-animation:flicker .8s;animation:flicker .8s}[data-t8n^=flicker].transition-out{-webkit-animation:flicker .8s reverse;animation:flicker .8s reverse}[data-t8n$=fast]{animation-duration:.4s;-webkit-animation-duration:.4s}[data-t8n$=slow]{animation-duration:1.6s;-webkit-animation-duration:1.6s}
|
|
7
7
|
</style>
|
|
8
8
|
</head>
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
<tw-story></tw-story>
|
|
13
13
|
|
|
14
|
-
<tw-storydata name="Example1" startnode="4" creator="extwee" creator-version="2.0.
|
|
14
|
+
<tw-storydata name="Example1" startnode="4" creator="extwee" creator-version="2.0.3" ifid="C4A583B9-6238-4C4B-A8BA-E6C8F4F937C8" zoom="0" format="Harlowe" format-version="3.0.2" options hidden>
|
|
15
15
|
<style role="stylesheet" id="twine-user-stylesheet" type="text/twine-css"></style>
|
|
16
16
|
<script role="script" id="twine-user-script" type="text/twine-javascript"></script>
|
|
17
17
|
<tw-passagedata pid="1" name="StoryTitle">Example1</tw-passagedata>
|