diff options
author | Jakob Stendahl <jakob.stendahl@outlook.com> | 2019-09-22 13:12:44 +0200 |
---|---|---|
committer | Jakob Stendahl <jakob.stendahl@outlook.com> | 2019-09-22 13:12:44 +0200 |
commit | e6880cd8ccf82d993f222cb14b4860581654acb8 (patch) | |
tree | 45f318f4ece2f0d6ca73fc3f775b9ba277ccdb77 /docs/_book/gitbook/gitbook-plugin-code | |
parent | e911f8029ca612d3b17ced300cdf5b6f13e20972 (diff) | |
parent | 2e60b25ae368b8c19ce5e982aa2672a6c56edf90 (diff) | |
download | Luxcena-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.css | 37 | ||||
-rw-r--r-- | docs/_book/gitbook/gitbook-plugin-code/plugin.js | 91 |
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)); + }); + }); + +}); |