@jdeighan/coffee-utils 10.0.0 → 10.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
}
|