From df404401aad925e7a7ce9596484e74835b5251b4 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Tue, 27 Feb 2018 19:04:31 -0800 Subject: [PATCH 01/29] create prism-collapse plugin --- prism-collapse.css | 27 ++++++++++++++++++ prism-collapse.js | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 prism-collapse.css create mode 100644 prism-collapse.js diff --git a/prism-collapse.css b/prism-collapse.css new file mode 100644 index 0000000..d8f3fe2 --- /dev/null +++ b/prism-collapse.css @@ -0,0 +1,27 @@ +.collapse.collapsed > .collapse-code { + display: none; +} + +.collapse.collapsed { + color: black; + text-align: center; + background-color: #eee; + border-top: 1px solid #ccc; + border-bottom: 1px solid #ccc; + padding: calc(0.25em - 1px) 0; +} + +.collapse.collapsed:before { + display: block; + content: url("../../node_modules/bit-docs-html-canjs/static/img/expand_icon.svg"); + margin: 0 auto; + + width: 1em; + height: 1em; + line-height: 1em; +} + +.collapse.collapsed:hover { + opacity: .6; + cursor: pointer; +} diff --git a/prism-collapse.js b/prism-collapse.js new file mode 100644 index 0000000..12aa620 --- /dev/null +++ b/prism-collapse.js @@ -0,0 +1,68 @@ +(function(){ + +if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) { + return; +} + +function hasClass(element, className) { + className = " " + className + " "; + return (" " + element.className + " ").replace(/[\n\t]/g, " ").indexOf(className) > -1 +} + +function collapseLines(pre, config) { + var code = pre.children[0]; + var lines = code.innerHTML.split('\n'); + lines = lines.map(function(line, index) { + if (index === lines.length - 1) { + return line; + } + + return line + '\n'; + }); + + var inserts = []; + var ranges = config.split(','); + for (var i = 0; i < ranges.length; i++) { + var parts = ranges[i].split('-'); + + inserts.push([ +parts[0], '' ]); + } + + inserts.sort(function (a, b) { + return b[0] - a[0]; + }); + + for (var i = 0; i < inserts.length; i++) { + var line = inserts[i][0] - 1; + var content = inserts[i][1]; + + lines.splice(line, 0, content); + } + + code.innerHTML = lines.join(''); +} + +Prism.hooks.add('complete', function completeHook(env) { + var pre = env.element.parentNode; + var config = pre && pre.getAttribute('data-collapse'); + + if (!pre || !config || !/pre/i.test(pre.nodeName)) { + return; + } + + var hasLineNumbers = Prism.plugins.lineNumbers; + var isLineNumbersLoaded = env.plugins && env.plugins.lineNumbers; + + if (hasClass(pre, 'line-numbers') && hasLineNumbers && !isLineNumbersLoaded) { + Prism.hooks.add('line-numbers', completeHook); + } else { + collapseLines(pre, config); + } +}); + +$('body').on('click', 'pre code .collapse.collapsed', function() { + $(this).removeClass('collapsed'); +}); + +})(); From 29efc3036e81544294155c7aaae89af77641b797 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Tue, 27 Feb 2018 19:05:36 -0800 Subject: [PATCH 02/29] fix prism styles, add line-highlight, trim trailing newlines, highlight html template strings --- prettify.js | 56 ++++++++++++++++++++++++++++++++------------------- prettify.less | 6 ++++++ 2 files changed, 41 insertions(+), 21 deletions(-) diff --git a/prettify.js b/prettify.js index ed43f4a..8e85cec 100644 --- a/prettify.js +++ b/prettify.js @@ -4,30 +4,45 @@ var Prism = require("prismjs"); require("prismjs/plugins/line-numbers/prism-line-numbers.js"); require("prismjs/plugins/previewers/prism-previewers.js"); require("prismjs/plugins/command-line/prism-command-line.js"); +require("prismjs/plugins/line-highlight/prism-line-highlight.js"); +require("prismjs/plugins/toolbar/prism-toolbar.js"); +require("prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js"); require("prismjs/themes/prism-coy.css"); require("prismjs/plugins/line-numbers/prism-line-numbers.css"); require("prismjs/plugins/previewers/prism-previewers.css"); require("prismjs/plugins/command-line/prism-command-line.css"); +require("prismjs/plugins/line-highlight/prism-line-highlight.css"); +require("prismjs/plugins/toolbar/prism-toolbar.css"); + +Prism.languages.insertBefore('javascript', 'template-string', { + 'html-template-string': { + pattern: /`(?:[\s\S])*<[a-z-]+(?:\s+[^<>]*)?>(?:[\s\S])*`/, + inside: { + 'interpolation': { + pattern: /\$\{[^}]+\}/, + inside: { + 'interpolation-punctuation': { + pattern: /^\$\{|\}$/, + alias: 'punctuation' + }, + rest: Prism.languages.javascript + } + }, + rest: Prism.languages.html + } + } +}); -/** - * @parent bit-docs-prettify/static - * @module {function} bit-docs-prettify/prettify.js - * - * Main front end JavaScript file for static portion of this plugin. - * - * @signature `prettyPrint()` - * - * Finds all `` elements on the page and adds the `prettyprint` class - * before executing the required pretty print engine. - * - * Also requires [bit-docs-prettify/prettify.less]. - */ -module.exports = function(){ +Prism.hooks.add('before-highlightall', function (env) { var codes = document.getElementsByTagName("code"); for (var i = 0; i < codes.length; i++) { var code = codes[i]; + if (code.textContent.slice(-1) === "\n") { + code.textContent = code.textContent.slice(0, -1); + } + if (code.parentNode.nodeName.toUpperCase() === "PRE") { code.parentNode.className += " line-numbers"; @@ -37,13 +52,12 @@ module.exports = function(){ if (code.className.includes("language-shell")) { code.parentNode.className += " command-line"; - - if (code.textContent.slice(-1) === "\n") { - code.textContent = code.textContent.slice(0, -1); - } + } + } + else { + if (!code.className.includes("language-")) { + code.className += " language-unknown"; } } } - - Prism.highlightAll(); -} + }); diff --git a/prettify.less b/prettify.less index deb2c68..3e09e87 100644 --- a/prettify.less +++ b/prettify.less @@ -1,4 +1,10 @@ pre[class*="language-"] > code { + font-size: 16px !important; border-left: none !important; box-shadow: 0px 0px 0px 1px #dfdfdf !important; } + +pre[class*=language-]:after, pre[class*=language-]:before { + display: none !important; + content: none !important; +} From f9ba9b41a58556ad27024c6a84bd39a73d7e9923 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Tue, 27 Feb 2018 19:39:33 -0800 Subject: [PATCH 03/29] add fix for zombie --- package.json | 3 +-- test.js | 11 ++++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index b71a1d5..7cc77ef 100644 --- a/package.json +++ b/package.json @@ -29,8 +29,7 @@ "bit-docs-generate-html": "^0.1.0", "connect": "^2.14.4", "mocha": "^3.1.2", - "q": "^1.4.1", - "zombie": "^4.2.1" + "zombie": "^4.3.0" }, "dependencies": { "prismjs": "^1.11.0" diff --git a/test.js b/test.js index afb44d0..81d6402 100644 --- a/test.js +++ b/test.js @@ -1,11 +1,13 @@ var generate = require("bit-docs-generate-html/generate"); -var Q = require("q"); var path = require("path"); +var fs = require("fs"); var assert = require("assert"); var Browser = require("zombie"); var connect = require("connect"); +var zombieFixes = "Object.defineProperty(HTMLElement.prototype, 'classList', { get: function() { var parent = this; var classList = parent.className.split(' '); classList.contains = classList.includes; classList.add = function(token) { this.push(token); parent.className = this.join(' '); }; return classList; } });\n\n"; + var open = function(url, callback, done) { var server = connect().use(connect.static(path.join(__dirname))).listen(8081); var browser = new Browser(); @@ -27,7 +29,7 @@ describe("bit-docs-prettify", function() { it("basics work", function(done) { this.timeout(30000); - var docMap = Q({ + var docMap = Promise.resolve({ index: { name: "index", body: "```javascript\nvar str = 'hello world';\n```\n\n```css\nbody {\n margin: 0;\n background: purple;\n}\n```\n\n```shell\npwd\n```\n\n```\n// some misc code\n```" @@ -45,13 +47,16 @@ describe("bit-docs-prettify", function() { forceBuild: true }) .then(function() { + var stealPath = path.join(__dirname, "temp", "static", "node_modules", "steal", "steal.production.js"); + fs.writeFileSync(stealPath, zombieFixes + fs.readFileSync(stealPath, "utf8")); + open("temp/index.html", function(browser, close) { var codes = browser.window.document.getElementsByTagName("code"); for (var i = 0; i < codes.length; i++) { assert.ok(codes[i].className.includes("language-"), "has a language"); - if (codes[i].parentNode.nodeName === "pre") { + if (codes[i].parentNode.nodeName === "PRE") { assert.ok(codes[i].parentNode.className.includes("language-"), "parent has a language"); } } From 01b93ff1fb525e635023d06e785e90e0163d33a7 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Tue, 27 Feb 2018 20:19:01 -0800 Subject: [PATCH 04/29] add release:pre script --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7cc77ef..9d0668b 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "test": "mocha test.js --reporter spec", "postversion": "git push --tags && git push", "preversion": "npm test", - "release:pre": "npm version prerelease && npm publish", + "release:pre": "npm version prerelease && npm publish --tag=pre", "release:patch": "npm version patch && npm publish", "release:minor": "npm version minor && npm publish", "release:major": "npm version major && npm publish" From 833ab0c2646fd1d7e93177c8ba025f7bdda82d80 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Tue, 27 Feb 2018 20:20:08 -0800 Subject: [PATCH 05/29] 0.2.2-0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9d0668b..183143e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bit-docs-prettify", - "version": "0.2.1", + "version": "0.2.2-0", "description": "prettify code plugin", "main": "prettify.js", "scripts": { From 902a4e276c88e37e57d88886ca11f24c85fd9f57 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Wed, 28 Feb 2018 17:56:59 -0800 Subject: [PATCH 06/29] refactor collapse and collapse line numbers --- prism-collapse.css | 88 ++++++++++++++++++++++++++++++++++++---------- prism-collapse.js | 59 +++++++++++++++++++++---------- 2 files changed, 110 insertions(+), 37 deletions(-) diff --git a/prism-collapse.css b/prism-collapse.css index d8f3fe2..fa0883c 100644 --- a/prism-collapse.css +++ b/prism-collapse.css @@ -1,27 +1,77 @@ -.collapse.collapsed > .collapse-code { - display: none; +pre code { + .collapse.collapsed { + color: black; + text-align: center; + background-color: #eee; + border-top: 1px solid #ccc; + border-bottom: 1px solid #ccc; + padding: calc(0.25em - 1px) 0; + margin: 0 -1em; + + > .collapse-code { + display: none; + } + + &:hover { + opacity: .6; + cursor: pointer; + } + + &:before { + display: block; + content: url("../../node_modules/bit-docs-html-canjs/static/img/expand_icon.svg"); + margin: 0 auto; + + width: 1em; + height: 1em; + line-height: 1em; + } + } +} + +pre.line-numbers code { + > .line-numbers-rows > .collapse.collapsed { + border: none; + padding: 0; + margin: 0; + height: 1.5em; + + opacity: 0; + + > .collapse-lines { + position: absolute; + } + + &:before { + display: none; + } + } } -.collapse.collapsed { - color: black; - text-align: center; - background-color: #eee; - border-top: 1px solid #ccc; - border-bottom: 1px solid #ccc; - padding: calc(0.25em - 1px) 0; + +/* conditional positioning of colored bar */ + +pre[data-line] code .collapse.collapsed { + margin-left: -3.8em; } -.collapse.collapsed:before { - display: block; - content: url("../../node_modules/bit-docs-html-canjs/static/img/expand_icon.svg"); - margin: 0 auto; +pre.line-numbers code .collapse.collapsed { + margin-left: -4em; +} + + +/* line-numbers overwrites so that spans can be nested */ - width: 1em; - height: 1em; - line-height: 1em; +.line-numbers-rows span { + pointer-events: none; + display: block; + counter-increment: linenumber; } -.collapse.collapsed:hover { - opacity: .6; - cursor: pointer; +.line-numbers-rows span:before { + content: counter(linenumber); + color: #999; + display: block; + padding-right: .8em; + text-align: right; } diff --git a/prism-collapse.js b/prism-collapse.js index 12aa620..4f98c39 100644 --- a/prism-collapse.js +++ b/prism-collapse.js @@ -9,38 +9,55 @@ function hasClass(element, className) { return (" " + element.className + " ").replace(/[\n\t]/g, " ").indexOf(className) > -1 } -function collapseLines(pre, config) { - var code = pre.children[0]; - var lines = code.innerHTML.split('\n'); - lines = lines.map(function(line, index) { - if (index === lines.length - 1) { - return line; - } - - return line + '\n'; - }); - +function collapseLines(pre, config, hasLineNumbers) { var inserts = []; + var ranges = config.split(','); for (var i = 0; i < ranges.length; i++) { var parts = ranges[i].split('-'); - inserts.push([ +parts[0], '' ]); + inserts.push([ +parts[0], '' ]); } inserts.sort(function (a, b) { return b[0] - a[0]; }); + + var codeContainer = pre.children[0]; + + var numbersContainer = null; + var numbers = null; + if (hasLineNumbers) { + numbersContainer = codeContainer.lastChild; + numbersContainer.remove(); + + numbers = numbersContainer.innerHTML.split(''); + } + + var code = codeContainer.innerHTML.split('\n'); + code = code.map(function(line, index) { + if (index === code.length - 1) { + return line; + } + + return line + '\n'; + }); + for (var i = 0; i < inserts.length; i++) { var line = inserts[i][0] - 1; - var content = inserts[i][1]; - lines.splice(line, 0, content); + code.splice(line, 0, inserts[i][1]); + numbers[line] += inserts[i][2]; } - code.innerHTML = lines.join(''); + codeContainer.innerHTML = code.join(''); + + if (hasLineNumbers) { + numbersContainer.innerHTML = numbers.join(''); + codeContainer.appendChild(numbersContainer); + } } Prism.hooks.add('complete', function completeHook(env) { @@ -57,12 +74,18 @@ Prism.hooks.add('complete', function completeHook(env) { if (hasClass(pre, 'line-numbers') && hasLineNumbers && !isLineNumbersLoaded) { Prism.hooks.add('line-numbers', completeHook); } else { - collapseLines(pre, config); + collapseLines(pre, config, hasLineNumbers); } }); $('body').on('click', 'pre code .collapse.collapsed', function() { - $(this).removeClass('collapsed'); + var parent = $(this).closest('code'); + var index = $(this).attr('data-index'); + + parent + .find('.collapse[data-index=' + index + ']') + .removeClass('collapsed') + ; }); })(); From b3326451c760b6514e0192b929e499c746f34a1c Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Wed, 28 Feb 2018 17:57:17 -0800 Subject: [PATCH 07/29] fix css specificity --- prettify.less | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/prettify.less b/prettify.less index 3e09e87..497275c 100644 --- a/prettify.less +++ b/prettify.less @@ -1,10 +1,18 @@ -pre[class*="language-"] > code { - font-size: 16px !important; - border-left: none !important; - box-shadow: 0px 0px 0px 1px #dfdfdf !important; -} +article { + pre[class*="language-"] > code { + font-size: 16px; + border-left: none; + box-shadow: 0px 0px 0px 1px #dfdfdf; + background-image: none; + } + + pre[class*=language-]:after, pre[class*=language-]:before { + display: none; + content: none; + } -pre[class*=language-]:after, pre[class*=language-]:before { - display: none !important; - content: none !important; + .line-highlight { + background: hsla(221, 79%, 51%, .1); + background: linear-gradient(to right, hsla(221, 79%, 51%, .1) 70%, hsla(221, 79%, 51%, 0)); + } } From 1269415ae0e350b34474faebb9ba2e4eb8070cea Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Wed, 28 Feb 2018 17:57:24 -0800 Subject: [PATCH 08/29] add prism-collapse --- prettify.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/prettify.js b/prettify.js index 8e85cec..dea2c3a 100644 --- a/prettify.js +++ b/prettify.js @@ -7,6 +7,7 @@ require("prismjs/plugins/command-line/prism-command-line.js"); require("prismjs/plugins/line-highlight/prism-line-highlight.js"); require("prismjs/plugins/toolbar/prism-toolbar.js"); require("prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js"); +require("./prism-collapse.js"); require("prismjs/themes/prism-coy.css"); require("prismjs/plugins/line-numbers/prism-line-numbers.css"); @@ -14,6 +15,7 @@ require("prismjs/plugins/previewers/prism-previewers.css"); require("prismjs/plugins/command-line/prism-command-line.css"); require("prismjs/plugins/line-highlight/prism-line-highlight.css"); require("prismjs/plugins/toolbar/prism-toolbar.css"); +require("./prism-collapse.css"); Prism.languages.insertBefore('javascript', 'template-string', { 'html-template-string': { From 22fa6189177c536abd8240ed60917fabc7ada3bb Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Wed, 28 Feb 2018 18:47:26 -0800 Subject: [PATCH 09/29] collapse handles highlights --- prism-collapse.css | 2 + prism-collapse.js | 99 ++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 93 insertions(+), 8 deletions(-) diff --git a/prism-collapse.css b/prism-collapse.css index fa0883c..1898140 100644 --- a/prism-collapse.css +++ b/prism-collapse.css @@ -40,6 +40,8 @@ pre.line-numbers code { > .collapse-lines { position: absolute; + height: 0; + overflow: hidden; } &:before { diff --git a/prism-collapse.js b/prism-collapse.js index 4f98c39..01d5cc5 100644 --- a/prism-collapse.js +++ b/prism-collapse.js @@ -9,15 +9,94 @@ function hasClass(element, className) { return (" " + element.className + " ").replace(/[\n\t]/g, " ").indexOf(className) > -1 } +function adjustHighlights(pre, collapseRange, visible) { + collapseRange = collapseRange.split('-').map(function(value) { + return parseInt(value); + }); + + var highlights = $(pre).find('.line-highlight'); + var lineHeight = getLineHeight(highlights); + + highlights.each(function() { + var highlight = $(this); + var range = highlight.attr('data-range').split('-').map(function(value) { + return parseInt(value); + }); + + if (range.length === 1) { + var line = range[0]; + if (line < collapseRange[0]) { + return; + } + + if (line > collapseRange[1]) { + var top = parseFloat(highlight.css('top').slice(0, -2)); + var offset = (collapseRange[1] - collapseRange[0]) * lineHeight; + + highlight.css('top', top + (visible ? offset : -offset)); + return; + } + + highlight.css('display', visible ? 'block' : 'none'); + return; + } + + if (range.length === 2) { + if (range[1] < collapseRange[0]) { + return; + } + + if (range[0] > collapseRange[1]) { + var top = parseFloat(highlight.css('top').slice(0, -2)); + var offset = (collapseRange[1] - collapseRange[0]) * lineHeight; + + highlight.css('top', top + (visible ? offset : -offset)); + return; + } + + highlight.css('display', visible ? 'block' : 'none'); + return; + } + }); + + function getLineHeight(highlights) { + var highlight = highlights.eq(0); + var height = parseFloat(highlight.css('height').slice(0, -2)); + + var range = highlight.attr('data-range').split('-').map(function(value) { + return parseInt(value); + }); + + if (range.length === 1) { + return height; + } + + return height / (range[1] - range[0] + 1); + } +} + function collapseLines(pre, config, hasLineNumbers) { var inserts = []; var ranges = config.split(','); for (var i = 0; i < ranges.length; i++) { - var parts = ranges[i].split('-'); - - inserts.push([ +parts[0], '' ]); + var range = ranges[i]; + var parts = range.split('-'); + + var wrapper = '' + ]); + + adjustHighlights(pre, range, false); } inserts.sort(function (a, b) { @@ -46,7 +125,7 @@ function collapseLines(pre, config, hasLineNumbers) { }); for (var i = 0; i < inserts.length; i++) { - var line = inserts[i][0] - 1; + var line = Math.min(code.length - 1, inserts[i][0] - 1); code.splice(line, 0, inserts[i][1]); numbers[line] += inserts[i][2]; @@ -79,13 +158,17 @@ Prism.hooks.add('complete', function completeHook(env) { }); $('body').on('click', 'pre code .collapse.collapsed', function() { - var parent = $(this).closest('code'); - var index = $(this).attr('data-index'); + var collapse = $(this); + var pre = collapse.closest('pre'); + var code = collapse.closest('code'); + var index = collapse.attr('data-index'); - parent + code .find('.collapse[data-index=' + index + ']') .removeClass('collapsed') ; + + adjustHighlights(pre, collapse.attr('data-range'), true); }); })(); From 48650c8fb382dc90eed13343a22ebb8558c5e5fd Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Wed, 28 Feb 2018 19:24:19 -0800 Subject: [PATCH 10/29] fix tests --- prism-collapse.css | 2 +- test.js | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/prism-collapse.css b/prism-collapse.css index 1898140..512d261 100644 --- a/prism-collapse.css +++ b/prism-collapse.css @@ -19,7 +19,7 @@ pre code { &:before { display: block; - content: url("../../node_modules/bit-docs-html-canjs/static/img/expand_icon.svg"); + content: '⇅ EXPAND ⇅'; margin: 0 auto; width: 1em; diff --git a/test.js b/test.js index 81d6402..e34e351 100644 --- a/test.js +++ b/test.js @@ -9,7 +9,14 @@ var connect = require("connect"); var zombieFixes = "Object.defineProperty(HTMLElement.prototype, 'classList', { get: function() { var parent = this; var classList = parent.className.split(' '); classList.contains = classList.includes; classList.add = function(token) { this.push(token); parent.className = this.join(' '); }; return classList; } });\n\n"; var open = function(url, callback, done) { - var server = connect().use(connect.static(path.join(__dirname))).listen(8081); + var stealPath = path.join(__dirname, "temp", "static", "node_modules", "steal", "steal.production.js"); + fs.writeFileSync(stealPath, zombieFixes + fs.readFileSync(stealPath, "utf8")); + + var indexPath = path.join(__dirname, "temp", "index.html"); + fs.writeFileSync(indexPath, fs.readFileSync(indexPath, "utf8").replace("", "")); + + + var server = connect().use(connect.static(path.join(__dirname, 'temp'))).listen(8081); var browser = new Browser(); browser.visit("http://localhost:8081/" + url) @@ -47,10 +54,7 @@ describe("bit-docs-prettify", function() { forceBuild: true }) .then(function() { - var stealPath = path.join(__dirname, "temp", "static", "node_modules", "steal", "steal.production.js"); - fs.writeFileSync(stealPath, zombieFixes + fs.readFileSync(stealPath, "utf8")); - - open("temp/index.html", function(browser, close) { + open("index.html", function(browser, close) { var codes = browser.window.document.getElementsByTagName("code"); for (var i = 0; i < codes.length; i++) { @@ -66,7 +70,7 @@ describe("bit-docs-prettify", function() { }, done); }) .catch(function(err) { - console.log("err", err.stack); + console.log(err); done(err); }) ; From 888e37b614b46a6449346615587450255b20ee38 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Wed, 28 Feb 2018 19:36:17 -0800 Subject: [PATCH 11/29] 0.2.2-1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 183143e..2851db0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bit-docs-prettify", - "version": "0.2.2-0", + "version": "0.2.2-1", "description": "prettify code plugin", "main": "prettify.js", "scripts": { From 39a66c1ef2309c56d8070e8475364a70df544ea2 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Wed, 28 Feb 2018 19:48:53 -0800 Subject: [PATCH 12/29] use less --- prettify.js | 2 +- prism-collapse.css => prism-collapse.less | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename prism-collapse.css => prism-collapse.less (100%) diff --git a/prettify.js b/prettify.js index dea2c3a..68bb8d9 100644 --- a/prettify.js +++ b/prettify.js @@ -15,7 +15,7 @@ require("prismjs/plugins/previewers/prism-previewers.css"); require("prismjs/plugins/command-line/prism-command-line.css"); require("prismjs/plugins/line-highlight/prism-line-highlight.css"); require("prismjs/plugins/toolbar/prism-toolbar.css"); -require("./prism-collapse.css"); +require("./prism-collapse.less"); Prism.languages.insertBefore('javascript', 'template-string', { 'html-template-string': { diff --git a/prism-collapse.css b/prism-collapse.less similarity index 100% rename from prism-collapse.css rename to prism-collapse.less From ef431222dba8d89de7c3db7cacc3c2782d76b993 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Wed, 28 Feb 2018 19:49:12 -0800 Subject: [PATCH 13/29] 0.2.2-2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2851db0..2f906ca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bit-docs-prettify", - "version": "0.2.2-1", + "version": "0.2.2-2", "description": "prettify code plugin", "main": "prettify.js", "scripts": { From fa9a5a2bdfbcedcd454adf5107ec9c678e23a2a0 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Wed, 28 Feb 2018 20:17:16 -0800 Subject: [PATCH 14/29] fix less --- prism-collapse.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prism-collapse.less b/prism-collapse.less index 512d261..9b24372 100644 --- a/prism-collapse.less +++ b/prism-collapse.less @@ -5,7 +5,7 @@ pre code { background-color: #eee; border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; - padding: calc(0.25em - 1px) 0; + padding: calc(~"0.25em - 1px") 0; margin: 0 -1em; > .collapse-code { From 11b58b6f43d76bcb69dc9f7bb2a81bac1eec9a2d Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Wed, 28 Feb 2018 20:17:34 -0800 Subject: [PATCH 15/29] 0.2.2-3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2f906ca..49f0571 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bit-docs-prettify", - "version": "0.2.2-2", + "version": "0.2.2-3", "description": "prettify code plugin", "main": "prettify.js", "scripts": { From 89dbdecd7561e9479c99a6896bdafc0b74b16e93 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Thu, 1 Mar 2018 16:23:44 -0800 Subject: [PATCH 16/29] disable prism auto-run and fix highlight color --- prettify.js | 5 ++++- prettify.less | 4 ++-- prism-collapse.js | 6 +----- prism-config.js | 3 +++ 4 files changed, 10 insertions(+), 8 deletions(-) create mode 100644 prism-config.js diff --git a/prettify.js b/prettify.js index 68bb8d9..cb39a54 100644 --- a/prettify.js +++ b/prettify.js @@ -1,5 +1,6 @@ require("./prettify.less"); +require("./prism-config"); var Prism = require("prismjs"); require("prismjs/plugins/line-numbers/prism-line-numbers.js"); require("prismjs/plugins/previewers/prism-previewers.js"); @@ -62,4 +63,6 @@ Prism.hooks.add('before-highlightall', function (env) { } } } - }); +}); + +Prism.highlightAll(); diff --git a/prettify.less b/prettify.less index 497275c..68f9f68 100644 --- a/prettify.less +++ b/prettify.less @@ -12,7 +12,7 @@ article { } .line-highlight { - background: hsla(221, 79%, 51%, .1); - background: linear-gradient(to right, hsla(221, 79%, 51%, .1) 70%, hsla(221, 79%, 51%, 0)); + background: rgba(0, 180, 0, .1); + background: linear-gradient(to right, rgba(0, 180, 0, .1) 70%, rgba(0, 180, 0, 0)); } } diff --git a/prism-collapse.js b/prism-collapse.js index 01d5cc5..b945ab0 100644 --- a/prism-collapse.js +++ b/prism-collapse.js @@ -1,7 +1,5 @@ -(function(){ - if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) { - return; + throw new Error('Prism must be loaded before prism-collapse'); } function hasClass(element, className) { @@ -170,5 +168,3 @@ $('body').on('click', 'pre code .collapse.collapsed', function() { adjustHighlights(pre, collapse.attr('data-range'), true); }); - -})(); diff --git a/prism-config.js b/prism-config.js new file mode 100644 index 0000000..1c9771a --- /dev/null +++ b/prism-config.js @@ -0,0 +1,3 @@ +window.Prism = { + manual: true +}; From 3e2b5f1c9a6081a0df1a4fee4a6b1910eab8abfa Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Thu, 1 Mar 2018 16:24:34 -0800 Subject: [PATCH 17/29] 0.2.2-4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 49f0571..f4a3e9d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bit-docs-prettify", - "version": "0.2.2-3", + "version": "0.2.2-4", "description": "prettify code plugin", "main": "prettify.js", "scripts": { From 37e0be6882b60f56bdc7f78456c0cf973e527a11 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Thu, 1 Mar 2018 16:53:50 -0800 Subject: [PATCH 18/29] fixes --- prettify.js | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/prettify.js b/prettify.js index cb39a54..106352b 100644 --- a/prettify.js +++ b/prettify.js @@ -18,6 +18,35 @@ require("prismjs/plugins/line-highlight/prism-line-highlight.css"); require("prismjs/plugins/toolbar/prism-toolbar.css"); require("./prism-collapse.less"); +/** + * Get node for provided line number + * Copied from prism-line-numbers.js and modified to support nested spans + * @param {Element} element pre element + * @param {Number} number line number + * @return {Element|undefined} + */ +Prism.plugins.lineNumbers.getLine = function (element, number) { + if (element.tagName !== 'PRE' || !element.classList.contains('line-numbers')) { + return; + } + + var lineNumberRows = element.querySelector('.line-numbers-rows'); + var lineNumberStart = parseInt(element.getAttribute('data-start'), 10) || 1; + var lineNumberEnd = lineNumberStart + (lineNumberRows.children.length - 1); + + if (number < lineNumberStart) { + number = lineNumberStart; + } + if (number > lineNumberEnd) { + number = lineNumberEnd; + } + + var lineIndex = number - lineNumberStart; + + // this line was changed + return lineNumberRows.querySelectorAll('span')[lineIndex]; +}; + Prism.languages.insertBefore('javascript', 'template-string', { 'html-template-string': { pattern: /`(?:[\s\S])*<[a-z-]+(?:\s+[^<>]*)?>(?:[\s\S])*`/, @@ -37,7 +66,7 @@ Prism.languages.insertBefore('javascript', 'template-string', { } }); -Prism.hooks.add('before-highlightall', function (env) { +module.exports = function() { var codes = document.getElementsByTagName("code"); for (var i = 0; i < codes.length; i++) { var code = codes[i]; @@ -63,6 +92,6 @@ Prism.hooks.add('before-highlightall', function (env) { } } } -}); -Prism.highlightAll(); + window.requestAnimationFrame(Prism.highlightAll); +}; From 2feb51ca9449a845f537f3a0a925ff38e9c65330 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Thu, 1 Mar 2018 16:54:08 -0800 Subject: [PATCH 19/29] 0.2.2-5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f4a3e9d..814256e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bit-docs-prettify", - "version": "0.2.2-4", + "version": "0.2.2-5", "description": "prettify code plugin", "main": "prettify.js", "scripts": { From 8919ed4e0d1db6331711b6a72cada4e0b2f0d1bd Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Thu, 1 Mar 2018 17:10:52 -0800 Subject: [PATCH 20/29] fix line highlight calculation --- prettify.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/prettify.js b/prettify.js index 106352b..6361d50 100644 --- a/prettify.js +++ b/prettify.js @@ -31,8 +31,9 @@ Prism.plugins.lineNumbers.getLine = function (element, number) { } var lineNumberRows = element.querySelector('.line-numbers-rows'); + var lineNumbers = lineNumberRows.querySelectorAll('span'); var lineNumberStart = parseInt(element.getAttribute('data-start'), 10) || 1; - var lineNumberEnd = lineNumberStart + (lineNumberRows.children.length - 1); + var lineNumberEnd = lineNumberStart + (lineNumbers.length - 1); if (number < lineNumberStart) { number = lineNumberStart; @@ -43,8 +44,7 @@ Prism.plugins.lineNumbers.getLine = function (element, number) { var lineIndex = number - lineNumberStart; - // this line was changed - return lineNumberRows.querySelectorAll('span')[lineIndex]; + return lineNumbers[lineIndex]; }; Prism.languages.insertBefore('javascript', 'template-string', { From 66ae96d45c8618c85c7932170c46dea0217435ec Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Thu, 1 Mar 2018 17:11:08 -0800 Subject: [PATCH 21/29] 0.2.2-6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 814256e..57b1130 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bit-docs-prettify", - "version": "0.2.2-5", + "version": "0.2.2-6", "description": "prettify code plugin", "main": "prettify.js", "scripts": { From b115fab6dad39532a9a3156d8c8ab405c2f3e127 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Fri, 2 Mar 2018 12:23:54 -0800 Subject: [PATCH 22/29] do not upgrade naked code --- prettify.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/prettify.js b/prettify.js index 6361d50..858bcfe 100644 --- a/prettify.js +++ b/prettify.js @@ -86,11 +86,6 @@ module.exports = function() { code.parentNode.className += " command-line"; } } - else { - if (!code.className.includes("language-")) { - code.className += " language-unknown"; - } - } } window.requestAnimationFrame(Prism.highlightAll); From d455b64a4bd092740887b2530fa120cb021749dd Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Fri, 2 Mar 2018 12:24:20 -0800 Subject: [PATCH 23/29] 0.2.2-7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 57b1130..843093f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bit-docs-prettify", - "version": "0.2.2-6", + "version": "0.2.2-7", "description": "prettify code plugin", "main": "prettify.js", "scripts": { From 6170026099adc599b2ad67ca550ac74cb9dab3d0 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Fri, 2 Mar 2018 13:57:39 -0800 Subject: [PATCH 24/29] remove highlight and collapse code (moved to bit-docs-html-highlight-line) --- prettify.js | 56 ++++----------- prism-collapse.js | 170 -------------------------------------------- prism-collapse.less | 79 -------------------- test.js | 1 + 4 files changed, 14 insertions(+), 292 deletions(-) delete mode 100644 prism-collapse.js delete mode 100644 prism-collapse.less diff --git a/prettify.js b/prettify.js index 858bcfe..77188b8 100644 --- a/prettify.js +++ b/prettify.js @@ -2,50 +2,20 @@ require("./prettify.less"); require("./prism-config"); var Prism = require("prismjs"); -require("prismjs/plugins/line-numbers/prism-line-numbers.js"); -require("prismjs/plugins/previewers/prism-previewers.js"); -require("prismjs/plugins/command-line/prism-command-line.js"); -require("prismjs/plugins/line-highlight/prism-line-highlight.js"); -require("prismjs/plugins/toolbar/prism-toolbar.js"); -require("prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js"); -require("./prism-collapse.js"); - require("prismjs/themes/prism-coy.css"); -require("prismjs/plugins/line-numbers/prism-line-numbers.css"); -require("prismjs/plugins/previewers/prism-previewers.css"); -require("prismjs/plugins/command-line/prism-command-line.css"); -require("prismjs/plugins/line-highlight/prism-line-highlight.css"); -require("prismjs/plugins/toolbar/prism-toolbar.css"); -require("./prism-collapse.less"); -/** - * Get node for provided line number - * Copied from prism-line-numbers.js and modified to support nested spans - * @param {Element} element pre element - * @param {Number} number line number - * @return {Element|undefined} - */ -Prism.plugins.lineNumbers.getLine = function (element, number) { - if (element.tagName !== 'PRE' || !element.classList.contains('line-numbers')) { - return; - } - - var lineNumberRows = element.querySelector('.line-numbers-rows'); - var lineNumbers = lineNumberRows.querySelectorAll('span'); - var lineNumberStart = parseInt(element.getAttribute('data-start'), 10) || 1; - var lineNumberEnd = lineNumberStart + (lineNumbers.length - 1); +require("prismjs/plugins/line-numbers/prism-line-numbers"); +require("prismjs/plugins/line-numbers/prism-line-numbers.css"); - if (number < lineNumberStart) { - number = lineNumberStart; - } - if (number > lineNumberEnd) { - number = lineNumberEnd; - } +require("prismjs/plugins/previewers/prism-previewers"); +require("prismjs/plugins/previewers/prism-previewers.css"); - var lineIndex = number - lineNumberStart; +require("prismjs/plugins/command-line/prism-command-line"); +require("prismjs/plugins/command-line/prism-command-line.css"); - return lineNumbers[lineIndex]; -}; +require("prismjs/plugins/toolbar/prism-toolbar"); +require("prismjs/plugins/toolbar/prism-toolbar.css"); +require("prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard"); Prism.languages.insertBefore('javascript', 'template-string', { 'html-template-string': { @@ -78,13 +48,13 @@ module.exports = function() { if (code.parentNode.nodeName.toUpperCase() === "PRE") { code.parentNode.className += " line-numbers"; - if (!code.className.includes("language-")) { - code.className += " language-unknown"; - } - if (code.className.includes("language-shell")) { code.parentNode.className += " command-line"; } + + if (!code.className.includes("language-")) { + code.className += " language-unknown"; + } } } diff --git a/prism-collapse.js b/prism-collapse.js deleted file mode 100644 index b945ab0..0000000 --- a/prism-collapse.js +++ /dev/null @@ -1,170 +0,0 @@ -if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) { - throw new Error('Prism must be loaded before prism-collapse'); -} - -function hasClass(element, className) { - className = " " + className + " "; - return (" " + element.className + " ").replace(/[\n\t]/g, " ").indexOf(className) > -1 -} - -function adjustHighlights(pre, collapseRange, visible) { - collapseRange = collapseRange.split('-').map(function(value) { - return parseInt(value); - }); - - var highlights = $(pre).find('.line-highlight'); - var lineHeight = getLineHeight(highlights); - - highlights.each(function() { - var highlight = $(this); - var range = highlight.attr('data-range').split('-').map(function(value) { - return parseInt(value); - }); - - if (range.length === 1) { - var line = range[0]; - if (line < collapseRange[0]) { - return; - } - - if (line > collapseRange[1]) { - var top = parseFloat(highlight.css('top').slice(0, -2)); - var offset = (collapseRange[1] - collapseRange[0]) * lineHeight; - - highlight.css('top', top + (visible ? offset : -offset)); - return; - } - - highlight.css('display', visible ? 'block' : 'none'); - return; - } - - if (range.length === 2) { - if (range[1] < collapseRange[0]) { - return; - } - - if (range[0] > collapseRange[1]) { - var top = parseFloat(highlight.css('top').slice(0, -2)); - var offset = (collapseRange[1] - collapseRange[0]) * lineHeight; - - highlight.css('top', top + (visible ? offset : -offset)); - return; - } - - highlight.css('display', visible ? 'block' : 'none'); - return; - } - }); - - function getLineHeight(highlights) { - var highlight = highlights.eq(0); - var height = parseFloat(highlight.css('height').slice(0, -2)); - - var range = highlight.attr('data-range').split('-').map(function(value) { - return parseInt(value); - }); - - if (range.length === 1) { - return height; - } - - return height / (range[1] - range[0] + 1); - } -} - -function collapseLines(pre, config, hasLineNumbers) { - var inserts = []; - - var ranges = config.split(','); - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - var parts = range.split('-'); - - var wrapper = '' - ]); - - adjustHighlights(pre, range, false); - } - - inserts.sort(function (a, b) { - return b[0] - a[0]; - }); - - - var codeContainer = pre.children[0]; - - var numbersContainer = null; - var numbers = null; - if (hasLineNumbers) { - numbersContainer = codeContainer.lastChild; - numbersContainer.remove(); - - numbers = numbersContainer.innerHTML.split(''); - } - - var code = codeContainer.innerHTML.split('\n'); - code = code.map(function(line, index) { - if (index === code.length - 1) { - return line; - } - - return line + '\n'; - }); - - for (var i = 0; i < inserts.length; i++) { - var line = Math.min(code.length - 1, inserts[i][0] - 1); - - code.splice(line, 0, inserts[i][1]); - numbers[line] += inserts[i][2]; - } - - codeContainer.innerHTML = code.join(''); - - if (hasLineNumbers) { - numbersContainer.innerHTML = numbers.join(''); - codeContainer.appendChild(numbersContainer); - } -} - -Prism.hooks.add('complete', function completeHook(env) { - var pre = env.element.parentNode; - var config = pre && pre.getAttribute('data-collapse'); - - if (!pre || !config || !/pre/i.test(pre.nodeName)) { - return; - } - - var hasLineNumbers = Prism.plugins.lineNumbers; - var isLineNumbersLoaded = env.plugins && env.plugins.lineNumbers; - - if (hasClass(pre, 'line-numbers') && hasLineNumbers && !isLineNumbersLoaded) { - Prism.hooks.add('line-numbers', completeHook); - } else { - collapseLines(pre, config, hasLineNumbers); - } -}); - -$('body').on('click', 'pre code .collapse.collapsed', function() { - var collapse = $(this); - var pre = collapse.closest('pre'); - var code = collapse.closest('code'); - var index = collapse.attr('data-index'); - - code - .find('.collapse[data-index=' + index + ']') - .removeClass('collapsed') - ; - - adjustHighlights(pre, collapse.attr('data-range'), true); -}); diff --git a/prism-collapse.less b/prism-collapse.less deleted file mode 100644 index 9b24372..0000000 --- a/prism-collapse.less +++ /dev/null @@ -1,79 +0,0 @@ -pre code { - .collapse.collapsed { - color: black; - text-align: center; - background-color: #eee; - border-top: 1px solid #ccc; - border-bottom: 1px solid #ccc; - padding: calc(~"0.25em - 1px") 0; - margin: 0 -1em; - - > .collapse-code { - display: none; - } - - &:hover { - opacity: .6; - cursor: pointer; - } - - &:before { - display: block; - content: '⇅ EXPAND ⇅'; - margin: 0 auto; - - width: 1em; - height: 1em; - line-height: 1em; - } - } -} - -pre.line-numbers code { - > .line-numbers-rows > .collapse.collapsed { - border: none; - padding: 0; - margin: 0; - height: 1.5em; - - opacity: 0; - - > .collapse-lines { - position: absolute; - height: 0; - overflow: hidden; - } - - &:before { - display: none; - } - } -} - - -/* conditional positioning of colored bar */ - -pre[data-line] code .collapse.collapsed { - margin-left: -3.8em; -} - -pre.line-numbers code .collapse.collapsed { - margin-left: -4em; -} - - -/* line-numbers overwrites so that spans can be nested */ - -.line-numbers-rows span { - pointer-events: none; - display: block; - counter-increment: linenumber; -} - -.line-numbers-rows span:before { - content: counter(linenumber); - color: #999; - display: block; - padding-right: .8em; - text-align: right; -} diff --git a/test.js b/test.js index e34e351..fff1f3a 100644 --- a/test.js +++ b/test.js @@ -6,6 +6,7 @@ var assert = require("assert"); var Browser = require("zombie"); var connect = require("connect"); +// make a function and to-string the function var zombieFixes = "Object.defineProperty(HTMLElement.prototype, 'classList', { get: function() { var parent = this; var classList = parent.className.split(' '); classList.contains = classList.includes; classList.add = function(token) { this.push(token); parent.className = this.join(' '); }; return classList; } });\n\n"; var open = function(url, callback, done) { From 28a3cd2fbfe81db76e971764ff156e6b85f18767 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Fri, 2 Mar 2018 14:28:35 -0800 Subject: [PATCH 25/29] 0.2.2-8 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 843093f..908ae23 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bit-docs-prettify", - "version": "0.2.2-7", + "version": "0.2.2-8", "description": "prettify code plugin", "main": "prettify.js", "scripts": { From 3fddf5e90bfea1aca25c8cd7599b36a190b89a43 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Fri, 2 Mar 2018 15:51:20 -0800 Subject: [PATCH 26/29] zombieFixes --- test.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/test.js b/test.js index fff1f3a..12b3a3c 100644 --- a/test.js +++ b/test.js @@ -6,8 +6,23 @@ var assert = require("assert"); var Browser = require("zombie"); var connect = require("connect"); -// make a function and to-string the function -var zombieFixes = "Object.defineProperty(HTMLElement.prototype, 'classList', { get: function() { var parent = this; var classList = parent.className.split(' '); classList.contains = classList.includes; classList.add = function(token) { this.push(token); parent.className = this.join(' '); }; return classList; } });\n\n"; +function zombieFixes() { + Object.defineProperty(HTMLElement.prototype, 'classList', { + get: function() { + var parent = this; + + var classList = parent.className.split(' '); + classList.contains = classList.includes; + classList.add = function(token) { + this.push(token); + parent.className = this.join(' '); + }; + + return classList; + } + }); +} +zombieFixes = zombieFixes.toString() + "\nzombieFixes();\n\n" var open = function(url, callback, done) { var stealPath = path.join(__dirname, "temp", "static", "node_modules", "steal", "steal.production.js"); From 88e009adf1de8ffbb74ca215c3112cf5eef002e6 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Fri, 2 Mar 2018 17:27:20 -0800 Subject: [PATCH 27/29] fix styles --- prettify.less | 1 + 1 file changed, 1 insertion(+) diff --git a/prettify.less b/prettify.less index 68f9f68..cfb77cd 100644 --- a/prettify.less +++ b/prettify.less @@ -1,6 +1,7 @@ article { pre[class*="language-"] > code { font-size: 16px; + margin: 0; border-left: none; box-shadow: 0px 0px 0px 1px #dfdfdf; background-image: none; From 0bc00c601a318f77347d301a78df240443575f22 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Fri, 2 Mar 2018 17:27:38 -0800 Subject: [PATCH 28/29] 0.2.2-9 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 908ae23..0e4569c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bit-docs-prettify", - "version": "0.2.2-8", + "version": "0.2.2-9", "description": "prettify code plugin", "main": "prettify.js", "scripts": { From e50921b98683af4ae5baec5c78ab4fe1e8de818a Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Mon, 5 Mar 2018 17:41:32 -0800 Subject: [PATCH 29/29] cleanup --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0e4569c..9d0668b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bit-docs-prettify", - "version": "0.2.2-9", + "version": "0.2.1", "description": "prettify code plugin", "main": "prettify.js", "scripts": {