jssm 5.45.0 → 5.47.0
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/dist/es6/jssm.d.ts +3 -1
- package/dist/es6/jssm.js +13 -6
- package/dist/es6/jssm_types.d.ts +6 -5
- package/dist/es6/version.js +1 -1
- package/dist/jssm.es5.cjs.js +1 -1
- package/jssm.d.ts +3 -1
- package/jssm_types.d.ts +6 -5
- package/package.json +2 -3
- package/.codeclimate.yml +0 -22
- package/.editorconfig +0 -12
- package/.eslintrc +0 -20
- package/.nycrc +0 -6
- package/.travis.yml +0 -9
- package/dist/jssm.es5.iife.js +0 -1
- package/jest-spec.config.js +0 -27
- package/jest-stoch.config.js +0 -27
- package/rollup.config.iife.js +0 -44
- package/rollup.config.js +0 -44
- package/src/demo/index.html +0 -38
- package/src/demo/style.css +0 -2
- package/src/ts/jssm-dot.peg +0 -928
- package/src/ts/jssm.ts +0 -1239
- package/src/ts/jssm_types.ts +0 -385
- package/src/ts/jssm_util.ts +0 -117
- package/src/ts/tests/actions.spec.ts +0 -167
- package/src/ts/tests/arrange.spec.ts +0 -72
- package/src/ts/tests/arrange.stoch.ts +0 -4
- package/src/ts/tests/array_box_if_string.spec.ts +0 -30
- package/src/ts/tests/array_transitions.spec.ts +0 -129
- package/src/ts/tests/arrow unicode.spec.ts +0 -88
- package/src/ts/tests/arrow.spec.ts +0 -124
- package/src/ts/tests/colors.spec.ts +0 -58
- package/src/ts/tests/comment.spec.ts +0 -134
- package/src/ts/tests/compile.spec.ts +0 -79
- package/src/ts/tests/constants.spec.ts +0 -98
- package/src/ts/tests/cycles.spec.ts +0 -153
- package/src/ts/tests/dot_preamble.spec.ts +0 -16
- package/src/ts/tests/embedded_sm.spec.ts +0 -36
- package/src/ts/tests/flow.spec.ts +0 -22
- package/src/ts/tests/forced transitions.spec.ts +0 -26
- package/src/ts/tests/general.spec.ts +0 -933
- package/src/ts/tests/graph node lists.spec.ts +0 -21
- package/src/ts/tests/histo.spec.ts +0 -24
- package/src/ts/tests/hooks.spec.ts +0 -209
- package/src/ts/tests/language.spec.ts +0 -37
- package/src/ts/tests/language_data/belarussian.json +0 -14
- package/src/ts/tests/language_data/bengali.json +0 -16
- package/src/ts/tests/language_data/emoji.json +0 -22
- package/src/ts/tests/language_data/english.json +0 -17
- package/src/ts/tests/language_data/french.json +0 -17
- package/src/ts/tests/language_data/german.json +0 -17
- package/src/ts/tests/language_data/hebrew.json +0 -16
- package/src/ts/tests/language_data/portuguese.json +0 -13
- package/src/ts/tests/language_data/russian.json +0 -13
- package/src/ts/tests/language_data/spanish.json +0 -17
- package/src/ts/tests/language_data/ukrainian.json +0 -19
- package/src/ts/tests/layout.spec.ts +0 -29
- package/src/ts/tests/machine_attributes.spec.ts +0 -398
- package/src/ts/tests/machine_name.spec.ts +0 -14
- package/src/ts/tests/named lists.spec.ts +0 -24
- package/src/ts/tests/nominated states.spec.ts +0 -133
- package/src/ts/tests/parse actions.spec.ts +0 -32
- package/src/ts/tests/parse.spec.ts +0 -94
- package/src/ts/tests/probability.spec.ts +0 -146
- package/src/ts/tests/r639.spec.ts +0 -27
- package/src/ts/tests/sample_select.spec.ts +0 -173
- package/src/ts/tests/seq.spec.ts +0 -14
- package/src/ts/tests/seq.stoch.ts +0 -83
- package/src/ts/tests/shapes.spec.ts +0 -63
- package/src/ts/tests/sm_tag.spec.ts +0 -37
- package/src/ts/tests/special characters.spec.ts +0 -39
- package/src/ts/tests/state_declaration.spec.ts +0 -214
- package/src/ts/tests/state_style.spec.ts +0 -82
- package/src/ts/tests/stop light.spec.ts +0 -157
- package/src/ts/tests/stripes.spec.ts +0 -52
- package/src/ts/tests/theme.spec.ts +0 -45
- package/src/ts/tests/weighted_histo_key.spec.ts +0 -22
- package/src/ts/tests/weighted_rand_select.spec.ts +0 -27
- package/src/ts/tests/weighted_sample_select.spec.ts +0 -24
- package/src/ts/version.ts +0 -3
- package/tree.txt +0 -1794
- package/tsconfig.json +0 -27
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
/* eslint-disable max-len */
|
|
3
|
-
|
|
4
|
-
import { sm } from '../jssm';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
describe('graph node lists', () => {
|
|
11
|
-
|
|
12
|
-
test('start states don\'t throw', () => expect( () => { const _a = sm`start_states: [a b c]; a->b->c->d;`; }).not.toThrow() );
|
|
13
|
-
test('end states don\'t throw', () => expect( () => { const _a = sm`end_states: [a b c]; a->b->c->d;`; }).not.toThrow() );
|
|
14
|
-
|
|
15
|
-
test.todo('start node overrides');
|
|
16
|
-
|
|
17
|
-
// comeback whargarbl
|
|
18
|
-
// const overrider = make(` a->b->c; start_nodes: [c]; `);
|
|
19
|
-
// it('start nodes override initial node', t => t.is(0, () => {}) );
|
|
20
|
-
|
|
21
|
-
});
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import * as jssm from '../jssm';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
describe('histograph/1', () => {
|
|
9
|
-
|
|
10
|
-
test('([]) generates Map()', () =>
|
|
11
|
-
expect( jssm.histograph([]) ).toEqual( new Map( ) ) );
|
|
12
|
-
|
|
13
|
-
test('([1]) generates Map([[1,1]])', () =>
|
|
14
|
-
expect( jssm.histograph([1]) ).toEqual( new Map( [[1,1]] ) ) );
|
|
15
|
-
|
|
16
|
-
test('([1,2]) generates Map([[1,1],[2,1]])', () =>
|
|
17
|
-
expect( jssm.histograph([1,2]) ).toEqual( new Map( [[1,1],[2,1]] ) ) );
|
|
18
|
-
|
|
19
|
-
test('([1,1,2]) generates Map([[1,2],[2,1]])', () =>
|
|
20
|
-
expect( jssm.histograph([1,1,2]) ).toEqual( new Map( [[1,2],[2,1]] ) ) );
|
|
21
|
-
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
// stochable
|
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { sm } from '../jssm';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
describe('Hooks open and closed in grammar', () => {
|
|
9
|
-
|
|
10
|
-
test.todo('Hooks open doesn\'t throw' /*, () => {
|
|
11
|
-
|
|
12
|
-
expect( () => { const _foo = sm`hooks: open; a -> b;`; })
|
|
13
|
-
.not.toThrow();
|
|
14
|
-
|
|
15
|
-
} */);
|
|
16
|
-
|
|
17
|
-
test.todo('Hooks closed doesn\'t throw' /*, () => {
|
|
18
|
-
|
|
19
|
-
expect( () => { const _foo = sm`hooks: closed; a -> b;`; })
|
|
20
|
-
.not.toThrow();
|
|
21
|
-
|
|
22
|
-
} */);
|
|
23
|
-
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
describe('Basic hooks on API callpoint', () => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
test('Setting a regular hook doesn\'t throw', () => {
|
|
34
|
-
|
|
35
|
-
expect( () => {
|
|
36
|
-
const _foo = sm`a -> b;`;
|
|
37
|
-
_foo.set_hook({ from: 'a', to: 'b', handler: () => console.log('hi'), kind: 'hook' })
|
|
38
|
-
})
|
|
39
|
-
.not.toThrow();
|
|
40
|
-
|
|
41
|
-
} );
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
test('Setting a named hook doesn\'t throw', () => {
|
|
45
|
-
|
|
46
|
-
expect( () => {
|
|
47
|
-
const _foo = sm`a 'foo' -> b;`;
|
|
48
|
-
_foo.set_hook({ from: 'a', to: 'b', handler: () => console.log('hi'), kind: 'named', action: 'foo' })
|
|
49
|
-
})
|
|
50
|
-
.not.toThrow();
|
|
51
|
-
|
|
52
|
-
} );
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
test('Setting a kind of hook that doesn\'t exist throws', () => {
|
|
56
|
-
|
|
57
|
-
expect( () => {
|
|
58
|
-
const _foo = sm`a 'foo' -> b;`;
|
|
59
|
-
_foo.set_hook({ from: 'a', to: 'b', handler: () => console.log('hi'), kind: 'Smaug the Merciless', action: 'foo' } as any)
|
|
60
|
-
})
|
|
61
|
-
.toThrow();
|
|
62
|
-
|
|
63
|
-
} );
|
|
64
|
-
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
test('Basic hook rejection works', () => {
|
|
72
|
-
|
|
73
|
-
const foo = sm`a => b;`;
|
|
74
|
-
|
|
75
|
-
foo.set_hook({ from: 'a', to: 'b', kind: 'hook', handler: () => false });
|
|
76
|
-
expect(foo.transition('b')).toBe(false);
|
|
77
|
-
expect(foo.state()).toBe('a');
|
|
78
|
-
|
|
79
|
-
foo.set_hook({ from: 'a', to: 'b', kind: 'hook', handler: () => true });
|
|
80
|
-
expect(foo.transition('b')).toBe(true);
|
|
81
|
-
expect(foo.state()).toBe('b');
|
|
82
|
-
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
test('Basic hook rejection works on forced edges', () => {
|
|
90
|
-
|
|
91
|
-
const foo = sm`a ~> b ~> c;`;
|
|
92
|
-
|
|
93
|
-
foo.set_hook({ from: 'a', to: 'b', kind: 'hook', handler: () => false });
|
|
94
|
-
expect(foo.force_transition('b')).toBe(false);
|
|
95
|
-
expect(foo.state()).toBe('a');
|
|
96
|
-
|
|
97
|
-
foo.set_hook({ from: 'a', to: 'b', kind: 'hook', handler: () => true });
|
|
98
|
-
expect(foo.force_transition('b')).toBe(true);
|
|
99
|
-
expect(foo.state()).toBe('b');
|
|
100
|
-
|
|
101
|
-
// line completion for when a hook lookup finds nothing
|
|
102
|
-
expect(foo.force_transition('c')).toBe(true);
|
|
103
|
-
expect(foo.state()).toBe('c');
|
|
104
|
-
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
test('Named hook rejection works', () => {
|
|
112
|
-
|
|
113
|
-
const foo = sm`a 'foo' => b;`;
|
|
114
|
-
|
|
115
|
-
foo.set_hook({ from: 'a', to: 'b', action: 'foo', kind: 'named', handler: () => false });
|
|
116
|
-
expect(foo.action('foo')).toBe(false);
|
|
117
|
-
expect(foo.state()).toBe('a');
|
|
118
|
-
|
|
119
|
-
foo.set_hook({ from: 'a', to: 'b', action: 'foo', kind: 'named', handler: () => true });
|
|
120
|
-
expect(foo.action('foo')).toBe(true);
|
|
121
|
-
expect(foo.state()).toBe('b');
|
|
122
|
-
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
test('Named hook rejection doesn\'t block transitions', () => {
|
|
130
|
-
|
|
131
|
-
const foo = sm`a 'foo' => b;`;
|
|
132
|
-
|
|
133
|
-
foo.set_hook({ from: 'a', to: 'b', action: 'foo', kind: 'named', handler: () => false });
|
|
134
|
-
expect(foo.action('foo')).toBe(false);
|
|
135
|
-
expect(foo.state()).toBe('a');
|
|
136
|
-
|
|
137
|
-
expect(foo.transition('b')).toBe(true);
|
|
138
|
-
expect(foo.state()).toBe('b');
|
|
139
|
-
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
describe('Basic hooks on API callpoint', () => {
|
|
147
|
-
|
|
148
|
-
test('Basic hooks call their handler', () => {
|
|
149
|
-
|
|
150
|
-
const handler = jest.fn(x => true),
|
|
151
|
-
uncalled = jest.fn(x => true);
|
|
152
|
-
|
|
153
|
-
expect( () => {
|
|
154
|
-
const _foo = sm`a -> b -> c;`;
|
|
155
|
-
_foo.set_hook({ from: 'a', to: 'b', handler, kind: 'hook' });
|
|
156
|
-
_foo.set_hook({ from: 'b', to: 'a', handler: uncalled, kind: 'hook' });
|
|
157
|
-
_foo.set_hook({ from: 'b', to: 'c', handler: uncalled, kind: 'hook' });
|
|
158
|
-
_foo.transition('b');
|
|
159
|
-
})
|
|
160
|
-
.not.toThrow();
|
|
161
|
-
|
|
162
|
-
// should hook from first, but not from second
|
|
163
|
-
expect(handler.mock.calls.length).toBe(1);
|
|
164
|
-
expect(uncalled.mock.calls.length).toBe(0);
|
|
165
|
-
|
|
166
|
-
} );
|
|
167
|
-
|
|
168
|
-
test('Named hooks call their handler', () => {
|
|
169
|
-
|
|
170
|
-
const handler = jest.fn(x => true),
|
|
171
|
-
uncalled = jest.fn(x => true);
|
|
172
|
-
|
|
173
|
-
expect( () => {
|
|
174
|
-
const _foo = sm`a 'next' -> b 'next' -> c;`;
|
|
175
|
-
_foo.set_hook({ from: 'a', to: 'b', handler, kind: 'named', action: 'next' });
|
|
176
|
-
_foo.set_hook({ from: 'a', to: 'b', handler: uncalled, kind: 'named', action: 'borg' });
|
|
177
|
-
_foo.set_hook({ from: 'b', to: 'a', handler: uncalled, kind: 'named', action: 'next' });
|
|
178
|
-
_foo.action('next');
|
|
179
|
-
_foo.action('next');
|
|
180
|
-
})
|
|
181
|
-
.not.toThrow();
|
|
182
|
-
|
|
183
|
-
// should hook from first, but not from second
|
|
184
|
-
expect(handler.mock.calls.length).toBe(1);
|
|
185
|
-
expect(uncalled.mock.calls.length).toBe(0);
|
|
186
|
-
|
|
187
|
-
} );
|
|
188
|
-
|
|
189
|
-
test('Forced hooks call their handler', () => {
|
|
190
|
-
|
|
191
|
-
const handler = jest.fn(x => true),
|
|
192
|
-
uncalled = jest.fn(x => true);
|
|
193
|
-
|
|
194
|
-
expect( () => {
|
|
195
|
-
const _foo = sm`a ~> b ~> c;`;
|
|
196
|
-
_foo.set_hook({ from: 'a', to: 'b', handler, kind: 'hook' });
|
|
197
|
-
_foo.set_hook({ from: 'b', to: 'a', handler: uncalled, kind: 'hook' });
|
|
198
|
-
_foo.set_hook({ from: 'b', to: 'c', handler: uncalled, kind: 'hook' });
|
|
199
|
-
_foo.force_transition('b');
|
|
200
|
-
})
|
|
201
|
-
.not.toThrow();
|
|
202
|
-
|
|
203
|
-
// should hook from first, but not from second
|
|
204
|
-
expect(handler.mock.calls.length).toBe(1);
|
|
205
|
-
expect(uncalled.mock.calls.length).toBe(0);
|
|
206
|
-
|
|
207
|
-
} );
|
|
208
|
-
|
|
209
|
-
});
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
/* eslint-disable max-len */
|
|
3
|
-
|
|
4
|
-
import { sm } from '../jssm';
|
|
5
|
-
|
|
6
|
-
const glob = require('glob'),
|
|
7
|
-
|
|
8
|
-
language_files = glob.sync('./src/ts/tests/language_data/*.json', {}) // for some reason glob is project-relative
|
|
9
|
-
.map(rel => rel.replace('/src/ts/tests', '')); // instead of execution relative like i'd expect
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
describe('base data walk/1', () => {
|
|
16
|
-
|
|
17
|
-
language_files.map( (language_file, i) => {
|
|
18
|
-
|
|
19
|
-
const testData = require(language_file),
|
|
20
|
-
testTokens = testData.cases;
|
|
21
|
-
|
|
22
|
-
const foreignTarget = sm`${testData.native_name} -> ${testData.english_name} -> ${testTokens.join(' -> ')};`;
|
|
23
|
-
|
|
24
|
-
describe(`language ${i} "${testData.english_name}" contains all states`, () => {
|
|
25
|
-
|
|
26
|
-
testTokens.map(tok =>
|
|
27
|
-
test(tok, () =>
|
|
28
|
-
expect( foreignTarget.states().includes(tok) ).toBe(true)
|
|
29
|
-
)
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
});
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
"native_name" : "Беларускі",
|
|
4
|
-
"english_name" : "Belorussian",
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"cases" : [
|
|
8
|
-
"all_letters_абвгґдеёжзійклмнопрстуўфхцчшыьэюяАБВГҐДЕЁЖЗІЙКЛМНОПРСТУЎФХЦЧШІЬЄЮЯ",
|
|
9
|
-
"all_digits_0123456789",
|
|
10
|
-
"accents_’",
|
|
11
|
-
"common_symbols_!»№,.?+=_*#"
|
|
12
|
-
]
|
|
13
|
-
|
|
14
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
"native_name" : "বাংলা",
|
|
4
|
-
"english_name" : "Bengali",
|
|
5
|
-
|
|
6
|
-
"cases" : [
|
|
7
|
-
"সংখ্যা_১০_দিয়ে_শেষ_হয়",
|
|
8
|
-
"মাঝখানে_সংখ্যা_১০",
|
|
9
|
-
"সংখ্যা_১০_দিয়ে_শুরু_হয়",
|
|
10
|
-
|
|
11
|
-
"সব_বর্ণমালা_অআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহড়ঢ়য়ৎংঁ",
|
|
12
|
-
"উচ্চারণ_ািীুূৃৄেৈোৌ্",
|
|
13
|
-
"সাধারণ_চিহ্ন_।!@#$^&*()?.,=+#"
|
|
14
|
-
]
|
|
15
|
-
|
|
16
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
"native_name" : "😜",
|
|
4
|
-
"english_name" : "Emoji",
|
|
5
|
-
|
|
6
|
-
"cases" : [
|
|
7
|
-
|
|
8
|
-
"😂_ends_with_number_10",
|
|
9
|
-
"🙄middle_10_number",
|
|
10
|
-
"10_starts_with_number😰",
|
|
11
|
-
|
|
12
|
-
"all_basic_faces_😀😃😄😁😆😅😂🤣😊😇🙂🙃😉😌😍😘😗😙😚😋😜😝😛🤑🤗🤓😎🤡🤠😏😒😞😔😟😕🙁☹️😣😖😫😩😤😠😡😶😐😑😯😦😧😮😲😵😳😱😨😰😢😥🤤😭😓😪😴🙄🤔🤥😬🤐🤢🤧😷🤒🤕",
|
|
13
|
-
"all_extras_😈👿👹👺💩👻💀☠️👽👾🤖🎃😺😸😹😻😼😽🙀😿😾👐🙌👏🙏🤝👍👎👊✊🤛🤜🤞✌️🤘👌👈👉👆👇☝️✋🤚🖐🖖👋🤙💪🖕✍️🤳💅🖖💄💋👄👅👂👃👣👁👀🗣👤👥👶👦👧👨👩👱👱👴👵👲👳♀️👳👮♀️👮👷♀️👷💂♀️💂🕵️♀️🕵️👩⚕️👨⚕️👩🌾👨🌾👩🍳👨🍳👩🎓👨🎓👩🎤👨🎤👩🏫👨🏫👩🏭👨🏭👩💻👨💻👩💼👨💼👩🔧👨🔧👩🔬👨🔬👩🎨👨🎨👩🚒👨🚒👩✈️👨✈️👩🚀👨🚀👩⚖️👨⚖️🤶🎅👸🤴👰🤵👼🤰🙇♀️🙇💁💁♂️🙅🙅♂️🙆🙆♂️🙋🙋♂️🤦♀️🤦♂️🤷♀️🤷♂️🙎🙎♂️🙍🙍♂️💇💇♂️💆💆♂️🕴💃🕺👯👯♂️🚶♀️🚶🏃♀️🏃👫👭👬💑👩❤️👩👨❤️👨💏👩❤️💋👩👨❤️💋👨👪",
|
|
14
|
-
"groups_👨👩👧👨👩👧👦👨👩👦👦👨👩👧👧👩👩👦👩👩👧👩👩👧👦👩👩👦👦👩👩👧👧👨👨👦👨👨👧👨👨👧👦👨👨👦👦👨👨👧👧👩👦👩👧👩👧👦👩👦👦👩👧👧👨👦👨👧👨👧👦👨👦👦👨👧👧",
|
|
15
|
-
"misc_👚👕👖👔👗👙👘👠👡👢👞👟👒🎩🎓👑⛑🎒👝👛👜💼👓🕶🌂",
|
|
16
|
-
"animals_🐶🐱🐭🐹🐰🦊🐻🐼🐨🐯🦁🐮🐷🐽🐸🐵🙊🙉🙊🐒🐔🐧🐦🐤🐣🐥🦆🦅🦉🦇🐺🐗🐴🦄🐝🐛🦋🐌🐚🐞🐜🕷🕸🐢🐍🦎🦂🦀🦑🐙🦐🐠🐟🐡🐬🦈🐳🐋🐊🐆🐅🐃🐂🐄🦌🐪🐫🐘🦏🦍🐎🐖🐐🐏🐑🐕🐩🐈🐓🦃🕊🐇🐁🐀🐿🐾🐉🐲",
|
|
17
|
-
"plants_🌵🎄🌲🌳🌴🌱🌿☘️🍀🎍🎋🍃🍂🍁🍄🌾💐🌷🌹🥀🌻🌼🌸🌺",
|
|
18
|
-
"planets_and_weather_🌎🌍🌏🌕🌖🌗🌘🌑🌒🌓🌔🌚🌝🌞🌛🌜🌙💫⭐️🌟✨⚡️🔥💥☄️☀️🌤⛅️🌥🌦🌈☁️🌧⛈🌩🌨☃️⛄️❄️🌬💨🌪🌫🌊💧💦☔"
|
|
19
|
-
|
|
20
|
-
]
|
|
21
|
-
|
|
22
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
"native_name" : "English",
|
|
4
|
-
"english_name" : "English",
|
|
5
|
-
|
|
6
|
-
"cases" : [
|
|
7
|
-
"ends_with_number_10",
|
|
8
|
-
"middle_10_number",
|
|
9
|
-
"10_starts_with_number",
|
|
10
|
-
|
|
11
|
-
"all_letters_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
|
12
|
-
"all_digits_0123456789",
|
|
13
|
-
"accents_éÉëïöËÏÖæÆœŒß",
|
|
14
|
-
"common_symbols_!@#$^&*()?.,=+#"
|
|
15
|
-
]
|
|
16
|
-
|
|
17
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
"native_name" : "Français",
|
|
4
|
-
"english_name" : "French",
|
|
5
|
-
|
|
6
|
-
"cases" : [
|
|
7
|
-
"termine_par_un_nombre_10",
|
|
8
|
-
"nombre_10_milieu",
|
|
9
|
-
"10_commence_par_un_nombre",
|
|
10
|
-
|
|
11
|
-
"toutes_les_lettres_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
|
12
|
-
"tous_les_chiffres_0123456789",
|
|
13
|
-
"accents_àâäçéèêëîïôöùûüÿÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸ",
|
|
14
|
-
"symboles_communs_!@#$^&*()?.,=+#"
|
|
15
|
-
]
|
|
16
|
-
|
|
17
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
"native_name" : "Deutsch",
|
|
4
|
-
"english_name" : "German",
|
|
5
|
-
|
|
6
|
-
"cases" : [
|
|
7
|
-
"endet_mit_nummer_10",
|
|
8
|
-
"mittlere_10_nummer",
|
|
9
|
-
"10_beginnt_mit_die_nummer",
|
|
10
|
-
|
|
11
|
-
"all_letters_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
|
12
|
-
"all_digits_0123456789",
|
|
13
|
-
"accents_ÄäÖöÜüëïẞßſ",
|
|
14
|
-
"common_symbols_!@#$€^&*()?.,=+#„“‚‘«»‹›§"
|
|
15
|
-
]
|
|
16
|
-
|
|
17
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
"native_name" : "עברית",
|
|
4
|
-
"english_name" : "English",
|
|
5
|
-
|
|
6
|
-
"cases" : [
|
|
7
|
-
"נגמר_במספר_10",
|
|
8
|
-
"אמצע_10_מספר",
|
|
9
|
-
"10_מתחיל_במספר",
|
|
10
|
-
|
|
11
|
-
"all_letters_אבגדהוזחטיכךלמםנןסעפףצץקרשת",
|
|
12
|
-
"all_digits_0123456789",
|
|
13
|
-
"common_symbols_!@#$^&*()?.,=+#"
|
|
14
|
-
]
|
|
15
|
-
|
|
16
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
"native_name" : "Português",
|
|
4
|
-
"english_name" : "Portuguese",
|
|
5
|
-
|
|
6
|
-
"cases" : [
|
|
7
|
-
"all_letters_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
|
8
|
-
"all_digits_0123456789",
|
|
9
|
-
"accents_éÉëïöËÏÖæÆœŒßçÇáàãâéêíìôõóú",
|
|
10
|
-
"common_symbols_!@#$^&*?.,=+#"
|
|
11
|
-
]
|
|
12
|
-
|
|
13
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
"native_name" : "Español",
|
|
4
|
-
"english_name" : "Spanish",
|
|
5
|
-
|
|
6
|
-
"cases" : [
|
|
7
|
-
"termina_con_número_10",
|
|
8
|
-
"medio_10_número",
|
|
9
|
-
"10_empieza_con_número",
|
|
10
|
-
|
|
11
|
-
"todas_las_letras_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
|
12
|
-
"todos_los_dígitos_0123456789",
|
|
13
|
-
"acentos_ñáéíóúÑÁÉÍÓÚ",
|
|
14
|
-
"símbolos_comunes_!¡@#$^&*()?¿.,=+#"
|
|
15
|
-
]
|
|
16
|
-
|
|
17
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
"native_name" : "Українська",
|
|
4
|
-
"english_name" : "Ukrainian",
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"cases" : [
|
|
8
|
-
"ends_with_number_10",
|
|
9
|
-
"middle_10_number",
|
|
10
|
-
"10_starts_with_number",
|
|
11
|
-
|
|
12
|
-
"all_letters_абгґдеєжзиіїйклмнопрстуфхцчшщьюяАБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ",
|
|
13
|
-
"all_digits_0123456789",
|
|
14
|
-
"accents_’",
|
|
15
|
-
|
|
16
|
-
"common_symbols_!«»№,.?+=_*#"
|
|
17
|
-
]
|
|
18
|
-
|
|
19
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
/* eslint-disable max-len */
|
|
3
|
-
|
|
4
|
-
import { sm } from '../jssm';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
describe('graph attributes don\'t throw', () => {
|
|
11
|
-
|
|
12
|
-
const machine = sm`graph_layout: circo; a->b->c->d->e->f->a;`;
|
|
13
|
-
|
|
14
|
-
test('layout is circo', () => expect(machine.graph_layout()).toBe('circo') );
|
|
15
|
-
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
describe('error catchery', () => {
|
|
23
|
-
|
|
24
|
-
test('double graph_layout throws', () =>
|
|
25
|
-
expect( () => {
|
|
26
|
-
const _machine = sm`graph_layout: circo; graph_layout: circo; a->b->c->d->e->f->a;`;
|
|
27
|
-
} ).toThrow() );
|
|
28
|
-
|
|
29
|
-
});
|