@jdeighan/coffee-utils 10.0.0 → 10.0.1
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 -1
- package/src/SectionMap.coffee +31 -12
- package/src/SectionMap.js +34 -14
package/package.json
CHANGED
package/src/SectionMap.coffee
CHANGED
@@ -83,37 +83,56 @@ export class SectionMap
|
|
83
83
|
# a set name
|
84
84
|
# undef (equivalent to being set to @SectionTree)
|
85
85
|
|
86
|
-
getBlock: (desc=undef,
|
86
|
+
getBlock: (desc=undef, hReplacers={}) ->
|
87
87
|
|
88
|
-
debug "enter SectionMap.getBlock()", desc,
|
88
|
+
debug "enter SectionMap.getBlock()", desc, hReplacers
|
89
89
|
|
90
|
-
|
90
|
+
# --- desc can only be a string or an array
|
91
|
+
# so, if it's a hash, then it's really the hReplacers
|
92
|
+
# and the real desc is undef
|
93
|
+
|
94
|
+
if isHash(desc)
|
95
|
+
debug "arg 1 is hReplacers, no desc"
|
96
|
+
assert isEmpty(hReplacers), "invalid parms"
|
97
|
+
hReplacers = desc
|
98
|
+
desc = @lSectionTree
|
99
|
+
else if notdefined(desc)
|
91
100
|
desc = @lSectionTree
|
92
101
|
|
93
102
|
if isArray(desc)
|
94
103
|
lBlocks = []
|
95
104
|
setName = undef
|
96
105
|
for item in desc
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
106
|
+
subBlock = undef
|
107
|
+
if isArray(item)
|
108
|
+
subBlock = @getBlock(item, hReplacers)
|
109
|
+
else if isSectionName(item)
|
110
|
+
subBlock = @getBlock(item, hReplacers)
|
101
111
|
else if isSetName(item)
|
102
112
|
setName = item
|
103
113
|
else if isString(item)
|
104
|
-
|
114
|
+
subBlock = item # a literal string
|
105
115
|
else
|
106
116
|
croak "Bad item: #{OL(item)}"
|
117
|
+
if defined(subBlock)
|
118
|
+
lBlocks.push subBlock
|
107
119
|
block = arrayToBlock(lBlocks)
|
120
|
+
if defined(setName)
|
121
|
+
if defined(proc = hReplacers[setName])
|
122
|
+
debug "REPLACE #{setName}"
|
123
|
+
block = proc(block)
|
124
|
+
else
|
125
|
+
debug "NO REPLACER for #{setName}"
|
108
126
|
else if isSectionName(desc)
|
109
127
|
block = @section(desc).getBlock()
|
110
|
-
if defined(proc =
|
128
|
+
if defined(proc = hReplacers[desc])
|
129
|
+
debug "REPLACE #{desc}"
|
111
130
|
block = proc(block)
|
131
|
+
else
|
132
|
+
debug "NO REPLACER for #{desc}"
|
112
133
|
else if isSetName(desc)
|
113
134
|
# --- pass array to getBlock()
|
114
|
-
block = @getBlock(@hSets[desc],
|
115
|
-
if defined(proc = hProcs[desc])
|
116
|
-
block = proc(block)
|
135
|
+
block = @getBlock(@hSets[desc], hReplacers)
|
117
136
|
else
|
118
137
|
croak "Bad 1st arg: #{OL(desc)}"
|
119
138
|
debug "return from SectionMap.getBlock()", block
|
package/src/SectionMap.js
CHANGED
@@ -114,10 +114,18 @@ export var SectionMap = class SectionMap {
|
|
114
114
|
// a section name
|
115
115
|
// a set name
|
116
116
|
// undef (equivalent to being set to @SectionTree)
|
117
|
-
getBlock(desc = undef,
|
118
|
-
var block, i, item, lBlocks, len, proc, setName;
|
119
|
-
debug("enter SectionMap.getBlock()", desc,
|
120
|
-
|
117
|
+
getBlock(desc = undef, hReplacers = {}) {
|
118
|
+
var block, i, item, lBlocks, len, proc, setName, subBlock;
|
119
|
+
debug("enter SectionMap.getBlock()", desc, hReplacers);
|
120
|
+
// --- desc can only be a string or an array
|
121
|
+
// so, if it's a hash, then it's really the hReplacers
|
122
|
+
// and the real desc is undef
|
123
|
+
if (isHash(desc)) {
|
124
|
+
debug("arg 1 is hReplacers, no desc");
|
125
|
+
assert(isEmpty(hReplacers), "invalid parms");
|
126
|
+
hReplacers = desc;
|
127
|
+
desc = this.lSectionTree;
|
128
|
+
} else if (notdefined(desc)) {
|
121
129
|
desc = this.lSectionTree;
|
122
130
|
}
|
123
131
|
if (isArray(desc)) {
|
@@ -125,30 +133,42 @@ export var SectionMap = class SectionMap {
|
|
125
133
|
setName = undef;
|
126
134
|
for (i = 0, len = desc.length; i < len; i++) {
|
127
135
|
item = desc[i];
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
136
|
+
subBlock = undef;
|
137
|
+
if (isArray(item)) {
|
138
|
+
subBlock = this.getBlock(item, hReplacers);
|
139
|
+
} else if (isSectionName(item)) {
|
140
|
+
subBlock = this.getBlock(item, hReplacers);
|
132
141
|
} else if (isSetName(item)) {
|
133
142
|
setName = item;
|
134
143
|
} else if (isString(item)) {
|
135
|
-
|
144
|
+
subBlock = item; // a literal string
|
136
145
|
} else {
|
137
146
|
croak(`Bad item: ${OL(item)}`);
|
138
147
|
}
|
148
|
+
if (defined(subBlock)) {
|
149
|
+
lBlocks.push(subBlock);
|
150
|
+
}
|
139
151
|
}
|
140
152
|
block = arrayToBlock(lBlocks);
|
153
|
+
if (defined(setName)) {
|
154
|
+
if (defined(proc = hReplacers[setName])) {
|
155
|
+
debug(`REPLACE ${setName}`);
|
156
|
+
block = proc(block);
|
157
|
+
} else {
|
158
|
+
debug(`NO REPLACER for ${setName}`);
|
159
|
+
}
|
160
|
+
}
|
141
161
|
} else if (isSectionName(desc)) {
|
142
162
|
block = this.section(desc).getBlock();
|
143
|
-
if (defined(proc =
|
163
|
+
if (defined(proc = hReplacers[desc])) {
|
164
|
+
debug(`REPLACE ${desc}`);
|
144
165
|
block = proc(block);
|
166
|
+
} else {
|
167
|
+
debug(`NO REPLACER for ${desc}`);
|
145
168
|
}
|
146
169
|
} else if (isSetName(desc)) {
|
147
170
|
// --- pass array to getBlock()
|
148
|
-
block = this.getBlock(this.hSets[desc],
|
149
|
-
if (defined(proc = hProcs[desc])) {
|
150
|
-
block = proc(block);
|
151
|
-
}
|
171
|
+
block = this.getBlock(this.hSets[desc], hReplacers);
|
152
172
|
} else {
|
153
173
|
croak(`Bad 1st arg: ${OL(desc)}`);
|
154
174
|
}
|