@@ -266,6 +266,37 @@ var patternlab_engine = function (config) {
266266 }
267267 }
268268
269+ function writePatternFiles ( headHTML , pattern , footerHTML ) {
270+ const nullFormatter = str => str ;
271+ const defaultFormatter = codeString => cleanHtml ( codeString , { indent_size : 2 } ) ;
272+ const makePath = type => path . join ( paths . public . patterns , pattern . getPatternLink ( patternlab , type ) ) ;
273+ const patternPage = headHTML + pattern . patternPartialCode + footerHTML ;
274+ const eng = pattern . engine ;
275+
276+ //beautify the output if configured to do so
277+ const formatters = config . cleanOutputHtml ? {
278+ rendered : eng . renderedCodeFormatter || defaultFormatter ,
279+ rawTemplate : eng . rawTemplateCodeFormatter || defaultFormatter ,
280+ markupOnly : eng . markupOnlyCodeFormatter || defaultFormatter
281+ } : {
282+ rendered : nullFormatter ,
283+ rawTemplate : nullFormatter ,
284+ markupOnly : nullFormatter
285+ } ;
286+
287+ //prepare the path and contents of each output file
288+ const outputFiles = [
289+ { path : makePath ( 'rendered' ) , content : formatters . rendered ( patternPage , pattern ) } ,
290+ { path : makePath ( 'rawTemplate' ) , content : formatters . rawTemplate ( pattern . template , pattern ) } ,
291+ { path : makePath ( 'markupOnly' ) , content : formatters . markupOnly ( pattern . patternPartialCode , pattern ) }
292+ ] . concat (
293+ eng . addOutputFiles ? eng . addOutputFiles ( paths , patternlab ) : [ ]
294+ ) ;
295+
296+ //write the compiled template to the public patterns directory
297+ outputFiles . forEach ( outFile => fs . outputFileSync ( outFile . path , outFile . content ) ) ;
298+ }
299+
269300 function buildPatterns ( deletePatternDir ) {
270301
271302 patternlab . events . emit ( 'patternlab-build-pattern-start' , patternlab ) ;
@@ -427,21 +458,7 @@ var patternlab_engine = function (config) {
427458 patternlab . events . emit ( 'patternlab-pattern-write-begin' , patternlab , pattern ) ;
428459
429460 //write the compiled template to the public patterns directory
430- var patternPage = headHTML + pattern . patternPartialCode + footerHTML ;
431-
432- //beautify the output if configured to do so
433- var cleanedPatternPage = config . cleanOutputHtml ? cleanHtml ( patternPage , { indent_size : 2 } ) : patternPage ;
434- var cleanedPatternPartialCode = config . cleanOutputHtml ? cleanHtml ( pattern . patternPartialCode , { indent_size : 2 } ) : pattern . patternPartialCode ;
435- var cleanedPatternTemplateCode = config . cleanOutputHtml ? cleanHtml ( pattern . template , { indent_size : 2 } ) : pattern . template ;
436-
437- //write the compiled template to the public patterns directory
438- fs . outputFileSync ( paths . public . patterns + pattern . getPatternLink ( patternlab , 'rendered' ) , cleanedPatternPage ) ;
439-
440- //write the mustache file too
441- fs . outputFileSync ( paths . public . patterns + pattern . getPatternLink ( patternlab , 'rawTemplate' ) , cleanedPatternTemplateCode ) ;
442-
443- //write the encoded version too
444- fs . outputFileSync ( paths . public . patterns + pattern . getPatternLink ( patternlab , 'markupOnly' ) , cleanedPatternPartialCode ) ;
461+ writePatternFiles ( headHTML , pattern , footerHTML ) ;
445462
446463 patternlab . events . emit ( 'patternlab-pattern-write-end' , patternlab , pattern ) ;
447464
0 commit comments