Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2981)

Unified Diff: polymer_1.0.4/bower_components/prism/examples.js

Issue 1205703007: Add polymer 1.0 to npm_modules (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Renamed folder to 1.0.4 Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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];
+}
+
+}());
« no previous file with comments | « polymer_1.0.4/bower_components/prism/components/prism-yaml.min.js ('k') | polymer_1.0.4/bower_components/prism/gulpfile.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698