@@ -45,7 +45,9 @@ var pattern_assembler = function () {
4545 return patternlab . patterns [ i ] ;
4646 }
4747 }
48- console . error ( 'Could not find pattern with partial ' + partialName ) ;
48+ if ( patternlab . config . debug ) {
49+ console . error ( 'Could not find pattern with partial ' + partialName ) ;
50+ }
4951 return undefined ;
5052 }
5153
@@ -92,7 +94,7 @@ var pattern_assembler = function () {
9294 function addPattern ( pattern , patternlab ) {
9395
9496 //add the link to the global object
95- patternlab . data . link [ pattern . patternPartial ] = '/patterns/' + pattern . patternLink ;
97+ patternlab . data . link [ pattern . patternPartial ] = '/patterns/' + pattern . patternLink . replace ( '.html' , patternlab . config . outputFileSuffixes . rendered + '.html' ) ;
9698
9799 //only push to array if the array doesn't contain this pattern
98100 var isNew = true ;
@@ -219,7 +221,7 @@ var pattern_assembler = function () {
219221 subTypePattern . isPattern = false ;
220222 subTypePattern . engine = null ;
221223
222- addSubtypePattern ( subTypePattern , patternlab )
224+ addSubtypePattern ( subTypePattern , patternlab ) ;
223225 return subTypePattern ;
224226 }
225227 } catch ( err ) {
@@ -410,21 +412,45 @@ var pattern_assembler = function () {
410412 }
411413
412414 function parseDataLinksHelper ( patternlab , obj , key ) {
413- var linkRE , dataObjAsString , linkMatches , expandedLink ;
415+ var linkRE , dataObjAsString , linkMatches ;
414416
417+ //check for link.patternPartial
415418 linkRE = / l i n k \. [ A - z 0 - 9 - _ ] + / g;
419+
420+ //stringify the passed in object
416421 dataObjAsString = JSON5 . stringify ( obj ) ;
422+ if ( ! dataObjAsString ) { return obj ; }
423+
424+ //find matches
417425 linkMatches = dataObjAsString . match ( linkRE ) ;
418426
419427 if ( linkMatches ) {
420428 for ( var i = 0 ; i < linkMatches . length ; i ++ ) {
421- expandedLink = encodeURI ( patternlab . data . link [ linkMatches [ i ] . split ( '.' ) [ 1 ] ] ) ;
422- if ( expandedLink ) {
423- expandedLink = expandedLink . replace ( '\\' , '/' ) ;
424- if ( patternlab . config . debug ) {
425- console . log ( 'expanded data link from ' + linkMatches [ i ] + ' to ' + expandedLink + ' inside ' + key ) ;
429+ var dataLink = linkMatches [ i ] ;
430+ if ( dataLink && dataLink . split ( '.' ) . length >= 2 ) {
431+
432+ //get the partial the link refers to
433+ var linkPatternPartial = dataLink . split ( '.' ) [ 1 ] ;
434+ var pattern = getPartial ( linkPatternPartial , patternlab ) ;
435+ if ( pattern !== undefined ) {
436+
437+ //get the full built link and replace it
438+ var fullLink = patternlab . data . link [ linkPatternPartial ] ;
439+ if ( fullLink ) {
440+ fullLink = path . normalize ( fullLink ) . replace ( / \\ / g, '/' ) ;
441+ if ( patternlab . config . debug ) {
442+ console . log ( 'expanded data link from ' + dataLink + ' to ' + fullLink + ' inside ' + key ) ;
443+ }
444+
445+ //also make sure our global replace didn't mess up a protocol
446+ fullLink = fullLink . replace ( / : \/ / g, '://' ) ;
447+ dataObjAsString = dataObjAsString . replace ( dataLink , fullLink ) ;
448+ }
449+ } else {
450+ if ( patternlab . config . debug ) {
451+ console . log ( 'pattern not found for' , dataLink , 'inside' , key ) ;
452+ }
426453 }
427- dataObjAsString = dataObjAsString . replace ( linkMatches [ i ] , expandedLink ) ;
428454 }
429455 }
430456 }
@@ -449,7 +475,7 @@ var pattern_assembler = function () {
449475
450476 //loop through all patterns
451477 for ( var i = 0 ; i < patternlab . patterns . length ; i ++ ) {
452- patternlab . patterns [ i ] . jsonFileData = parseDataLinksHelper ( patternlab , patternlab . patterns [ i ] . jsonFileData , patternlab . patterns [ i ] . partial ) ;
478+ patternlab . patterns [ i ] . jsonFileData = parseDataLinksHelper ( patternlab , patternlab . patterns [ i ] . jsonFileData , patternlab . patterns [ i ] . patternPartial ) ;
453479 }
454480 }
455481
0 commit comments