Skip to content

Commit

Permalink
Allow pug file extensions in html-resource-plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
qraynaud committed Jul 10, 2019
1 parent 750f519 commit 1ce651d
Showing 1 changed file with 22 additions and 17 deletions.
39 changes: 22 additions & 17 deletions src/html-resource-plugin.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,35 @@
import {ViewEngine} from 'aurelia-templating';
import {_createDynamicElement} from './dynamic-element';

const VIEW_EXTENSIONS = ['html', 'jade', 'pug'];
const VIEW_REGEXP = new RegExp('([^\\/^\\?]+)\\.(' + VIEW_EXTENSIONS.join('|') + ')', 'i');

export function getElementName(address) {
return /([^\/^\?]+)\.html/i.exec(address)[1].toLowerCase();
return VIEW_REGEXP.exec(address)[1].toLowerCase();
}

export function configure(config) {
const viewEngine = config.container.get(ViewEngine);
const loader = config.aurelia.loader;

viewEngine.addResourcePlugin('.html', {
'fetch': function(viewUrl) {
return loader.loadTemplate(viewUrl).then(registryEntry => {
let bindableNames = registryEntry.template.getAttribute('bindable');
const useShadowDOMmode: null | '' | 'open' | 'closed' = registryEntry.template.getAttribute('use-shadow-dom');
const name = getElementName(viewUrl);
const fetch = function(viewUrl) {
return loader.loadTemplate(viewUrl).then(registryEntry => {
let bindableNames = registryEntry.template.getAttribute('bindable');
const useShadowDOMmode: null | '' | 'open' | 'closed' = registryEntry.template.getAttribute('use-shadow-dom');
const name = getElementName(viewUrl);

if (bindableNames) {
bindableNames = bindableNames.split(',').map(x => x.trim());
registryEntry.template.removeAttribute('bindable');
} else {
bindableNames = [];
}

if (bindableNames) {
bindableNames = bindableNames.split(',').map(x => x.trim());
registryEntry.template.removeAttribute('bindable');
} else {
bindableNames = [];
}
return { [name]: _createDynamicElement({name, viewUrl, bindableNames, useShadowDOMmode}) };
});
};

return { [name]: _createDynamicElement({name, viewUrl, bindableNames, useShadowDOMmode}) };
});
}
});
for (const ext of VIEW_EXTENSIONS) {
viewEngine.addResourcePlugin('.' + ext, {fetch});
}
}

0 comments on commit 1ce651d

Please sign in to comment.