| Index: polymer_1.0.4/bower_components/prism/examples.js
|
| diff --git a/polymer_1.0.4/bower_components/prism/examples.js b/polymer_1.0.4/bower_components/prism/examples.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a686fa787f2612f68d39f326a71f6f525fec08e7
|
| --- /dev/null
|
| +++ b/polymer_1.0.4/bower_components/prism/examples.js
|
| @@ -0,0 +1,181 @@
|
| +/**
|
| + * Manage examples
|
| + */
|
| +
|
| +(function() {
|
| +
|
| +var examples = {};
|
| +
|
| +var treeURL = 'https://api.github.com/repos/PrismJS/prism/git/trees/gh-pages?recursive=1';
|
| +var treePromise = new Promise(function (resolve) {
|
| + $u.xhr({
|
| + url: treeURL,
|
| + callback: function (xhr) {
|
| + if (xhr.status < 400) {
|
| + resolve(JSON.parse(xhr.responseText).tree);
|
| + }
|
| + }
|
| + });
|
| +});
|
| +
|
| +var languages = components.languages;
|
| +
|
| +for (var id in languages) {
|
| + if (id === 'meta') {
|
| + continue;
|
| + }
|
| +
|
| + (function (id) {
|
| + var language = languages[id];
|
| + var checked = false;
|
| +
|
| + if (language.option === 'default') {
|
| + checked = true;
|
| + }
|
| +
|
| + language.enabled = checked;
|
| + language.path = languages.meta.path.replace(/\{id}/g, id) + '.js';
|
| + language.examplesPath = languages.meta.examplesPath.replace(/\{id}/g, id) + '.html';
|
| +
|
| + fileExists(language.examplesPath).then(function (exists) {
|
| + $u.element.create('label', {
|
| + attributes: {
|
| + 'data-id': id,
|
| + 'title': !exists ? 'No examples are available for this language.' : ''
|
| + },
|
| + className: !exists ? 'unavailable' : '',
|
| + contents: [
|
| + {
|
| + tag: 'input',
|
| + properties: {
|
| + type: 'checkbox',
|
| + name: 'language',
|
| + value: id,
|
| + checked: checked && exists,
|
| + disabled: !exists,
|
| + onclick: function () {
|
| + $$('input[name="' + this.name + '"]').forEach(function (input) {
|
| + languages[input.value].enabled = input.checked;
|
| + });
|
| +
|
| + update(id);
|
| + }
|
| + }
|
| + },
|
| + language.title
|
| + ],
|
| + inside: '#languages'
|
| + });
|
| + examples[id] = $u.element.create('section', {
|
| + 'id': 'language-' + id,
|
| + 'className': 'language-' + id,
|
| + inside: '#examples'
|
| + });
|
| + if (checked) {
|
| + update(id);
|
| + }
|
| + });
|
| + }(id));
|
| +}
|
| +
|
| +function fileExists(filepath) {
|
| + return treePromise.then(function (tree) {
|
| + for (var i = 0, l = tree.length; i < l; i++) {
|
| + if (tree[i].path === filepath) {
|
| + return true;
|
| + }
|
| + }
|
| + return false;
|
| + });
|
| +}
|
| +
|
| +function getFileContents(filepath) {
|
| + return new Promise(function (resolve, reject) {
|
| + $u.xhr({
|
| + url: filepath,
|
| + callback: function (xhr) {
|
| + if (xhr.status < 400 && xhr.responseText) {
|
| + resolve(xhr.responseText);
|
| + } else {
|
| + reject();
|
| + }
|
| + }
|
| + });
|
| + });
|
| +}
|
| +
|
| +function update(id) {
|
| + var language = languages[id];
|
| + if (language.enabled) {
|
| + if (!language.examplesPromise) {
|
| + language.examplesPromise = getFileContents(language.examplesPath);
|
| + }
|
| + language.examplesPromise.then(function (contents) {
|
| + examples[id].innerHTML = contents;
|
| +
|
| + loadLanguage(id).then(function () {
|
| + var elements = examples[id].querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');
|
| +
|
| + for (var i=0, element; element = elements[i++];) {
|
| + Prism.highlightElement(element);
|
| + }
|
| + });
|
| + });
|
| + } else {
|
| + examples[id].innerHTML = '';
|
| + }
|
| +}
|
| +
|
| +/**
|
| + * Loads a language, including all dependencies
|
| + *
|
| + * @param {string} lang the language to load
|
| + * @type {Promise} the promise which resolves as soon as everything is loaded
|
| + */
|
| +function loadLanguage (lang)
|
| +{
|
| + // at first we need to fetch all dependencies for the main language
|
| + // Note: we need to do this, even if the main language already is loaded (just to be sure..)
|
| + //
|
| + // We load an array of all dependencies and call recursively this function on each entry
|
| + //
|
| + // dependencies is now an (possibly empty) array of loading-promises
|
| + var dependencies = getDependenciesOfLanguage(lang).map(loadLanguage);
|
| +
|
| + // We create a promise, which will resolve, as soon as all dependencies are loaded.
|
| + // They need to be fully loaded because the main language may extend them.
|
| + return Promise.all(dependencies)
|
| + .then(function () {
|
| +
|
| + // If the main language itself isn't already loaded, load it now
|
| + // and return the newly created promise (we chain the promises).
|
| + // If the language is already loaded, just do nothing - the next .then()
|
| + // will immediately be called
|
| + if (!Prism.languages[lang]) {
|
| + return new Promise(function (resolve) {
|
| + $u.script('components/prism-' + lang + '.js', resolve);
|
| + });
|
| + }
|
| + });
|
| +}
|
| +
|
| +
|
| +/**
|
| + * Returns all dependencies (as identifiers) of a specific language
|
| + *
|
| + * @param {string} lang
|
| + * @returns {Array.<string>} the list of dependencies. Empty if the language has none.
|
| + */
|
| +function getDependenciesOfLanguage (lang)
|
| +{
|
| + if (!components.languages[lang] || !components.languages[lang].require)
|
| + {
|
| + return [];
|
| + }
|
| +
|
| + return ($u.type(components.languages[lang].require) === "array")
|
| + ? components.languages[lang].require
|
| + : [components.languages[lang].require];
|
| +}
|
| +
|
| +}());
|
|
|