fable 3.0.92 → 3.0.94

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,6 +1,6 @@
1
1
  {
2
2
  "name": "fable",
3
- "version": "3.0.92",
3
+ "version": "3.0.94",
4
4
  "description": "An entity behavior management and API bundling library.",
5
5
  "main": "source/Fable.js",
6
6
  "scripts": {
@@ -189,6 +189,52 @@ class StringParser
189
189
  return false;
190
190
  }
191
191
 
192
+ executePatternAsync(pParserState, pData, fCallback)
193
+ {
194
+ // ... this is the end of a pattern, cut off the end tag and parse it.
195
+ // Trim the start and end tags off the output buffer now
196
+ if (pParserState.Pattern.isAsync && !pParserState.Pattern.isBoth)
197
+ {
198
+ // Run the function
199
+ return pParserState.Pattern.Parse(pParserState.OutputBuffer.substr(pParserState.Pattern.PatternStartString.length, pParserState.OutputBuffer.length - (pParserState.Pattern.PatternStartString.length+pParserState.Pattern.PatternEndString.length)), pData,
200
+ (pError, pAsyncOutput) =>
201
+ {
202
+ if (pError)
203
+ {
204
+ console.log(`Precedent ERROR: Async template error happened parsing ${pParserState.Pattern.PatternStart} ... ${pParserState.Pattern.PatternEnd}: ${pError}`);
205
+ }
206
+
207
+ pParserState.OutputBuffer = pAsyncOutput;
208
+ this.resetOutputBuffer(pParserState);
209
+ return setTimeout(fCallback, 0);
210
+ });
211
+ }
212
+ else if (pParserState.Pattern.isAsync && pParserState.Pattern.isBoth)
213
+ {
214
+ // Run the function when both async and non async were provided with the pattern
215
+ return pParserState.Pattern.ParseAsync(pParserState.OutputBuffer.substr(pParserState.Pattern.PatternStartString.length, pParserState.OutputBuffer.length - (pParserState.Pattern.PatternStartString.length+pParserState.Pattern.PatternEndString.length)), pData,
216
+ (pError, pAsyncOutput) =>
217
+ {
218
+ if (pError)
219
+ {
220
+ console.log(`Precedent ERROR: Async template error happened parsing ${pParserState.Pattern.PatternStart} ... ${pParserState.Pattern.PatternEnd}: ${pError}`);
221
+ }
222
+
223
+ pParserState.OutputBuffer = pAsyncOutput;
224
+ this.resetOutputBuffer(pParserState);
225
+ return setTimeout(fCallback, 0);
226
+ });
227
+ }
228
+ else
229
+ {
230
+ // Run the t*mplate function
231
+ pParserState.OutputBuffer = pParserState.Pattern.Parse(pParserState.OutputBuffer.substr(pParserState.Pattern.PatternStartString.length, pParserState.OutputBuffer.length - (pParserState.Pattern.PatternStartString.length+pParserState.Pattern.PatternEndString.length)), pData);
232
+ this.resetOutputBuffer(pParserState);
233
+ return setTimeout(fCallback, 0);
234
+ }
235
+ }
236
+
237
+
192
238
  /**
193
239
  * Parse a character in the buffer.
194
240
  * @method parseCharacter
@@ -218,47 +264,7 @@ class StringParser
218
264
  // If this last character is the end of the pattern, parse it.
219
265
  if (pParserState.Pattern.hasOwnProperty('Parse'))
220
266
  {
221
- // ... this is the end of a pattern, cut off the end tag and parse it.
222
- // Trim the start and end tags off the output buffer now
223
- if (pParserState.Pattern.isAsync && !pParserState.Pattern.isBoth)
224
- {
225
- // Run the function
226
- return pParserState.Pattern.Parse(pParserState.OutputBuffer.substr(pParserState.Pattern.PatternStartString.length, pParserState.OutputBuffer.length - (pParserState.Pattern.PatternStartString.length+pParserState.Pattern.PatternEndString.length)), pData,
227
- (pError, pAsyncOutput) =>
228
- {
229
- if (pError)
230
- {
231
- console.log(`Precedent ERROR: Async template error happened parsing ${pParserState.Pattern.PatternStart} ... ${pParserState.Pattern.PatternEnd}: ${pError}`);
232
- }
233
-
234
- pParserState.OutputBuffer = pAsyncOutput;
235
- this.resetOutputBuffer(pParserState);
236
- return fCallback();
237
- });
238
- }
239
- else if (pParserState.Pattern.isAsync && pParserState.Pattern.isBoth)
240
- {
241
- // Run the function when both async and non async were provided with the pattern
242
- return pParserState.Pattern.ParseAsync(pParserState.OutputBuffer.substr(pParserState.Pattern.PatternStartString.length, pParserState.OutputBuffer.length - (pParserState.Pattern.PatternStartString.length+pParserState.Pattern.PatternEndString.length)), pData,
243
- (pError, pAsyncOutput) =>
244
- {
245
- if (pError)
246
- {
247
- console.log(`Precedent ERROR: Async template error happened parsing ${pParserState.Pattern.PatternStart} ... ${pParserState.Pattern.PatternEnd}: ${pError}`);
248
- }
249
-
250
- pParserState.OutputBuffer = pAsyncOutput;
251
- this.resetOutputBuffer(pParserState);
252
- return fCallback();
253
- });
254
- }
255
- else
256
- {
257
- // Run the t*mplate function
258
- pParserState.OutputBuffer = pParserState.Pattern.Parse(pParserState.OutputBuffer.substr(pParserState.Pattern.PatternStartString.length, pParserState.OutputBuffer.length - (pParserState.Pattern.PatternStartString.length+pParserState.Pattern.PatternEndString.length)), pData);
259
- this.resetOutputBuffer(pParserState);
260
- return fCallback();
261
- }
267
+ return this.executePatternAsync(pParserState, pData, fCallback);
262
268
  }
263
269
  }
264
270
  else if (pParserState.PatternStartNode.PatternEnd.hasOwnProperty(pCharacter))
@@ -292,31 +298,7 @@ class StringParser
292
298
  // If this last character is the end of the pattern, parse it.
293
299
  if (pParserState.Pattern.hasOwnProperty('Parse'))
294
300
  {
295
- // ... this is the end of a pattern, cut off the end tag and parse it.
296
- // Trim the start and end tags off the output buffer now
297
- if (pParserState.Pattern.isAsync)
298
- {
299
- // Run the function
300
- return pParserState.Pattern.Parse(pParserState.OutputBuffer.substr(pParserState.Pattern.PatternStartString.length, pParserState.OutputBuffer.length - (pParserState.Pattern.PatternStartString.length+pParserState.Pattern.PatternEndString.length)), pData,
301
- (pError, pAsyncOutput) =>
302
- {
303
- if (pError)
304
- {
305
- console.log(`Precedent ERROR: Async template error happened parsing ${pParserState.Pattern.PatternStart} ... ${pParserState.Pattern.PatternEnd}: ${pError}`);
306
- }
307
-
308
- pParserState.OutputBuffer = pAsyncOutput;
309
- this.resetOutputBuffer(pParserState);
310
- return fCallback();
311
- });
312
- }
313
- else
314
- {
315
- // Run the t*mplate function
316
- pParserState.OutputBuffer = pParserState.Pattern.Parse(pParserState.OutputBuffer.substr(pParserState.Pattern.PatternStartString.length, pParserState.OutputBuffer.length - (pParserState.Pattern.PatternStartString.length+pParserState.Pattern.PatternEndString.length)), pData);
317
- this.resetOutputBuffer(pParserState);
318
- return fCallback();
319
- }
301
+ return this.executePatternAsync(pParserState, pData, fCallback);
320
302
  }
321
303
  }
322
304
  }
@@ -324,11 +306,10 @@ class StringParser
324
306
  {
325
307
  // We are in a pattern start but didn't match one; reset and start trying again from this character.
326
308
  this.resetOutputBuffer(pParserState);
327
- return fCallback();
328
309
  }
329
310
  }
330
311
  // If we aren't in a pattern match or pattern, and this isn't the start of a new pattern (RAW mode)....
331
- if (!pParserState.PatternMatch)
312
+ else
332
313
  {
333
314
  // This may be the start of a new pattern....
334
315
  if (pParserState.ParseTree.hasOwnProperty(pCharacter))
@@ -344,7 +325,8 @@ class StringParser
344
325
  this.appendOutputBuffer(pCharacter, pParserState);
345
326
  }
346
327
  }
347
- return fCallback();
328
+ // Without this, templates of all sizes work fine in node. They do not in the browser.
329
+ return setTimeout(fCallback, 0);
348
330
  }
349
331
 
350
332
  /**