@jdeighan/coffee-utils 17.0.0 → 17.0.1
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +1 -2
- package/src/lib/fsa.coffee +0 -82
- package/src/lib/fsa.js +0 -112
- package/src/lib/fsa.js.map +0 -13
package/package.json
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
{
|
2
2
|
"name": "@jdeighan/coffee-utils",
|
3
3
|
"type": "module",
|
4
|
-
"version": "17.0.
|
4
|
+
"version": "17.0.1",
|
5
5
|
"description": "A set of utility functions for CoffeeScript",
|
6
6
|
"main": "coffee_utils.js",
|
7
7
|
"exports": {
|
8
8
|
".": "./src/lib/fs.js",
|
9
9
|
"./server": "./src/lib/server.js",
|
10
10
|
"./fs": "./src/lib/fs.js",
|
11
|
-
"./fsa": "./src/lib/fsa.js",
|
12
11
|
"./block": "./src/lib/block.js",
|
13
12
|
"./html": "./src/lib/html.js",
|
14
13
|
"./section": "./src/lib/Section.js",
|
package/src/lib/fsa.coffee
DELETED
@@ -1,82 +0,0 @@
|
|
1
|
-
# fsa.coffee
|
2
|
-
|
3
|
-
import {assert, croak} from '@jdeighan/base-utils/exceptions'
|
4
|
-
import {LOG} from '@jdeighan/base-utils/log'
|
5
|
-
import {dbg, dbgEnter, dbgReturn} from '@jdeighan/base-utils/debug'
|
6
|
-
import {
|
7
|
-
undef, defined, notdefined, words, isEmpty, nonEmpty,
|
8
|
-
isString, OL, toArray,
|
9
|
-
} from '@jdeighan/base-utils'
|
10
|
-
|
11
|
-
# ---------------------------------------------------------------------------
|
12
|
-
|
13
|
-
export class FSA
|
14
|
-
|
15
|
-
constructor: (block) ->
|
16
|
-
|
17
|
-
dbgEnter "FSA", block
|
18
|
-
assert isString(block), "block not a string"
|
19
|
-
@hTransitions = {}
|
20
|
-
lLines = toArray(block, 'noEmptyLines')
|
21
|
-
dbg 'lLines', lLines
|
22
|
-
for line,i in lLines
|
23
|
-
dbg "LINE #{i}", line
|
24
|
-
lWords = words(line)
|
25
|
-
if (lWords.length == 3)
|
26
|
-
[bState, token, eState] = lWords
|
27
|
-
output = undef
|
28
|
-
else if (lWords.length == 4)
|
29
|
-
[bState, token, eState, output] = lWords
|
30
|
-
else
|
31
|
-
croak "Invalid desc: #{OL(line)}"
|
32
|
-
dbg "LINE #{i}: #{OL(bState)} #{OL(token)} #{OL(eState)} #{OL(output)}"
|
33
|
-
assert nonEmpty(eState), "Invalid FSA description #{i}"
|
34
|
-
|
35
|
-
# --- tokens may be quoted (but may not contain whitespace),
|
36
|
-
# but the quotes are stripped
|
37
|
-
if (i == 0)
|
38
|
-
assert (bState == 'start'), "Invalid FSA description #{i}"
|
39
|
-
token = @fixToken(token)
|
40
|
-
dbg 'token', token
|
41
|
-
if isEmpty(output)
|
42
|
-
output = undef
|
43
|
-
hTrans = @hTransitions[bState]
|
44
|
-
if notdefined(hTrans)
|
45
|
-
hTrans = @hTransitions[bState] = {}
|
46
|
-
assert notdefined(hTrans[token]), "Duplicate transition"
|
47
|
-
hTrans[token] = [eState, output]
|
48
|
-
dbg 'hTransitions', @hTransitions
|
49
|
-
@curState = 'start'
|
50
|
-
dbgReturn "FSA"
|
51
|
-
|
52
|
-
# ..........................................................
|
53
|
-
|
54
|
-
fixToken: (token) ->
|
55
|
-
|
56
|
-
if lMatches = token.match(/^\'(.*)\'$/)
|
57
|
-
return lMatches[1]
|
58
|
-
else if lMatches = token.match(/^\"(.*)\"$/)
|
59
|
-
return lMatches[1]
|
60
|
-
else
|
61
|
-
return token
|
62
|
-
|
63
|
-
# ..........................................................
|
64
|
-
|
65
|
-
got: (token) ->
|
66
|
-
# --- returns pair [newState, output]
|
67
|
-
|
68
|
-
hTrans = @hTransitions[@curState]
|
69
|
-
if notdefined(hTrans)
|
70
|
-
return [undef, undef]
|
71
|
-
result = hTrans[token]
|
72
|
-
if notdefined(result)
|
73
|
-
return [undef, undef]
|
74
|
-
[newState, output] = result
|
75
|
-
assert nonEmpty(newState), "Failed: #{@curState} -> #{token}"
|
76
|
-
@curState = newState
|
77
|
-
return result
|
78
|
-
|
79
|
-
# ..........................................................
|
80
|
-
|
81
|
-
state: () ->
|
82
|
-
return @curState
|
package/src/lib/fsa.js
DELETED
@@ -1,112 +0,0 @@
|
|
1
|
-
// Generated by CoffeeScript 2.7.0
|
2
|
-
// fsa.coffee
|
3
|
-
import {
|
4
|
-
assert,
|
5
|
-
croak
|
6
|
-
} from '@jdeighan/base-utils/exceptions';
|
7
|
-
|
8
|
-
import {
|
9
|
-
LOG
|
10
|
-
} from '@jdeighan/base-utils/log';
|
11
|
-
|
12
|
-
import {
|
13
|
-
dbg,
|
14
|
-
dbgEnter,
|
15
|
-
dbgReturn
|
16
|
-
} from '@jdeighan/base-utils/debug';
|
17
|
-
|
18
|
-
import {
|
19
|
-
undef,
|
20
|
-
defined,
|
21
|
-
notdefined,
|
22
|
-
words,
|
23
|
-
isEmpty,
|
24
|
-
nonEmpty,
|
25
|
-
isString,
|
26
|
-
OL,
|
27
|
-
toArray
|
28
|
-
} from '@jdeighan/base-utils';
|
29
|
-
|
30
|
-
// ---------------------------------------------------------------------------
|
31
|
-
export var FSA = class FSA {
|
32
|
-
constructor(block) {
|
33
|
-
var bState, eState, hTrans, i, j, lLines, lWords, len, line, output, token;
|
34
|
-
dbgEnter("FSA", block);
|
35
|
-
assert(isString(block), "block not a string");
|
36
|
-
this.hTransitions = {};
|
37
|
-
lLines = toArray(block, 'noEmptyLines');
|
38
|
-
dbg('lLines', lLines);
|
39
|
-
for (i = j = 0, len = lLines.length; j < len; i = ++j) {
|
40
|
-
line = lLines[i];
|
41
|
-
dbg(`LINE ${i}`, line);
|
42
|
-
lWords = words(line);
|
43
|
-
if (lWords.length === 3) {
|
44
|
-
[bState, token, eState] = lWords;
|
45
|
-
output = undef;
|
46
|
-
} else if (lWords.length === 4) {
|
47
|
-
[bState, token, eState, output] = lWords;
|
48
|
-
} else {
|
49
|
-
croak(`Invalid desc: ${OL(line)}`);
|
50
|
-
}
|
51
|
-
dbg(`LINE ${i}: ${OL(bState)} ${OL(token)} ${OL(eState)} ${OL(output)}`);
|
52
|
-
assert(nonEmpty(eState), `Invalid FSA description ${i}`);
|
53
|
-
// --- tokens may be quoted (but may not contain whitespace),
|
54
|
-
// but the quotes are stripped
|
55
|
-
if (i === 0) {
|
56
|
-
assert(bState === 'start', `Invalid FSA description ${i}`);
|
57
|
-
}
|
58
|
-
token = this.fixToken(token);
|
59
|
-
dbg('token', token);
|
60
|
-
if (isEmpty(output)) {
|
61
|
-
output = undef;
|
62
|
-
}
|
63
|
-
hTrans = this.hTransitions[bState];
|
64
|
-
if (notdefined(hTrans)) {
|
65
|
-
hTrans = this.hTransitions[bState] = {};
|
66
|
-
}
|
67
|
-
assert(notdefined(hTrans[token]), "Duplicate transition");
|
68
|
-
hTrans[token] = [eState, output];
|
69
|
-
}
|
70
|
-
dbg('hTransitions', this.hTransitions);
|
71
|
-
this.curState = 'start';
|
72
|
-
dbgReturn("FSA");
|
73
|
-
}
|
74
|
-
|
75
|
-
// ..........................................................
|
76
|
-
fixToken(token) {
|
77
|
-
var lMatches;
|
78
|
-
if (lMatches = token.match(/^\'(.*)\'$/)) {
|
79
|
-
return lMatches[1];
|
80
|
-
} else if (lMatches = token.match(/^\"(.*)\"$/)) {
|
81
|
-
return lMatches[1];
|
82
|
-
} else {
|
83
|
-
return token;
|
84
|
-
}
|
85
|
-
}
|
86
|
-
|
87
|
-
// ..........................................................
|
88
|
-
got(token) {
|
89
|
-
var hTrans, newState, output, result;
|
90
|
-
// --- returns pair [newState, output]
|
91
|
-
hTrans = this.hTransitions[this.curState];
|
92
|
-
if (notdefined(hTrans)) {
|
93
|
-
return [undef, undef];
|
94
|
-
}
|
95
|
-
result = hTrans[token];
|
96
|
-
if (notdefined(result)) {
|
97
|
-
return [undef, undef];
|
98
|
-
}
|
99
|
-
[newState, output] = result;
|
100
|
-
assert(nonEmpty(newState), `Failed: ${this.curState} -> ${token}`);
|
101
|
-
this.curState = newState;
|
102
|
-
return result;
|
103
|
-
}
|
104
|
-
|
105
|
-
// ..........................................................
|
106
|
-
state() {
|
107
|
-
return this.curState;
|
108
|
-
}
|
109
|
-
|
110
|
-
};
|
111
|
-
|
112
|
-
//# sourceMappingURL=fsa.js.map
|
package/src/lib/fsa.js.map
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"version": 3,
|
3
|
-
"file": "fsa.js",
|
4
|
-
"sourceRoot": "..\\..\\",
|
5
|
-
"sources": [
|
6
|
-
"src\\lib\\fsa.coffee"
|
7
|
-
],
|
8
|
-
"names": [],
|
9
|
-
"mappings": "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",
|
10
|
-
"sourcesContent": [
|
11
|
-
"# fsa.coffee\r\n\r\nimport {assert, croak} from '@jdeighan/base-utils/exceptions'\r\nimport {LOG} from '@jdeighan/base-utils/log'\r\nimport {dbg, dbgEnter, dbgReturn} from '@jdeighan/base-utils/debug'\r\nimport {\r\n\tundef, defined, notdefined, words, isEmpty, nonEmpty,\r\n\tisString, OL, toArray,\r\n\t} from '@jdeighan/base-utils'\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport class FSA\r\n\r\n\tconstructor: (block) ->\r\n\r\n\t\tdbgEnter \"FSA\", block\r\n\t\tassert isString(block), \"block not a string\"\r\n\t\t@hTransitions = {}\r\n\t\tlLines = toArray(block, 'noEmptyLines')\r\n\t\tdbg 'lLines', lLines\r\n\t\tfor line,i in lLines\r\n\t\t\tdbg \"LINE #{i}\", line\r\n\t\t\tlWords = words(line)\r\n\t\t\tif (lWords.length == 3)\r\n\t\t\t\t[bState, token, eState] = lWords\r\n\t\t\t\toutput = undef\r\n\t\t\telse if (lWords.length == 4)\r\n\t\t\t\t[bState, token, eState, output] = lWords\r\n\t\t\telse\r\n\t\t\t\tcroak \"Invalid desc: #{OL(line)}\"\r\n\t\t\tdbg \"LINE #{i}: #{OL(bState)} #{OL(token)} #{OL(eState)} #{OL(output)}\"\r\n\t\t\tassert nonEmpty(eState), \"Invalid FSA description #{i}\"\r\n\r\n\t\t\t# --- tokens may be quoted (but may not contain whitespace),\r\n\t\t\t# but the quotes are stripped\r\n\t\t\tif (i == 0)\r\n\t\t\t\tassert (bState == 'start'), \"Invalid FSA description #{i}\"\r\n\t\t\ttoken = @fixToken(token)\r\n\t\t\tdbg 'token', token\r\n\t\t\tif isEmpty(output)\r\n\t\t\t\toutput = undef\r\n\t\t\thTrans = @hTransitions[bState]\r\n\t\t\tif notdefined(hTrans)\r\n\t\t\t\thTrans = @hTransitions[bState] = {}\r\n\t\t\tassert notdefined(hTrans[token]), \"Duplicate transition\"\r\n\t\t\thTrans[token] = [eState, output]\r\n\t\tdbg 'hTransitions', @hTransitions\r\n\t\t@curState = 'start'\r\n\t\tdbgReturn \"FSA\"\r\n\r\n\t# ..........................................................\r\n\r\n\tfixToken: (token) ->\r\n\r\n\t\tif lMatches = token.match(/^\\'(.*)\\'$/)\r\n\t\t\treturn lMatches[1]\r\n\t\telse if lMatches = token.match(/^\\\"(.*)\\\"$/)\r\n\t\t\treturn lMatches[1]\r\n\t\telse\r\n\t\t\treturn token\r\n\r\n\t# ..........................................................\r\n\r\n\tgot: (token) ->\r\n\t\t# --- returns pair [newState, output]\r\n\r\n\t\thTrans = @hTransitions[@curState]\r\n\t\tif notdefined(hTrans)\r\n\t\t\treturn [undef, undef]\r\n\t\tresult = hTrans[token]\r\n\t\tif notdefined(result)\r\n\t\t\treturn [undef, undef]\r\n\t\t[newState, output] = result\r\n\t\tassert nonEmpty(newState), \"Failed: #{@curState} -> #{token}\"\r\n\t\t@curState = newState\r\n\t\treturn result\r\n\r\n\t# ..........................................................\r\n\r\n\tstate: () ->\r\n\t\treturn @curState\r\n"
|
12
|
-
]
|
13
|
-
}
|