jdvp-codetabs-commonmark 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/assets/codeblock.js +23 -1
- data/lib/jdvp-codetabs-commonmark.rb +7 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 89c9d7f0cf18e00c1227796201c0b804dbe07f2ab538d2bd658e97769ba2b7ba
|
4
|
+
data.tar.gz: dc78b436d81dadb9e5ece43accfd6f8f99676e37df1867acf24575ab2fcae573
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbcf2f927ef0145ce98756ed8771183e56046ef5220dd6d4028d049c4c9fbbf2b2e4fe80aae8b365c1f054400964f536054da8c8b4ca9d891a175f924eae0fd3
|
7
|
+
data.tar.gz: dac067dc28c3f29eb237c0c1f1fabc69ea20c836a2c593b8e5a7f932390a40bd2d903ec2e471626cfd4347d1ca55858df562849c825f2c566cd5e7edeba562fe
|
data/assets/codeblock.js
CHANGED
@@ -25,8 +25,30 @@ function selectTab(codeLangClass, tabClass, tabIndex) {
|
|
25
25
|
});
|
26
26
|
};
|
27
27
|
|
28
|
-
function
|
28
|
+
function isNumeric(str) {
|
29
|
+
return !isNaN(str) && !isNaN(parseFloat(str))
|
30
|
+
}
|
31
|
+
|
32
|
+
function getRange(text) {
|
33
|
+
if (!text?.length) {
|
34
|
+
return [];
|
35
|
+
}
|
36
|
+
var elements = text.split("-").map(i => parseInt(i));
|
37
|
+
var a = Math.min(...elements);
|
38
|
+
var b = Math.max(...elements);
|
39
|
+
return Array.from(new Array(Math.abs(a - b) + 1), (x, i) => i + Math.min(a, b));
|
40
|
+
};
|
41
|
+
|
42
|
+
function copyText(codeBlockClass, copyRange) {
|
43
|
+
var lines = [...new Set(copyRange.replace(/\s/g, "").split(",").flatMap(item => getRange(item)))];
|
44
|
+
lines.sort();
|
45
|
+
|
29
46
|
var copiedText = document.getElementsByClassName(codeBlockClass)[0].innerText;
|
47
|
+
if (lines !== undefined && lines.length > 0) {
|
48
|
+
copiedText = lines.map(lineNumber => copiedText.split("\n")[lineNumber])
|
49
|
+
.filter(item => item?.length)
|
50
|
+
.join("\n")
|
51
|
+
}
|
30
52
|
navigator.clipboard.writeText(copiedText);
|
31
53
|
var snackbar = document.getElementById("code_copied_snackbar");
|
32
54
|
snackbar.classList.add("show")
|
@@ -38,7 +38,7 @@ class CodeTabsCustomerRenderer < JekyllCommonMarkCustomRenderer
|
|
38
38
|
out("<div id=\"code_copied_snackbar\">Copied!</div>")
|
39
39
|
@added_copy_snackbar = true
|
40
40
|
end
|
41
|
-
out("<button class=\"code_switcher_copy_button\" title=\"Copy\" onclick=\"copyText(\'#{individual_code_block_id}\')\"></button>")
|
41
|
+
out("<button class=\"code_switcher_copy_button\" title=\"Copy\" onclick=\"copyText(\'#{individual_code_block_id}\', \'#{get_code_copy_Lines(node)}\')\"></button>")
|
42
42
|
end
|
43
43
|
out("<button class=\"code_switcher_theme_button\" onclick=\"updateTheme(true)\"></button>")
|
44
44
|
out("</div>")
|
@@ -62,7 +62,7 @@ class CodeTabsCustomerRenderer < JekyllCommonMarkCustomRenderer
|
|
62
62
|
#Splits the code fence into the language and extra info
|
63
63
|
#Removes the codeCopyEnabled item which is just a flag used to enable showing a copy action button
|
64
64
|
def split_lanugage_fence_info(node)
|
65
|
-
node&.fence_info&.sub(
|
65
|
+
node&.fence_info&.sub(/ codeCopyEnabled=?"?([\ \-\,0-9]*)"?/, "")&.split(/[\s,]/, 2)
|
66
66
|
end
|
67
67
|
|
68
68
|
#Gets the language used in the code fence (the part typically immediately after a triple backtick in markdown)
|
@@ -87,6 +87,10 @@ class CodeTabsCustomerRenderer < JekyllCommonMarkCustomRenderer
|
|
87
87
|
node&.fence_info&.include?("codeCopyEnabled") || false
|
88
88
|
end
|
89
89
|
|
90
|
+
def get_code_copy_Lines(node)
|
91
|
+
node&.fence_info[/ codeCopyEnabled=?"?([\ \-\,0-9]*)"?/, 1] || ""
|
92
|
+
end
|
93
|
+
|
90
94
|
#Creates the tab header portion of the code switcher
|
91
95
|
def create_tabbed_code_header(node)
|
92
96
|
uuid = SecureRandom.uuid
|
@@ -140,7 +144,7 @@ def add_resource_links_in_html_head(site)
|
|
140
144
|
site_directory = "#{site.in_dest_dir("/")}"
|
141
145
|
|
142
146
|
# For every html file in the generated site
|
143
|
-
Dir.glob("
|
147
|
+
Dir.glob("**/*.html", base: site_directory).each do |file_name|
|
144
148
|
file_plus_path = "#{site_directory}#{file_name}"
|
145
149
|
|
146
150
|
# Check if the file contains a code switcher and skip it if it does not
|