@jdeighan/coffee-utils 17.0.0 → 17.0.2
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/package.json +1 -3
- package/src/lib/fsa.coffee +0 -82
- package/src/lib/fsa.js +0 -112
- package/src/lib/fsa.js.map +0 -13
- package/src/lib/server.coffee +0 -14
- package/src/lib/server.js +0 -19
- package/src/lib/server.js.map +0 -13
package/package.json
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "@jdeighan/coffee-utils",
|
3
3
|
"type": "module",
|
4
|
-
"version": "17.0.
|
4
|
+
"version": "17.0.2",
|
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
|
-
"./server": "./src/lib/server.js",
|
10
9
|
"./fs": "./src/lib/fs.js",
|
11
|
-
"./fsa": "./src/lib/fsa.js",
|
12
10
|
"./block": "./src/lib/block.js",
|
13
11
|
"./html": "./src/lib/html.js",
|
14
12
|
"./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
|
-
}
|
package/src/lib/server.coffee
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
# server.coffee
|
2
|
-
|
3
|
-
import getline from 'readline-sync'
|
4
|
-
import {execSync} from 'child_process'
|
5
|
-
|
6
|
-
# ---------------------------------------------------------------------------
|
7
|
-
# exec - run external commands
|
8
|
-
|
9
|
-
export exec = (cmd) =>
|
10
|
-
|
11
|
-
buffer = execSync cmd, {
|
12
|
-
windowsHide: true
|
13
|
-
}
|
14
|
-
return buffer.toString()
|
package/src/lib/server.js
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
// Generated by CoffeeScript 2.7.0
|
2
|
-
// server.coffee
|
3
|
-
import getline from 'readline-sync';
|
4
|
-
|
5
|
-
import {
|
6
|
-
execSync
|
7
|
-
} from 'child_process';
|
8
|
-
|
9
|
-
// ---------------------------------------------------------------------------
|
10
|
-
// exec - run external commands
|
11
|
-
export var exec = (cmd) => {
|
12
|
-
var buffer;
|
13
|
-
buffer = execSync(cmd, {
|
14
|
-
windowsHide: true
|
15
|
-
});
|
16
|
-
return buffer.toString();
|
17
|
-
};
|
18
|
-
|
19
|
-
//# sourceMappingURL=server.js.map
|
package/src/lib/server.js.map
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"version": 3,
|
3
|
-
"file": "server.js",
|
4
|
-
"sourceRoot": "..\\..\\",
|
5
|
-
"sources": [
|
6
|
-
"src\\lib\\server.coffee"
|
7
|
-
],
|
8
|
-
"names": [],
|
9
|
-
"mappings": ";AAAe;AAEf,OAAO,OAAP,MAAA;;AACA,OAAA;EAAQ,QAAR;CAAA,MAAA,gBAHe;;;;AAQf,OAAA,IAAO,IAAA,GAAO,CAAC,GAAD,CAAA,GAAA;AAEd,MAAA;EAAC,MAAA,GAAS,QAAA,CAAS,GAAT,EAAc;IACtB,WAAA,EAAa;EADS,CAAd;AAGT,SAAO,MAAM,CAAC,QAAP,CAAA;AALM",
|
10
|
-
"sourcesContent": [
|
11
|
-
"# server.coffee\r\n\r\nimport getline from 'readline-sync'\r\nimport {execSync} from 'child_process'\r\n\r\n# ---------------------------------------------------------------------------\r\n# exec - run external commands\r\n\r\nexport exec = (cmd) =>\r\n\r\n\tbuffer = execSync cmd, {\r\n\t\twindowsHide: true\r\n\t\t}\r\n\treturn buffer.toString()\r\n"
|
12
|
-
]
|
13
|
-
}
|