Skip to content

Commit 600b990

Browse files
committed
Merge commit 'upstream/dev^' into pattern-engines
2 parents 86ae226 + 25d3b7f commit 600b990

19 files changed

+360
-447
lines changed

CHANGELOG

Lines changed: 0 additions & 228 deletions
This file was deleted.

Gruntfile.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ module.exports = function(grunt) {
103103
},
104104
snippetOptions: {
105105
// Ignore all HTML files within the templates folder
106-
blacklist: ['/index.html', '/']
106+
blacklist: ['/index.html', '/', '/?*']
107107
},
108108
plugins: [
109109
{

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ The Node version of [Pattern Lab](http://patternlab.io/) is, at its core, a stat
66

77
This repository contains the vanilla builder logic, grunt and gulp configurations, and some sample template/css/data to illustrate the power and flexibility of the tool.
88

9+
###### Core Team
10+
11+
* [@bmuenzenmeyer](https://github.com/bmuenzenmeyer) - Lead Maintainer
12+
* [@geoffp](https://github.com/geoffp) - Core Contributor
13+
914
### Prerequisites
1015

1116
Make sure Node and npm are installed. A great guide can be found here: [https://docs.npmjs.com/getting-started/installing-node](https://docs.npmjs.com/getting-started/installing-node)

builder/lineage_hunter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* patternlab-node - v1.1.2 - 2016
2+
* patternlab-node - v1.1.3 - 2016
33
*
44
* Brian Muenzenmeyer, and the web community.
55
* Licensed under the MIT license.

builder/list_item_hunter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* patternlab-node - v1.1.2 - 2016
2+
* patternlab-node - v1.1.3 - 2016
33
*
44
* Brian Muenzenmeyer, and the web community.
55
* Licensed under the MIT license.

builder/media_hunter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* patternlab-node - v1.1.2 - 2016
2+
* patternlab-node - v1.1.3 - 2016
33
*
44
* Brian Muenzenmeyer, and the web community.
55
* Licensed under the MIT license.

builder/object_factory.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* patternlab-node - v1.1.2 - 2016
2+
* patternlab-node - v1.1.3 - 2016
33
*
44
* Brian Muenzenmeyer, and the web community.
55
* Licensed under the MIT license.

builder/parameter_hunter.js

Lines changed: 89 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* patternlab-node - v1.1.2 - 2016
2+
* patternlab-node - v1.1.3 - 2016
33
*
44
* Brian Muenzenmeyer, and the web community.
55
* Licensed under the MIT license.
@@ -20,6 +20,93 @@
2020
style_modifier_hunter = new smh(),
2121
pattern_assembler = new pa();
2222

23+
function paramToJson(paramString) {
24+
var paramStringWellFormed = '';
25+
var paramStringTmp;
26+
var colonPos;
27+
var delimitPos;
28+
var quotePos;
29+
30+
do {
31+
//if param key is wrapped in single quotes, replace with double quotes.
32+
paramString = paramString.replace(/(^\s*[\{|\,]\s*)'([^']+)'(\s*\:)/, '$1"$2"$3');
33+
//if params key is not wrapped in any quotes, wrap in double quotes.
34+
paramString = paramString.replace(/(^\s*[\{|\,]\s*)([^\s"'\:]+)(\s*\:)/, '$1"$2"$3');
35+
//move param key to paramStringWellFormed var.
36+
colonPos = paramString.indexOf(':');
37+
//except to prevent infinite loops.
38+
if (colonPos === -1) {
39+
colonPos = paramString.length - 1;
40+
}
41+
else {
42+
colonPos += 1;
43+
}
44+
paramStringWellFormed += paramString.substring(0, colonPos);
45+
paramString = paramString.substring(colonPos, paramString.length).trim();
46+
47+
//if param value is wrapped in single quotes, replace with double quotes.
48+
if (paramString[0] === '\'') {
49+
quotePos = paramString.search(/[^\\]'/);
50+
//except for unclosed quotes to prevent infinite loops.
51+
if (quotePos === -1) {
52+
quotePos = paramString.length - 1;
53+
}
54+
else {
55+
quotePos += 2;
56+
}
57+
//prepare param value for move to paramStringWellFormed var.
58+
paramStringTmp = paramString.substring(0, quotePos);
59+
//unescape any escaped single quotes.
60+
paramStringTmp = paramStringTmp.replace(/\\'/g, '\'');
61+
//escape any double quotes.
62+
paramStringTmp = paramStringTmp.replace(/"/g, '\\"');
63+
//replace the delimiting single quotes with double quotes.
64+
paramStringTmp = paramStringTmp.replace(/^'/, '"');
65+
paramStringTmp = paramStringTmp.replace(/'$/, '"');
66+
//move param key to paramStringWellFormed var.
67+
paramStringWellFormed += paramStringTmp;
68+
paramString = paramString.substring(quotePos, paramString.length).trim();
69+
}
70+
//if param value is wrapped in double quotes, just move to paramStringWellFormed var.
71+
else if (paramString[0] === '"') {
72+
quotePos = paramString.search(/[^\\]"/);
73+
//except for unclosed quotes to prevent infinite loops.
74+
if (quotePos === -1) {
75+
quotePos = paramString.length - 1;
76+
}
77+
else {
78+
quotePos += 2;
79+
}
80+
//move param key to paramStringWellFormed var.
81+
paramStringWellFormed += paramString.substring(0, quotePos);
82+
paramString = paramString.substring(quotePos, paramString.length).trim();
83+
}
84+
//if param value is not wrapped in quotes, move everthing up to the delimiting comma to paramStringWellFormed var.
85+
else {
86+
delimitPos = paramString.indexOf(',');
87+
//except to prevent infinite loops.
88+
if (delimitPos === -1) {
89+
delimitPos = paramString.length - 1;
90+
}
91+
else {
92+
delimitPos += 1;
93+
}
94+
paramStringWellFormed += paramString.substring(0, delimitPos);
95+
paramString = paramString.substring(delimitPos, paramString.length).trim();
96+
}
97+
98+
//break at the end.
99+
if (paramString.length === 1) {
100+
paramStringWellFormed += paramString.trim();
101+
paramString = '';
102+
break;
103+
}
104+
105+
} while(paramString);
106+
107+
return paramStringWellFormed;
108+
}
109+
23110
function findparameters(pattern, patternlab){
24111

25112
if(pattern.parameteredPartials && pattern.parameteredPartials.length > 0){
@@ -39,12 +126,7 @@
39126
var leftParen = pMatch.indexOf('(');
40127
var rightParen = pMatch.indexOf(')');
41128
var paramString = '{' + pMatch.substring(leftParen + 1, rightParen) + '}';
42-
//if param keys are wrapped in single quotes, replace with double quotes.
43-
var paramStringWellFormed = paramString.replace(/(')([^']+)(')(\s*\:)/gm, '"$2"$4');
44-
//if params keys are not wrapped in any quotes, wrap in double quotes.
45-
var paramStringWellFormed = paramStringWellFormed.replace(/([\{|,]\s*)([^\:\s]+)(\s*\:)/gm, '$1"$2"$3');
46-
//if param values are wrapped in single quotes, replace with double quotes.
47-
var paramStringWellFormed = paramStringWellFormed.replace(/(\:\s*)(')([^']+)(')/gm, '$1"$3"');
129+
var paramStringWellFormed = paramToJson(paramString);
48130

49131
var paramData = {};
50132
var globalData = {};

builder/pattern_assembler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* patternlab-node - v1.1.2 - 2016
2+
* patternlab-node - v1.1.3 - 2016
33
*
44
* Brian Muenzenmeyer, and the web community.
55
* Licensed under the MIT license.

0 commit comments

Comments
 (0)