From f7d47fb9872f1a1503756cdde77f211a05202638 Mon Sep 17 00:00:00 2001 From: Joel Arvidsson Date: Thu, 27 Oct 2016 01:15:04 +0200 Subject: [PATCH] Add support for separating glyph map from icon component #256 --- generate-icon.js | 13 +++++++++++-- generate-material-icons.js | 13 +++++++++++-- .../iconSet.tpl => templates/bundled-icon-set.tpl | 5 +---- templates/separated-icon-set.tpl | 9 +++++++++ 4 files changed, 32 insertions(+), 8 deletions(-) rename template/iconSet.tpl => templates/bundled-icon-set.tpl (58%) create mode 100644 templates/separated-icon-set.tpl diff --git a/generate-icon.js b/generate-icon.js index f7cd047..90502a0 100755 --- a/generate-icon.js +++ b/generate-icon.js @@ -7,11 +7,13 @@ var argv = require('yargs') .default('p', '.icon-') .describe('p', 'CSS selector prefix') .alias('p', 'prefix') - .default('t', __dirname + '/template/iconSet.tpl') + .default('t', __dirname + '/templates/bundled-icon-set.tpl') .describe('t', 'Template in lodash format') .alias('t', 'template') .describe('o', 'Save output to file, defaults to STDOUT') .alias('o', 'output') + .describe('g', 'Save glyphmap JSON to file') + .alias('g', 'glyphmap') .argv; var _ = require('lodash'); @@ -23,7 +25,7 @@ if(argv.template) { template = fs.readFileSync(argv.template, { encoding: 'utf8' }); } -var data = _.omit(argv, '_ $0 o output p prefix t template'.split(' ')); +var data = _.omit(argv, '_ $0 o output p prefix t template g glyphmap'.split(' ')); var content = generateIconSetFromCss(argv._, argv.prefix, template, data); @@ -35,3 +37,10 @@ if(argv.output) { } else { console.log(content); } + +if (argv.glyphmap) { + fs.writeFileSync( + argv.glyphmap, + generateIconSetFromCss(argv._, argv.prefix) + ); +} diff --git a/generate-material-icons.js b/generate-material-icons.js index 0ecbad2..325e628 100755 --- a/generate-material-icons.js +++ b/generate-material-icons.js @@ -4,11 +4,13 @@ var argv = require('yargs') .usage('Usage: $0 [options] path/to/codepoints \nFor default template please provide --componentName and --fontFamily') .demand(1) - .default('t', __dirname + '/template/iconSet.tpl') + .default('t', __dirname + '/templates/bundled-icon-set.tpl') .describe('t', 'Template in lodash format') .alias('t', 'template') .describe('o', 'Save output to file, defaults to STDOUT') .alias('o', 'output') + .describe('g', 'Save glyphmap JSON to file') + .alias('g', 'glyphmap') .argv; var _ = require('lodash'); @@ -32,7 +34,7 @@ if(argv.template) { template = fs.readFileSync(argv.template, { encoding: 'utf8' }); } -var data = _.omit(argv, '_ $0 o output t template'.split(' ')); +var data = _.omit(argv, '_ $0 o output t template g glyphmap'.split(' ')); var glyphMap = extractGlyphMapFromCodepoints(argv._[0]); var content = JSON.stringify(glyphMap, null, ' '); @@ -51,3 +53,10 @@ if(argv.output) { } else { console.log(content); } + +if (argv.glyphmap) { + fs.writeFileSync( + argv.glyphmap, + JSON.stringify(glyphMap, null, ' ') + ); +} diff --git a/template/iconSet.tpl b/templates/bundled-icon-set.tpl similarity index 58% rename from template/iconSet.tpl rename to templates/bundled-icon-set.tpl index 8a51b3d..0bffff2 100644 --- a/template/iconSet.tpl +++ b/templates/bundled-icon-set.tpl @@ -6,7 +6,4 @@ import createIconSet from 'react-native-vector-icons/lib/create-icon-set'; const glyphMap = ${glyphMap}; -let ${componentName} = createIconSet(glyphMap, '${fontFamily}', '${componentName}.ttf'); - -module.exports = ${componentName}; -module.exports.glyphMap = glyphMap; +export default createIconSet(glyphMap, '${fontFamily}', '${componentName}.ttf'); diff --git a/templates/separated-icon-set.tpl b/templates/separated-icon-set.tpl new file mode 100644 index 0000000..928628e --- /dev/null +++ b/templates/separated-icon-set.tpl @@ -0,0 +1,9 @@ +/** + * ${componentName} icon set component. + * Usage: <${componentName} name="icon-name" size={20} color="#4F8EF7" /> + */ + +import createIconSet from './lib/create-icon-set'; +import glyphMap from './glyphmaps/${componentName}.json'; + +export default createIconSet(glyphMap, '${fontFamily}', '${componentName}.ttf');