Skip to content

Commit

Permalink
Improve language ids support. (#532)
Browse files Browse the repository at this point in the history
Makes the use of the extension declaration redundant and adds support for the example generator.
  • Loading branch information
JimiC authored and robertohuertasm committed Dec 17, 2016
1 parent 2a60773 commit 4c956e3
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 58 deletions.
15 changes: 11 additions & 4 deletions src/build/exampleGenerator.js
Expand Up @@ -16,11 +16,18 @@ var folderNames = folders.supported.reduce(function (init, current) {

var fileNames = files.supported.reduce(function (init, current) {
var obj = init;
if (current.extensions[0]) {
obj[current.icon] = current.filename
? current.extensions[0]
: 'file.' + current.extensions[0];
var extension = current.languages && current.languages[0]
? current.languages[0].defaultExtension
: current.extensions[0];

if (!extension) {
return obj;
}

obj[current.icon] = current.filename
? extension
: 'file.' + extension;

return obj;
}, {});

Expand Down
6 changes: 3 additions & 3 deletions src/build/iconGenerator.js
Expand Up @@ -121,10 +121,10 @@ function buildJsonStructure(iconsFolderBasePath) {
};

current.languages.forEach(function (langIds) {
if (Array.isArray(langIds)) {
langIds.forEach(function (id) { assignLanguages(id); });
if (Array.isArray(langIds.ids)) {
langIds.ids.forEach(function (id) { assignLanguages(id); });
} else {
assignLanguages(langIds);
assignLanguages(langIds.ids);
}
});
}
Expand Down
50 changes: 25 additions & 25 deletions src/build/languages.js
@@ -1,27 +1,27 @@
exports.languages = {
c: 'c',
cpp: 'cpp',
csharp: 'csharp',
css: 'css',
fsharp: 'fsharp',
html: 'html',
java: 'java',
javascript: 'javascript',
json: 'json',
less: 'less',
markdown: 'markdown',
perl: ['perl', 'perl6'],
php: 'php',
powershell: 'powershell',
prolog: 'prolog',
python: 'python',
rust: 'rust',
scss: 'scss',
shellscript: 'shellscript',
swift: 'swift',
typescript: 'typescript',
vb: 'vb',
xml: 'xml',
xsl: 'xsl',
yaml: 'yaml'
c: { ids: 'c', defaultExtension: 'c' },
cpp: { ids: 'cpp', defaultExtension: 'cpp' },
csharp: { ids: 'csharp', defaultExtension: 'cs' },
css: { ids: 'css', defaultExtension: 'css' },
fsharp: { ids: 'fsharp', defaultExtension: 'fs' },
html: { ids: 'html', defaultExtension: 'html' },
java: { ids: 'java', defaultExtension: 'java' },
javascript: { ids: 'javascript', defaultExtension: 'js' },
json: { ids: 'json', defaultExtension: 'json' },
less: { ids: 'less', defaultExtension: 'less' },
markdown: { ids: 'markdown', defaultExtension: 'md' },
perl: { ids: ['perl', 'perl6'], defaultExtension: 'pl' },
php: { ids: 'php', defaultExtension: 'php' },
powershell: { ids: 'powershell', defaultExtension: 'ps1' },
prolog: { ids: 'prolog', defaultExtension: 'pro' },
python: { ids: 'python', defaultExtension: 'py' },
rust: { ids: 'rust', defaultExtension: 'rs' },
scss: { ids: 'scss', defaultExtension: 'scss' },
shellscript: { ids: 'shellscript', defaultExtension: 'sh' },
swift: { ids: 'swift', defaultExtension: 'swift' },
typescript: { ids: 'typescript', defaultExtension: 'ts' },
vb: { ids: 'vb', defaultExtension: 'vb' },
xml: { ids: 'xml', defaultExtension: 'xml' },
xsl: { ids: 'xsl', defaultExtension: 'xsl' },
yaml: { ids: 'yaml', defaultExtension: 'yaml' }
};
46 changes: 23 additions & 23 deletions src/build/supportedExtensions.js
Expand Up @@ -34,8 +34,7 @@ exports.extensions = {
{ icon: 'bower', extensions: ['.bowerrc', 'bower.json'], filename: true },
{ icon: 'buckbuild', extensions: ['.buckconfig'], filename: true, svg: true },
{ icon: 'bundler', extensions: ['gemfile', 'gemfile.lock'], filename: true },
{ icon: 'cpp', extensions: ['cpp', 'hpp', 'cc', 'cxx'], languages: [languages.cpp] },
{ icon: 'c', extensions: ['c'], languages: [languages.c] },
{ icon: 'c', extensions: [], languages: [languages.c] },
{ icon: 'cake', extensions: ['cake'] },
{ icon: 'cfm', extensions: ['cfm', 'cfc', 'lucee'] },
{ icon: 'cheader', extensions: ['h'] },
Expand All @@ -48,10 +47,11 @@ exports.extensions = {
{ icon: 'config', extensions: ['makefile', '.env.example'], filename: true },
{ icon: 'compass', extensions: [] },
{ icon: 'composer', extensions: ['composer.json', 'composer.lock'], filename: true },
{ icon: 'csharp', extensions: ['cs', 'csx'], languages: [languages.csharp] },
{ icon: 'cpp', extensions: ['hpp', 'cc', 'cxx'], languages: [languages.cpp] },
{ icon: 'csharp', extensions: ['csx'], languages: [languages.csharp] },
{ icon: 'cshtml', extensions: ['cshtml'] },
{ icon: 'csproj', extensions: ['csproj'] },
{ icon: 'css', extensions: ['css'], languages: [languages.css] },
{ icon: 'css', extensions: [], languages: [languages.css] },
{ icon: 'csslint', extensions: ['.csslintrc'], filename: true },
{ icon: 'cssmap', extensions: ['css.map'] },
{ icon: 'cucumber', extensions: ['feature'] },
Expand All @@ -76,7 +76,7 @@ exports.extensions = {
{ icon: 'flash', extensions: ['swf', 'swc', 'sol'] },
{ icon: 'flow', extensions: ['js.flow'] },
{ icon: 'flow', extensions: ['.flowconfig'], filename: true },
{ icon: 'fsharp', extensions: ['fs', 'fsx', 'fsi'], languages: [languages.fsharp] },
{ icon: 'fsharp', extensions: ['fsx', 'fsi'], languages: [languages.fsharp] },
{ icon: 'font', extensions: ['woff', 'woff2', 'ttf', 'otf', 'eot', 'pfa', 'pfb', 'sfd'] },
{ icon: 'fortran', extensions: ['f90', 'mod', 'f'] },
{ icon: 'git', extensions: ['.gitattributes', '.gitconfig', '.gitignore', '.gitmodules', '.gitkeep'], filename: true },
Expand All @@ -95,27 +95,27 @@ exports.extensions = {
{ icon: 'haxe', extensions: ['haxelib.json'], filename: true },
{ icon: 'haxecheckstyle', extensions: ['checkstyle.json'], filename: true },
{ icon: 'haxedevelop', extensions: ['hxproj'] },
{ icon: 'html', extensions: ['html', 'htm'], languages: [languages.html] },
{ icon: 'html', extensions: ['htm'], languages: [languages.html] },
{ icon: 'idris', extensions: ['idr', 'lidr', 'ibc'], svg: true },
{ icon: 'image', extensions: ['jpeg', 'jpg', 'gif', 'png', 'bmp', 'ico'] },
{ icon: 'ionic', extensions: ['ionic.project'], filename: true },
{ icon: 'ionic', extensions: ['ionic.config.json'], filename: true },
{ icon: 'jade', extensions: ['jade', 'pug'] },
{ icon: 'jade', extensions: ['.jade-lintrc', '.pug-lintrc', '.jade-lint.json', '.pug-lintrc.js', '.pug-lintrc.json'], filename: true },
{ icon: 'jar', extensions: ['jar'], svg: true },
{ icon: 'java', extensions: ['java'], languages: [languages.java], svg: true },
{ icon: 'java', extensions: [], languages: [languages.java], svg: true },
{ icon: 'jbuilder', extensions: ['jbuilder'], svg: true },
{ icon: 'jest', extensions: ['jest.config.json'], filename: true, svg: true },
{ icon: 'jinja', extensions: ['jinja', 'jinja2'], svg: true },
{ icon: 'js', extensions: ['js'], languages: [languages.javascript], svg: true },
{ icon: 'jshintrc', extensions: ['.jshintrc'], filename: true },
{ icon: 'jsmap', extensions: ['js.map'] },
{ icon: 'json', extensions: ['json', 'webmanifest'], languages: [languages.json] },
{ icon: 'json', extensions: ['webmanifest'], languages: [languages.json] },
{ icon: 'jsp', extensions: ['jsp'] },
{ icon: 'julia', extensions: ['jl'] },
{ icon: 'kotlin', extensions: ['kt'], svg: true },
{ icon: 'lerna', extensions: ['lerna.json'], filename: true },
{ icon: 'less', extensions: ['less'], languages: [languages.less] },
{ icon: 'less', extensions: [], languages: [languages.less] },
{ icon: 'license', extensions: ['enc'] },
{ icon: 'license', extensions: ['license', 'licence', 'license.md', 'licence.md'], filename: true },
{ icon: 'lisp', extensions: ['bil'] },
Expand All @@ -125,7 +125,7 @@ exports.extensions = {
{ icon: 'lsl', extensions: ['lsl'] },
{ icon: 'lua', extensions: ['lua'] },
{ icon: 'm', extensions: ['m'] },
{ icon: 'markdown', extensions: ['md', 'mdown', 'markdown'], languages: [languages.markdown] },
{ icon: 'markdown', extensions: ['mdown', 'markdown'], languages: [languages.markdown] },
{ icon: 'marko', extensions: ['marko'] },
{ icon: 'markojs', extensions: ['marko.js'] },
{ icon: 'markup', extensions: [] },
Expand All @@ -144,18 +144,18 @@ exports.extensions = {
{ icon: 'pdf', extensions: ['pdf'], svg: true },
{ icon: 'perl', extensions: ['perl'], languages: [languages.perl] },
{ icon: 'photoshop', extensions: ['psd'] },
{ icon: 'php', extensions: ['php', 'php1', 'php2', 'php3', 'php4', 'php5', 'php6', 'phps', 'phpsa', 'phpt', 'phtml', 'phar'], languages: [languages.php] },
{ icon: 'php', extensions: ['php1', 'php2', 'php3', 'php4', 'php5', 'php6', 'phps', 'phpsa', 'phpt', 'phtml', 'phar'], languages: [languages.php] },
{ icon: 'phpunit', extensions: ['phpunit.xml'], filename: true },
{ icon: 'plantuml', extensions: ['pu', 'plantuml', 'iuml', 'puml'] },
{ icon: 'poedit', extensions: ['po', 'mo'] },
{ icon: 'postcss', extensions: ['pcss', 'postcss'] },
{ icon: 'powershell', extensions: ['ps1', 'psm1', 'psd1'], languages: [languages.powershell] },
{ icon: 'powershell', extensions: ['psm1', 'psd1'], languages: [languages.powershell] },
{ icon: 'procfile', extensions: ['procfile'], filename: true },
{ icon: 'prolog', extensions: ['P', 'pro'], languages: [languages.prolog] },
{ icon: 'prolog', extensions: ['P'], languages: [languages.prolog] },
{ icon: 'protobuf', extensions: ['proto'] },
{ icon: 'puppet', extensions: ['epp', 'pp'] },
{ icon: 'purescript', extensions: ['purs'], svg: true },
{ icon: 'python', extensions: ['py', 'pyw'], languages: [languages.python], svg: true },
{ icon: 'python', extensions: ['pyw'], languages: [languages.python], svg: true },
{ icon: 'qlikview', extensions: ['qvd', 'qvw'] },
{ icon: 'r', extensions: ['r'] },
{ icon: 'rails', extensions: [] },
Expand All @@ -170,13 +170,13 @@ exports.extensions = {
{ icon: 'rspec', extensions: ['.rspec'], filename: true },
{ icon: 'ruby', extensions: ['rb', 'gemspec', 'ru', 'reek'] },
{ icon: 'ruby', extensions: ['rakefile'], filename: true },
{ icon: 'rust', extensions: ['rs'], languages: [languages.rust] },
{ icon: 'rust', extensions: [], languages: [languages.rust] },
{ icon: 'saltstack', extensions: ['sls'] },
{ icon: 'sass', extensions: ['sass'] },
{ icon: 'scala', extensions: ['scala'] },
{ icon: 'scss', extensions: ['scss'], languages: [languages.scss] },
{ icon: 'scss', extensions: [], languages: [languages.scss] },
{ icon: 'settings', extensions: [] },
{ icon: 'shell', extensions: ['bat', 'sh', 'cmd', 'bash', 'zsh', 'fish'], languages: [languages.shellscript] },
{ icon: 'shell', extensions: ['bat', 'cmd', 'bash', 'zsh', 'fish'], languages: [languages.shellscript] },
{ icon: 'slim', extensions: [] },
{ icon: 'sln', extensions: ['sln'] },
{ icon: 'smarty', extensions: ['tpl', 'swig'] },
Expand All @@ -188,7 +188,7 @@ exports.extensions = {
{ icon: 'stylus', extensions: ['styl'] },
{ icon: 'storyboard', extensions: ['storyboard'] },
{ icon: 'svg', extensions: ['svg'] },
{ icon: 'swift', extensions: ['swift'], languages: [languages.swift] },
{ icon: 'swift', extensions: [], languages: [languages.swift] },
{ icon: 'tcl', extensions: ['tcl', 'exp'] },
{ icon: 'terraform', extensions: ['tf', 'terra'] },
{ icon: 'testjs', extensions: ['test.js', 'spec.js'] },
Expand All @@ -201,11 +201,11 @@ exports.extensions = {
{ icon: 'travis', extensions: ['.travis.yml'], filename: true },
{ icon: 'tslint', extensions: ['tslint.json'], filename: true },
{ icon: 'twig', extensions: ['twig'] },
{ icon: 'typescript', extensions: ['ts'], languages: [languages.typescript], svg: true },
{ icon: 'typescript', extensions: [], languages: [languages.typescript], svg: true },
{ icon: 'typescriptdef', extensions: ['d.ts'], svg: true },
{ icon: 'vagrant', extensions: ['vagrantfile'], filename: true },
{ icon: 'vash', extensions: ['vash'] },
{ icon: 'vb', extensions: ['vb'], languages: [languages.vb] },
{ icon: 'vb', extensions: [], languages: [languages.vb] },
{ icon: 'vbhtml', extensions: ['vbhtml'] },
{ icon: 'vbproj', extensions: ['vbproj'] },
{ icon: 'vim', extensions: ['vim'], svg: true },
Expand Down Expand Up @@ -249,9 +249,9 @@ exports.extensions = {
{ icon: 'wxss', extensions: ['wxss'] },
{ icon: 'xib', extensions: ['xib'] },
{ icon: 'xliff', extensions: ['xliff', 'xlf'] },
{ icon: 'xml', extensions: ['xml', 'axml', 'pex', 'tmx'], languages: [languages.xml] },
{ icon: 'xsl', extensions: ['xsl'], languages: [languages.xsl] },
{ icon: 'yaml', extensions: ['yaml', 'yml'], languages: [languages.yaml] },
{ icon: 'xml', extensions: ['axml', 'pex', 'tmx'], languages: [languages.xml] },
{ icon: 'xsl', extensions: [], languages: [languages.xsl] },
{ icon: 'yaml', extensions: ['yml'], languages: [languages.yaml] },
{ icon: 'yarn', extensions: ['yarnclean'] },
{ icon: 'yarn', extensions: ['yarn.lock'], filename: true },
{ icon: 'zip', extensions: ['zip', 'rar', '7z', 'tar', 'gz', 'bzip2', 'xz', 'bz2'] }
Expand Down
6 changes: 3 additions & 3 deletions tests/iconGenerator.test.js
Expand Up @@ -381,10 +381,10 @@ describe('generating icons', function () {
};

file.languages.forEach(function (langIds) {
if (Array.isArray(langIds)) {
langIds.forEach(function (id) { assertLanguage(id); });
if (Array.isArray(langIds.ids)) {
langIds.ids.forEach(function (id) { assertLanguage(id); });
} else {
assertLanguage(langIds);
assertLanguage(langIds.ids);
}
});
});
Expand Down

0 comments on commit 4c956e3

Please sign in to comment.