ember-font-awesome
Version:
An ember-cli addon for using Font Awesome icons in Ember applications.
52 lines (43 loc) • 1.33 kB
JavaScript
/* eslint-env node */
;
const FaIconComponent = require('./build-time-components/fa-icon');
const FaListComponent = require('./build-time-components/fa-list');
const FaStackComponent = require('./build-time-components/fa-stack');
class AstTransform {
constructor(options) {
this.options = options;
}
transform(ast) {
this.syntax.traverse(ast, {
BlockStatement: (node) => {
return this._applyTransform(node);
},
MustacheStatement: (node) => {
return this._applyTransform(node);
}
});
return ast;
}
_applyTransform(node) {
if (node.path.original === 'fa-icon') {
return new FaIconComponent(node, { transform: this }).toElement()
} else if (node.path.original === 'fa-list') {
return (new FaListComponent(node, { transform: this })).toElement();
} else if (node.path.original === 'fa-stack') {
return (new FaStackComponent(node, { transform: this })).toElement();
}
}
}
function buildAstTransform(addon) {
return class EmberFontAwesomeAstTransform extends AstTransform {
constructor(options) {
super(options);
this.addon = addon;
addon.fontAwesomeUsage[options.moduleName] = {
icons: new Set(),
dynamicIcon: false
};
}
}
}
module.exports = buildAstTransform;