jssm 5.35.4 → 5.42.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/.codeclimate.yml +22 -22
- package/.editorconfig +12 -12
- package/.eslintrc +20 -20
- package/.nycrc +6 -6
- package/.travis.yml +8 -8
- package/LICENSE.md +21 -21
- package/README.md +997 -993
- package/dist/es6/jssm-dot.d.ts +6 -6
- package/dist/es6/jssm-dot.js +1 -1
- package/dist/es6/jssm.d.ts +100 -100
- package/dist/es6/jssm.js +792 -792
- package/dist/es6/jssm_types.d.ts +151 -151
- package/dist/es6/jssm_types.js +1 -1
- package/dist/es6/jssm_util.d.ts +8 -8
- package/dist/es6/jssm_util.js +34 -34
- package/dist/es6/version.d.ts +2 -2
- package/dist/es6/version.js +2 -2
- package/dist/jssm.es5.cjs.js +1 -1
- package/dist/jssm.es5.iife.js +1 -0
- package/jest-spec.config.js +27 -27
- package/jest-stoch.config.js +27 -27
- package/jssm-dot.d.ts +6 -6
- package/jssm.d.ts +100 -100
- package/jssm_types.d.ts +151 -151
- package/jssm_util.d.ts +8 -8
- package/package.json +125 -122
- package/rollup.config.iife.js +44 -44
- package/rollup.config.js +44 -44
- package/src/demo/index.html +38 -38
- package/src/demo/style.css +1 -1
- package/src/ts/jssm-dot.peg +928 -874
- package/src/ts/jssm.ts +1120 -1120
- package/src/ts/jssm_types.ts +346 -346
- package/src/ts/jssm_util.ts +100 -100
- package/src/ts/tests/actions.spec.ts +167 -167
- package/src/ts/tests/arrange.spec.ts +72 -72
- package/src/ts/tests/arrange.stoch.ts +4 -4
- package/src/ts/tests/array_box_if_string.spec.ts +30 -31
- package/src/ts/tests/array_transitions.spec.ts +129 -129
- package/src/ts/tests/arrow unicode.spec.ts +88 -88
- package/src/ts/tests/arrow.spec.ts +124 -124
- package/src/ts/tests/colors.spec.ts +58 -58
- package/src/ts/tests/comment.spec.ts +134 -134
- package/src/ts/tests/compile.spec.ts +79 -79
- package/src/ts/tests/constants.spec.ts +98 -98
- package/src/ts/tests/cycles.spec.ts +153 -153
- package/src/ts/tests/dot_preamble.spec.ts +16 -16
- package/src/ts/tests/embedded_sm.spec.ts +36 -36
- package/src/ts/tests/flow.spec.ts +22 -22
- package/src/ts/tests/forced transitions.spec.ts +26 -26
- package/src/ts/tests/general.spec.ts +933 -933
- package/src/ts/tests/graph node lists.spec.ts +21 -21
- package/src/ts/tests/histo.spec.ts +24 -24
- package/src/ts/tests/hooks.spec.ts +28 -0
- package/src/ts/tests/language.spec.ts +37 -37
- package/src/ts/tests/language_data/belarussian.json +13 -13
- package/src/ts/tests/language_data/bengali.json +15 -15
- package/src/ts/tests/language_data/emoji.json +21 -21
- package/src/ts/tests/language_data/english.json +16 -16
- package/src/ts/tests/language_data/french.json +16 -16
- package/src/ts/tests/language_data/german.json +16 -16
- package/src/ts/tests/language_data/hebrew.json +16 -16
- package/src/ts/tests/language_data/portuguese.json +12 -12
- package/src/ts/tests/language_data/russian.json +12 -12
- package/src/ts/tests/language_data/spanish.json +17 -17
- package/src/ts/tests/language_data/ukrainian.json +18 -18
- package/src/ts/tests/layout.spec.ts +29 -29
- package/src/ts/tests/machine_attributes.spec.ts +398 -398
- package/src/ts/tests/machine_name.spec.ts +14 -14
- package/src/ts/tests/named lists.spec.ts +24 -19
- package/src/ts/tests/nominated states.spec.ts +133 -133
- package/src/ts/tests/parse actions.spec.ts +32 -32
- package/src/ts/tests/parse.spec.ts +94 -94
- package/src/ts/tests/probability.spec.ts +146 -146
- package/src/ts/tests/r639.spec.ts +27 -27
- package/src/ts/tests/sample_select.spec.ts +173 -173
- package/src/ts/tests/seq.spec.ts +14 -16
- package/src/ts/tests/seq.stoch.ts +83 -0
- package/src/ts/tests/shapes.spec.ts +63 -63
- package/src/ts/tests/sm_tag.spec.ts +37 -37
- package/src/ts/tests/special characters.spec.ts +39 -39
- package/src/ts/tests/state_declaration.spec.ts +214 -200
- package/src/ts/tests/state_style.spec.ts +82 -39
- package/src/ts/tests/stop light.spec.ts +157 -157
- package/src/ts/tests/stripes.spec.ts +52 -52
- package/src/ts/tests/theme.spec.ts +45 -45
- package/src/ts/tests/weighted_histo_key.spec.ts +22 -22
- package/src/ts/tests/weighted_rand_select.spec.ts +27 -27
- package/src/ts/tests/weighted_sample_select.spec.ts +24 -26
- package/src/ts/version.ts +1 -1
- package/tree.txt +1794 -1794
- package/tsconfig.json +27 -27
- package/version.d.ts +2 -2
|
@@ -1,21 +1,21 @@
|
|
|
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
|
+
|
|
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 +1,24 @@
|
|
|
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
|
+
|
|
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
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
|
|
2
|
+
import { sm } from '../jssm';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
describe('Hooks', () => {
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
test.todo('Hooks open doesn\'t throw' /*, () => {
|
|
13
|
+
|
|
14
|
+
expect( () => { const _foo = sm`hooks: open; a -> b;`; })
|
|
15
|
+
.not.toThrow();
|
|
16
|
+
|
|
17
|
+
} */);
|
|
18
|
+
|
|
19
|
+
test.todo('Hooks closed doesn\'t throw' /*, () => {
|
|
20
|
+
|
|
21
|
+
expect( () => { const _foo = sm`hooks: closed; a -> b;`; })
|
|
22
|
+
.not.toThrow();
|
|
23
|
+
|
|
24
|
+
} */);
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
});
|
|
@@ -1,37 +1,37 @@
|
|
|
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
|
+
|
|
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 +1,14 @@
|
|
|
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
|
-
|
|
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
14
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
"native_name" : "বাংলা",
|
|
4
|
-
"english_name" : "Bengali",
|
|
5
|
-
|
|
6
|
-
"cases" : [
|
|
7
|
-
"সংখ্যা_১০_দিয়ে_শেষ_হয়",
|
|
8
|
-
"মাঝখানে_সংখ্যা_১০",
|
|
9
|
-
"সংখ্যা_১০_দিয়ে_শুরু_হয়",
|
|
10
|
-
|
|
11
|
-
"সব_বর্ণমালা_অআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহড়ঢ়য়ৎংঁ",
|
|
12
|
-
"উচ্চারণ_ািীুূৃৄেৈোৌ্",
|
|
13
|
-
"সাধারণ_চিহ্ন_।!@#$^&*()?.,=+#"
|
|
14
|
-
]
|
|
15
|
-
|
|
1
|
+
{
|
|
2
|
+
|
|
3
|
+
"native_name" : "বাংলা",
|
|
4
|
+
"english_name" : "Bengali",
|
|
5
|
+
|
|
6
|
+
"cases" : [
|
|
7
|
+
"সংখ্যা_১০_দিয়ে_শেষ_হয়",
|
|
8
|
+
"মাঝখানে_সংখ্যা_১০",
|
|
9
|
+
"সংখ্যা_১০_দিয়ে_শুরু_হয়",
|
|
10
|
+
|
|
11
|
+
"সব_বর্ণমালা_অআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহড়ঢ়য়ৎংঁ",
|
|
12
|
+
"উচ্চারণ_ািীুূৃৄেৈোৌ্",
|
|
13
|
+
"সাধারণ_চিহ্ন_।!@#$^&*()?.,=+#"
|
|
14
|
+
]
|
|
15
|
+
|
|
16
16
|
}
|
|
@@ -1,22 +1,22 @@
|
|
|
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
|
-
|
|
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
22
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
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
|
-
|
|
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
17
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
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
|
-
|
|
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
17
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
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
|
-
|
|
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
17
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
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
|
+
{
|
|
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 +1,13 @@
|
|
|
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
|
-
|
|
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
13
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
"native_name" : "Русский",
|
|
4
|
-
"english_name" : "Russian",
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"cases" : [
|
|
8
|
-
"all_letters_абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ",
|
|
9
|
-
"all_digits_0123456789",
|
|
10
|
-
"common_symbols_!«»№,.?+=_*#"
|
|
11
|
-
]
|
|
12
|
-
|
|
1
|
+
{
|
|
2
|
+
|
|
3
|
+
"native_name" : "Русский",
|
|
4
|
+
"english_name" : "Russian",
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
"cases" : [
|
|
8
|
+
"all_letters_абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ",
|
|
9
|
+
"all_digits_0123456789",
|
|
10
|
+
"common_symbols_!«»№,.?+=_*#"
|
|
11
|
+
]
|
|
12
|
+
|
|
13
13
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
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
|
+
{
|
|
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 +1,19 @@
|
|
|
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
|
-
|
|
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
19
|
}
|
|
@@ -1,29 +1,29 @@
|
|
|
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
|
-
});
|
|
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
|
+
});
|