@jdeighan/coffee-utils 17.0.0 → 17.0.2

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,14 +1,12 @@
1
1
  {
2
2
  "name": "@jdeighan/coffee-utils",
3
3
  "type": "module",
4
- "version": "17.0.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",
@@ -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
@@ -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
- }
@@ -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
@@ -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
- }