Skip to content

Commit f0be039

Browse files
committed
fix(parameter_hunter): Replace algorithm
1 parent 6ea5eee commit f0be039

File tree

1 file changed

+9
-63
lines changed

1 file changed

+9
-63
lines changed

core/lib/parameter_hunter.js

Lines changed: 9 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
'use strict';
22

33
const path = require('path');
4-
const extend = require('util')._extend;
5-
const _ = require('lodash');
64

75
const getPartial = require('./get');
86
const logger = require('./log');
97
const parseLink = require('./parseLink');
10-
const render = require('./render');
118
const jsonCopy = require('./json_copy');
12-
const smh = require('./style_modifier_hunter');
13-
14-
const style_modifier_hunter = new smh();
9+
const replaceParameter = require('./replaceParameter');
1510

1611
const parameter_hunter = function () {
1712

@@ -248,8 +243,6 @@ const parameter_hunter = function () {
248243
//compile this partial immeadiately, essentially consuming it.
249244
function findparameters(pattern, patternlab) {
250245

251-
const expandPartials = require('./expandPartials');
252-
253246
if (pattern.parameteredPartials && pattern.parameteredPartials.length > 0) {
254247

255248
logger.debug(`processing patternParameters for ${pattern.partialName}`);
@@ -261,14 +254,17 @@ const parameter_hunter = function () {
261254

262255
//find the partial's name and retrieve it
263256
const partialName = pMatch.match(/([\w\-\.\/~]+)/g)[0];
264-
const partialPattern = getPartial(path.normalize(partialName), patternlab);
257+
const partialPattern = jsonCopy(getPartial(path.normalize(partialName), patternlab, `partial pattern ${partialName}`));
265258

266259
//if we retrieved a pattern we should make sure that its extendedTemplate is reset. looks to fix #190
267260
if (!partialPattern.extendedTemplate) {
268-
console.log(`264 setting the clean partialPattern ${partialPattern.patternPartial} template ${partialPattern.template} to the existing extendedTemplate ${partialPattern.extendedTemplate}`)
269261
partialPattern.extendedTemplate = partialPattern.template;
270262
}
271263

264+
if (!pattern.extendedTemplate) {
265+
pattern.extendedTemplate = pattern.template;
266+
}
267+
272268
logger.debug(`retrieved pattern ${partialName}`);
273269

274270
//strip out the additional data, convert string to JSON.
@@ -278,13 +274,9 @@ const parameter_hunter = function () {
278274
const paramStringWellFormed = paramToJson(paramString);
279275

280276
let paramData = {};
281-
let globalData = {};
282-
let localData = {};
283277

284278
try {
285279
paramData = JSON.parse(paramStringWellFormed);
286-
globalData = jsonCopy(patternlab.data, 'config.paths.source.data global data');
287-
localData = jsonCopy(pattern.jsonFileData || {}, `pattern ${pattern.patternPartial} data`);
288280
} catch (err) {
289281
logger.warning(`There was an error parsing JSON for ${pattern.relPath}`);
290282
logger.warning(err);
@@ -293,68 +285,22 @@ const parameter_hunter = function () {
293285
// resolve any pattern links that might be present
294286
paramData = parseLink(patternlab, paramData, pattern.patternPartial);
295287

296-
console.log('291', pMatch, paramData);
297-
298288
// for each property in paramData
299289
for (const prop in paramData) {
300290
if (paramData.hasOwnProperty(prop)) {
301291
// find it within partialPattern.extendedTemplate and replace its value
302-
partialPattern.extendedTemplate = partialPattern.extendedTemplate.replace(`{{${prop}}}`, paramData[prop]);
292+
partialPattern.extendedTemplate = replaceParameter(partialPattern.extendedTemplate, prop, paramData[prop]);
303293
}
304294
}
305295

306296
// set pattern.extendedTemplate pMatch with replacedPartial
307297
pattern.extendedTemplate = pattern.extendedTemplate.replace(pMatch, partialPattern.extendedTemplate);
308298

309-
console.log(301, 'partialPatternTemplate is now', partialPattern.extendedTemplate)
310-
311-
// return expandPartials(pattern, patternlab);
312-
299+
//todo: this no longer needs to be a promise
313300
return Promise.resolve();
314301

315-
316-
//combine all data: GLOBAL DATA => PATTERN.JSON DATA => PARAMETER DATA
317-
let allData = _.merge(globalData, localData);
318-
allData = _.merge(allData, paramData);
319-
320-
//if the partial has pattern parameters itself, we need to handle those
321-
return findparameters(partialPattern, patternlab).then(() => {
322-
323-
324-
325-
logger.debug(`recursively checking the partial itself ${partialPattern.patternPartial}`);
326-
327-
//if partial has style modifier data, replace the styleModifier value
328-
if (pattern.stylePartials && pattern.stylePartials.length > 0) {
329-
style_modifier_hunter.consume_style_modifier(partialPattern, pMatch, patternlab);
330-
}
331-
332-
//extend pattern data links into link for pattern link shortcuts to work. we do this locally and globally
333-
allData.link = extend({}, patternlab.data.link);
334-
console.log(307, allData.link)
335-
336-
return render(partialPattern, allData).then((results) => {
337-
338-
console.log('310 pattern', pattern.patternPartial, 'cleanPartial', partialPattern.patternPartial, results)
339-
340-
logger.debug(`rendering the partialpattern ${partialPattern.patternPartial}`);
341-
342-
//defensively do this in case not set yet
343-
if (!pattern.extendedTemplate) {
344-
pattern.extendedTemplate = pattern.template;
345-
}
346-
347-
console.log(`parameter_hunter 320 within ${pattern.patternPartial}, replacing partial ${pMatch} with ${results}`)
348-
//remove the parameter from the partial and replace it with the rendered partial + paramData
349-
pattern.extendedTemplate = pattern.extendedTemplate.replace(pMatch, results);
350-
console.log(`extendedTemplate now ${pattern.extendedTemplate}`)
351-
352-
//update the extendedTemplate in the partials object in case this pattern is consumed later
353-
patternlab.partials[pattern.patternPartial] = pattern.extendedTemplate;
354-
return Promise.resolve();
355-
});
356-
});
357302
}).catch(reason => {
303+
console.log(reason);
358304
logger.error(reason);
359305
});
360306
}, Promise.resolve());

0 commit comments

Comments
 (0)