@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 CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jdeighan/coffee-utils",
3
3
  "type": "module",
4
- "version": "10.0.0",
4
+ "version": "10.0.1",
5
5
  "description": "A set of utility functions for CoffeeScript",
6
6
  "main": "coffee_utils.js",
7
7
  "exports": {
@@ -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, hProcs={}) ->
86
+ getBlock: (desc=undef, hReplacers={}) ->
87
87
 
88
- debug "enter SectionMap.getBlock()", desc, hProcs
88
+ debug "enter SectionMap.getBlock()", desc, hReplacers
89
89
 
90
- if notdefined(desc)
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
- if isArray(item) || isSectionName(item)
98
- # --- arrayToBlock() will skip undef items
99
- # so, no need to check for undef block
100
- lBlocks.push @getBlock(item, hProcs)
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
- lBlocks.push item # a literal string
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 = hProcs[desc])
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], hProcs)
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, hProcs = {}) {
118
- var block, i, item, lBlocks, len, proc, setName;
119
- debug("enter SectionMap.getBlock()", desc, hProcs);
120
- if (notdefined(desc)) {
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
- if (isArray(item) || isSectionName(item)) {
129
- // --- arrayToBlock() will skip undef items
130
- // so, no need to check for undef block
131
- lBlocks.push(this.getBlock(item, hProcs));
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
- lBlocks.push(item); // a literal string
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 = hProcs[desc])) {
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], hProcs);
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
  }