Skip to content

Commit 36a63f7

Browse files
authored
Merge pull request #902 from sghoweri/feature/engine-twig-php--uikit-twig
Twig PHP Engine Updates
2 parents b475374 + 18ac7a5 commit 36a63f7

File tree

14 files changed

+240
-41
lines changed

14 files changed

+240
-41
lines changed

packages/core/src/lib/buildFooter.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,17 @@ let render = require('./render'); //eslint-disable-line prefer-const
1515
*/
1616
module.exports = function(patternlab, patternPartial, uikit) {
1717
//first render the general footer
18-
return render(Pattern.createEmpty({ extendedTemplate: uikit.footer }), {
19-
patternData: JSON.stringify({
20-
patternPartial: patternPartial,
21-
}),
22-
cacheBuster: patternlab.cacheBuster,
23-
})
18+
return render(
19+
uikit.footer.path
20+
? Pattern.createEmpty({ relPath: uikit.footer.path })
21+
: Pattern.createEmpty({ extendedTemplate: uikit.footer }),
22+
{
23+
patternData: JSON.stringify({
24+
patternPartial: patternPartial,
25+
}),
26+
cacheBuster: patternlab.cacheBuster,
27+
}
28+
)
2429
.then(footerPartial => {
2530
let allFooterData;
2631
try {

packages/core/src/lib/buildPatterns.js

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,29 @@ module.exports = (deletePatternDir, patternlab, additionalData) => {
100100
//cascade any patternStates
101101
lineage_hunter.cascade_pattern_states(patternlab);
102102

103+
let plHeader = Pattern.createEmpty({
104+
extendedTemplate: patternlab.header,
105+
});
106+
107+
// because patternlab.header doesn't yet exist, we need to check the first uikit condfig specified to see if a template path is defined there, otherwise use the original default logic.
108+
if (
109+
patternlab.header === undefined &&
110+
patternlab.uikits[Object.keys(patternlab.uikits)[0]]
111+
.header !== undefined &&
112+
patternlab.uikits[Object.keys(patternlab.uikits)[0]].header
113+
.path !== undefined
114+
) {
115+
plHeader = Pattern.createEmpty({
116+
relPath:
117+
patternlab.uikits[Object.keys(patternlab.uikits)[0]]
118+
.header.path,
119+
});
120+
}
121+
103122
//set the pattern-specific header by compiling the general-header with data, and then adding it to the meta header
104123
return render(
105-
Pattern.createEmpty({
106-
// todo should this be uikit.header?
107-
extendedTemplate: patternlab.header,
108-
}),
124+
// todo should this be uikit.header?
125+
plHeader,
109126
{
110127
cacheBuster: patternlab.cacheBuster,
111128
}

packages/core/src/lib/compose.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ module.exports = function(pattern, patternlab) {
6868
headPromise = render(patternlab.userHead, allData);
6969
} else {
7070
headPromise = render(
71-
Pattern.createEmpty({ extendedTemplate: uikit.header }),
71+
uikit.header.path
72+
? Pattern.createEmpty({ relPath: uikit.header.path })
73+
: Pattern.createEmpty({ extendedTemplate: uikit.header }),
7274
allData
7375
);
7476
}
@@ -131,7 +133,9 @@ module.exports = function(pattern, patternlab) {
131133

132134
//set the pattern-specific footer by compiling the general-footer with data, and then adding it to the meta footer
133135
const footerPartialPromise = render(
134-
Pattern.createEmpty({ extendedTemplate: uikit.footer }),
136+
uikit.footer.path
137+
? Pattern.createEmpty({ relPath: uikit.footer.path })
138+
: Pattern.createEmpty({ extendedTemplate: uikit.footer }),
135139
{
136140
isPattern: pattern.isPattern,
137141
patternData: pattern.patternData,

packages/core/src/lib/loaduikits.js

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -68,23 +68,41 @@ module.exports = patternlab => {
6868
outputDir: configEntry.outputDir,
6969
excludedPatternStates: configEntry.excludedPatternStates,
7070
excludedTags: configEntry.excludedTags,
71-
header: readModuleFile(
72-
kit,
73-
paths.source.patternlabFiles['general-header']
74-
),
75-
footer: readModuleFile(
76-
kit,
77-
paths.source.patternlabFiles['general-footer']
78-
),
79-
patternSection: readModuleFile(
80-
kit,
81-
paths.source.patternlabFiles.patternSection
82-
),
83-
patternSectionSubType: readModuleFile(
84-
kit,
85-
paths.source.patternlabFiles.patternSectionSubtype
86-
),
87-
viewAll: readModuleFile(kit, paths.source.patternlabFiles.viewall),
71+
72+
/**
73+
* If the uikit asset config isn't a simple string path but an object,
74+
* don't automatically inline the file's contents. This also keeps the
75+
* door open for more advanced configurations down the road!
76+
*/
77+
header:
78+
typeof paths.source.patternlabFiles['general-header'] === 'object'
79+
? paths.source.patternlabFiles['general-header']
80+
: readModuleFile(
81+
kit,
82+
paths.source.patternlabFiles['general-header']
83+
),
84+
footer:
85+
typeof paths.source.patternlabFiles['general-footer'] === 'object'
86+
? paths.source.patternlabFiles['general-footer']
87+
: readModuleFile(
88+
kit,
89+
paths.source.patternlabFiles['general-footer']
90+
),
91+
patternSection:
92+
typeof paths.source.patternlabFiles.patternSection === 'object'
93+
? paths.source.patternlabFiles.patternSection
94+
: readModuleFile(kit, paths.source.patternlabFiles.patternSection),
95+
patternSectionSubType:
96+
typeof paths.source.patternlabFiles.patternSectionSubtype === 'object'
97+
? paths.source.patternlabFiles.patternSectionSubtype
98+
: readModuleFile(
99+
kit,
100+
paths.source.patternlabFiles.patternSectionSubtype
101+
),
102+
viewAll:
103+
typeof paths.source.patternlabFiles.viewall === 'object'
104+
? paths.source.patternlabFiles.viewall
105+
: readModuleFile(kit, paths.source.patternlabFiles.viewall),
88106
}; // [3]
89107
} catch (ex) {
90108
logger.error(ex);

packages/core/src/lib/ui_builder.js

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,9 @@ const ui_builder = function() {
519519
*/
520520
function buildViewAllHTML(patternlab, patterns, patternPartial, uikit) {
521521
return render(
522-
Pattern.createEmpty({ extendedTemplate: uikit.viewAll }),
522+
uikit.viewAll.path
523+
? Pattern.createEmpty({ relPath: uikit.viewAll.path })
524+
: Pattern.createEmpty({ extendedTemplate: uikit.viewAll }),
523525
{
524526
//data
525527
partials: patterns,
@@ -764,7 +766,9 @@ const ui_builder = function() {
764766
return new Promise(resolve => {
765767
//set the pattern-specific header by compiling the general-header with data, and then adding it to the meta header
766768
const headerPromise = render(
767-
Pattern.createEmpty({ extendedTemplate: uikit.header }),
769+
uikit.header.path
770+
? Pattern.createEmpty({ relPath: uikit.header.path })
771+
: Pattern.createEmpty({ extendedTemplate: uikit.header }),
768772
{
769773
cacheBuster: patternlab.cacheBuster,
770774
}
@@ -782,7 +786,9 @@ const ui_builder = function() {
782786

783787
//set the pattern-specific footer by compiling the general-footer with data, and then adding it to the meta footer
784788
const footerPromise = render(
785-
Pattern.createEmpty({ extendedTemplate: uikit.footer }),
789+
uikit.footer.path
790+
? Pattern.createEmpty({ relPath: uikit.footer.path })
791+
: Pattern.createEmpty({ extendedTemplate: uikit.footer }),
786792
{
787793
patternData: '{}',
788794
cacheBuster: patternlab.cacheBuster,
@@ -824,9 +830,13 @@ const ui_builder = function() {
824830

825831
//build the main styleguide page
826832
return render(
827-
Pattern.createEmpty({
828-
extendedTemplate: uikit.viewAll,
829-
}),
833+
uikit.viewAll.path
834+
? Pattern.createEmpty({
835+
relPath: uikit.viewAll.path,
836+
})
837+
: Pattern.createEmpty({
838+
extendedTemplate: uikit.viewAll,
839+
}),
830840
{
831841
partials: uniquePatterns,
832842
},

packages/edition-twig/package-lock.json

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/edition-twig/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
"dependencies": {
2424
"@pattern-lab/cli": "^0.0.1-alpha.19",
2525
"@pattern-lab/core": "^3.0.0-alpha.13",
26-
"@pattern-lab/engine-mustache": "^2.0.0-alpha.6",
2726
"@pattern-lab/engine-twig-php": "^0.1.0",
2827
"@pattern-lab/uikit-workshop": "^1.0.0-alpha.5"
2928
},

packages/edition-twig/patternlab-config.json

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22
"engines": {
33
"twig": {
44
"namespaces": [
5+
{
6+
"id": "uikit",
7+
"recursive": true,
8+
"paths": [
9+
"../uikit-workshop/views-twig/"
10+
]
11+
},
512
{
613
"id": "atoms",
714
"recursive": true,
@@ -101,11 +108,21 @@
101108
"annotations": "./source/_annotations/",
102109
"styleguide": "dist/",
103110
"patternlabFiles": {
104-
"general-header": "views/partials/general-header.mustache",
105-
"general-footer": "views/partials/general-footer.mustache",
106-
"patternSection": "views/partials/patternSection.mustache",
107-
"patternSectionSubtype": "views/partials/patternSectionSubtype.mustache",
108-
"viewall": "views/viewall.mustache"
111+
"general-header": {
112+
"path": "@uikit/general-header.twig"
113+
},
114+
"general-footer": {
115+
"path": "@uikit/general-footer.twig"
116+
},
117+
"patternSection": {
118+
"path": "@uikit/patternSection.twig"
119+
},
120+
"patternSectionSubtype": {
121+
"path": "@uikit/patternSectionSubtype.twig"
122+
},
123+
"viewall": {
124+
"path": "@uikit/viewall.twig"
125+
}
109126
},
110127
"js": "./source/js",
111128
"images": "./source/images",
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
There should be no reason to touch these files in day-to-day use.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<script type="text/json" id="pl-pattern-data-footer" class="pl-js-pattern-data">
2+
{{ patternData | raw }}
3+
</script>
4+
5+
<script>
6+
/*!
7+
* scriptLoader - v0.1
8+
*
9+
* Copyright (c) 2014 Dave Olsen, http://dmolsen.com
10+
* Licensed under the MIT license
11+
*
12+
*/
13+
14+
var scriptLoader = {
15+
16+
run: function(js,cb,target) {
17+
var s = document.getElementById(target+'-'+cb);
18+
for (var i = 0; i < js.length; i++) {
19+
var src = (typeof js[i] != 'string') ? js[i].src : js[i];
20+
var c = document.createElement('script');
21+
c.src = '../../'+src+'?'+cb;
22+
if (typeof js[i] != 'string') {
23+
if (js[i].dep !== undefined) {
24+
c.onload = function(dep,cb,target) {
25+
return function() {
26+
scriptLoader.run(dep,cb,target);
27+
}
28+
}(js[i].dep,cb,target);
29+
}
30+
}
31+
s.parentNode.insertBefore(c,s);
32+
}
33+
}
34+
35+
}
36+
</script>
37+
38+
<script id="pl-js-polyfill-insert-{{ cacheBuster }}">
39+
(function() {
40+
if (self != top) {
41+
var cb = '{{ cacheBuster}}';
42+
var js = [];
43+
scriptLoader.run(js,cb,'pl-js-polyfill-insert');
44+
}
45+
})();
46+
</script>
47+
48+
<script id="pl-js-insert-{{ cacheBuster }}">
49+
(function() {
50+
if (self != top) {
51+
var cb = '{{ cacheBuster}}';
52+
var js = [ { 'src': 'styleguide/bower_components/jwerty.min.js', 'dep': [ 'styleguide/js/patternlab-pattern.min.js' ] } ];
53+
scriptLoader.run(js,cb,'pl-js-insert');
54+
}
55+
})();
56+
</script>

0 commit comments

Comments
 (0)