aboutsummaryrefslogtreecommitdiff
path: root/docs/_book/gitbook/gitbook-plugin-code
diff options
context:
space:
mode:
authorJakob Stendahl <jakob.stendahl@outlook.com>2019-09-22 13:12:44 +0200
committerJakob Stendahl <jakob.stendahl@outlook.com>2019-09-22 13:12:44 +0200
commite6880cd8ccf82d993f222cb14b4860581654acb8 (patch)
tree45f318f4ece2f0d6ca73fc3f775b9ba277ccdb77 /docs/_book/gitbook/gitbook-plugin-code
parente911f8029ca612d3b17ced300cdf5b6f13e20972 (diff)
parent2e60b25ae368b8c19ce5e982aa2672a6c56edf90 (diff)
downloadLuxcena-Neo-e6880cd8ccf82d993f222cb14b4860581654acb8.tar.gz
Luxcena-Neo-e6880cd8ccf82d993f222cb14b4860581654acb8.zip
Merge branch 'master' of https://github.com/JakobST1n/Luxcena-Neo
Diffstat (limited to 'docs/_book/gitbook/gitbook-plugin-code')
-rw-r--r--docs/_book/gitbook/gitbook-plugin-code/plugin.css37
-rw-r--r--docs/_book/gitbook/gitbook-plugin-code/plugin.js91
2 files changed, 128 insertions, 0 deletions
diff --git a/docs/_book/gitbook/gitbook-plugin-code/plugin.css b/docs/_book/gitbook/gitbook-plugin-code/plugin.css
new file mode 100644
index 0000000..a68fcdc
--- /dev/null
+++ b/docs/_book/gitbook/gitbook-plugin-code/plugin.css
@@ -0,0 +1,37 @@
+#code-textarea {
+ height: 0;
+ position: fixed;
+ top: -1000px;
+ width: 0;
+}
+
+.code-wrapper {
+ position: relative;
+}
+
+.code-wrapper i {
+ color: #c1c7cd;
+ cursor: pointer;
+ font-size: 12px;
+ font-weight: bold;
+ position: absolute;
+ right: 1em;
+ top: 1em;
+}
+
+.code-wrapper pre {
+ background: #f7f8f9;
+ border-radius: 3px;
+ counter-reset: line;
+ font-size: 15px;
+}
+
+.code-wrapper pre > code > span.code-line:before {
+ counter-increment: line;
+ color: #c1c7cd;
+ content: counter(line);
+ display: inline-block;
+ font-size: 12px;
+ margin-right: 1.5em;
+ width: 1em;
+}
diff --git a/docs/_book/gitbook/gitbook-plugin-code/plugin.js b/docs/_book/gitbook/gitbook-plugin-code/plugin.js
new file mode 100644
index 0000000..555d724
--- /dev/null
+++ b/docs/_book/gitbook/gitbook-plugin-code/plugin.js
@@ -0,0 +1,91 @@
+require(['gitbook', 'jQuery'], function(gitbook, $) {
+
+ const TERMINAL_HOOK = '**[terminal]'
+
+ var pluginConfig = {};
+ var timeouts = {};
+
+ function addCopyButton(wrapper) {
+ wrapper.append(
+ $('<i class="fa fa-clone t-copy"></i>')
+ .click(function() {
+ copyCommand($(this));
+ })
+ );
+ }
+
+ function addCopyTextarea() {
+
+ /* Add also the text area that will allow to copy */
+ $('body').append('<textarea id="code-textarea" />');
+ }
+
+ function copyCommand(button) {
+ pre = button.parent();
+ textarea = $('#code-textarea');
+ textarea.val(pre.text());
+ textarea.focus();
+ textarea.select();
+ document.execCommand('copy');
+ pre.focus();
+ updateCopyButton(button);
+ }
+
+ function initializePlugin(config) {
+ pluginConfig = config.code;
+ }
+
+ function format_code_block(block) {
+ /*
+ * Add line numbers for multiline blocks.
+ */
+ code = block.children('code');
+ lines = code.html().split('\n');
+
+ if (lines[lines.length - 1] == '') {
+ lines.splice(-1, 1);
+ }
+
+ if (lines.length > 1) {
+ console.log(lines);
+ lines = lines.map(line => '<span class="code-line">' + line + '</span>');
+ console.log(lines);
+ code.html(lines.join('\n'));
+ }
+
+ // Add wrapper to pre element
+ wrapper = block.wrap('<div class="code-wrapper"></div>');
+
+ if (pluginConfig.copyButtons) {
+ addCopyButton(wrapper);
+ }
+ }
+
+ function updateCopyButton(button) {
+ id = button.attr('data-command');
+ button.removeClass('fa-clone').addClass('fa-check');
+
+ // Clear timeout
+ if (id in timeouts) {
+ clearTimeout(timeouts[id]);
+ }
+ timeouts[id] = window.setTimeout(function() {
+ button.removeClass('fa-check').addClass('fa-clone');
+ }, 1000);
+ }
+
+ gitbook.events.bind('start', function(e, config) {
+ initializePlugin(config);
+
+ if (pluginConfig.copyButtons) {
+ addCopyTextarea();
+ }
+ });
+
+ gitbook.events.bind('page.change', function() {
+ $('pre').each(function() {
+ format_code_block($(this));
+ });
+ });
+
+});