Skip to content

Commit

Permalink
feat(formats): javascript/module-flat format (#457)
Browse files Browse the repository at this point in the history
Adding javascript module .cjs format
  • Loading branch information
Brian Whitton authored Oct 26, 2020
1 parent ac0c515 commit 37b06e8
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 0 deletions.
11 changes: 11 additions & 0 deletions __tests__/formats/__snapshots__/all.test.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -442,6 +442,17 @@ module.exports = {
};"
`;
exports[`formats all should match javascript/module-flat snapshot 1`] = `
"/**
* Do not edit directly
* Generated on Sat, 01 Jan 2000 00:00:00 GMT
*/
module.exports = {
\\"color_red\\": \\"#FF0000\\"
};"
`;
exports[`formats all should match javascript/object snapshot 1`] = `
"/**
* Do not edit directly
Expand Down
63 changes: 63 additions & 0 deletions __tests__/formats/javascriptModuleFlat.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
* Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
* the License. A copy of the License is located at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/

var fs = require('fs-extra');
var helpers = require('../__helpers');
var formats = require('../../lib/common/formats');

var file = {
"destination": "__output/",
"format": "javascript/module-flat",
};

var dictionary = {
"allProperties": [{
"name": "ColorRed",
"value": "#EF5350",
"original": {
"value": "#EF5350"
},
"attributes": {
"category": "color",
"type": "base",
"item": "red"
},
"path": [
"color",
"base",
"red"
]
}]
};

var formatter = formats['javascript/module-flat'].bind(file);

describe('formats', () => {
describe('javascript/module-flat', () => {

beforeEach(() => {
helpers.clearOutput();
});

afterEach(() => {
helpers.clearOutput();
});

it('should be a valid JS file', () => {
fs.writeFileSync('./__tests__/__output/output.js', formatter(dictionary) );
var test = require('../__output/output.js');
expect(test.ColorRed).toEqual(dictionary.allProperties[0].value);
});

});
});
18 changes: 18 additions & 0 deletions lib/common/formats.js
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,24 @@ module.exports = {
JSON.stringify(dictionary.properties, null, 2) + ';';
},

/**
* Creates a CommonJS module with the whole style dictionary flattened to a single level.
*
* @memberof Formats
* @kind member
* @example
* ```js
* module.exports = {
* "ColorBaseRed": "#ff0000"
*}
*```
*/
'javascript/module-flat': function(dictionary) {
return fileHeader(this.options) +
'module.exports = ' +
module.exports['json/flat'](dictionary) + ';';
},

/**
* Creates a JS file a global var that is a plain javascript object of the style dictionary.
* Name the variable by adding a 'name' attribute on the file object in your config.
Expand Down

0 comments on commit 37b06e8

Please sign in to comment.