diff --git a/server/homebrew.api.spec.js b/server/homebrew.api.spec.js index 4f151aeac..60f32c940 100644 --- a/server/homebrew.api.spec.js +++ b/server/homebrew.api.spec.js @@ -1127,6 +1127,79 @@ brew`); // Text expect(testBrew.text).toEqual('text\n'); }); + + it('extended metadata', async ()=>{ + const testBrew = { + text : '```metadata\n' + + 'title: title\n' + + 'description: description\n' + + 'tags: [ \'tag a\' , \'tag b\' ]\n' + + 'renderer: legacy\n' + + 'theme: 5ePHB\n' + + 'lang: en\n' + + 'bleed:\n' + + ' top: 1.5in\n' + + ' bottom: 1.5in\n' + + ' left: 1.5in\n' + + ' right: 1.5in\n' + + 'safetySpace:\n' + + ' top: 1.25in\n' + + ' bottom: 1.25in\n' + + ' outer: 1.25in\n' + + ' inner: 1.5in\n' + + 'trimSize:\n' + + ' width: 18.5in\n' + + ' height: 111in\n' + + 'columns: 12\n' + + 'columnGutter: 1.125in\n' + + 'license: AELF\n' + + 'legalAuthors: Tom Bombadil\n' + + '\n' + + '```\n' + + '\n' + + '```css\n' + + 'style\n' + + 'style\n' + + 'style\n' + + '```\n' + + '\n' + + 'text\n' + }; + + splitTextStyleAndMetadata(testBrew); + + // Metadata + expect(testBrew.title).toEqual('title'); + expect(testBrew.description).toEqual('description'); + expect(testBrew.renderer).toEqual('legacy'); + expect(testBrew.theme).toEqual('5ePHB'); + expect(testBrew.lang).toEqual('en'); + // Paper Specfications + expect(testBrew.bleed.top).toEqual('1.5in'); + expect(testBrew.bleed.bottom).toEqual('1.5in'); + expect(testBrew.bleed.left).toEqual('1.5in'); + expect(testBrew.bleed.right).toEqual('1.5in'); + + expect(testBrew.safetySpace.top).toEqual('1.25in'); + expect(testBrew.safetySpace.bottom).toEqual('1.25in'); + expect(testBrew.safetySpace.inner).toEqual('1.5in'); + expect(testBrew.safetySpace.outer).toEqual('1.25in'); + + expect(testBrew.trimSize.width).toEqual('18.5in'); + expect(testBrew.trimSize.height).toEqual('111in'); + + expect(testBrew.columns).toEqual(12); + expect(testBrew.columnGutter).toEqual('1.125in'); + + // Extended Metadata + expect(testBrew.license).toEqual('AELF'); + expect(testBrew.legalAuthors).toEqual('Tom Bombadil'); + + // Style + expect(testBrew.style).toEqual('style\nstyle\nstyle\n'); + // Text + expect(testBrew.text).toEqual('text\n'); + }); }); describe('updateBrew', ()=>{ diff --git a/shared/helpers.js b/shared/helpers.js index 2d75ae6b8..18dd127ff 100644 --- a/shared/helpers.js +++ b/shared/helpers.js @@ -95,36 +95,37 @@ const splitTextStyleAndMetadata = (brew)=>{ brew.snippets = yamlSnippetsToText(_.pick(metadata, ['snippets']).snippets || ''); // Copy Required Bleed Space or Use defaults + brew.bleed = { - top : _.pick(metadata, ['bleed']).top || '.125in', - bottom : _.pick(metadata, ['bleed']).bottom || '.125in', - left : _.pick(metadata, ['bleed']).left || '.125in', - right : _.pick(metadata, ['bleed']).right || '.125in', + top : _.pick(metadata, ['bleed']).bleed?.top || '.125in', + bottom : _.pick(metadata, ['bleed']).bleed?.bottom || '.125in', + left : _.pick(metadata, ['bleed']).bleed?.left || '.125in', + right : _.pick(metadata, ['bleed']).bleed?.right || '.125in', }; // Copy Required Safe Space or Use defaults brew.safetySpace = { - top : _.pick(metadata, ['safetySpace']).top || '.25in', - bottom : _.pick(metadata, ['safetySpace']).bottom || '.25in', - outer : _.pick(metadata, ['safetySpace']).outer || '.25in', - inner : _.pick(metadata, ['safetySpace']).inner || '.5in', + top : _.pick(metadata, ['safetySpace']).safetySpace?.top || '.25in', + bottom : _.pick(metadata, ['safetySpace']).safetySpace?.bottom || '.25in', + outer : _.pick(metadata, ['safetySpace']).safetySpace?.outer || '.25in', + inner : _.pick(metadata, ['safetySpace']).safetySpace?.inner || '.5in', }; // Set brew paper trim size or default to US Letter brew.trimSize = { - width : _.pick(metadata, ['trimSize']).width || '8.5in', - height : _.pick(metadata, ['trimSize']).height || '11in', + width : _.pick(metadata, ['trimSize']).trimSize?.width || '8.5in', + height : _.pick(metadata, ['trimSize']).trimSize?.height || '11in', }; // Set Column specs or use defaults - brew.columns = _.pick(metadata, ['columns']) || '2'; - brew.columnGutter = _.pick(metadata, ['columnGutter']) || '.125in'; + brew.columns = metadata?.columns || 2; + brew.columnGutter = metadata?.columnGutter || '.125in'; // Set License or set to Unlicensed - brew.license = _.pick(metadata, ['license']) || 'None'; + brew.license = metadata?.license || 'None'; // Set Authors legal names or to empty. - brew.legalAuthors = _.pick(metadata, ['legalAuthors']) || ''; + brew.legalAuthors = metadata.legalAuthors || ''; brew.text = brew.text.slice(index + 6); }