jdvp-codetabs-commonmark 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9c4adff98dae5a51639e65482f45d0cc3e001c8241cba16b953ab3b1bc543d26
4
- data.tar.gz: d5a1d2ee0f4f85194a1d8b2f9c82163631247e832c16f4a38acc6b5f181bd487
3
+ metadata.gz: 89c9d7f0cf18e00c1227796201c0b804dbe07f2ab538d2bd658e97769ba2b7ba
4
+ data.tar.gz: dc78b436d81dadb9e5ece43accfd6f8f99676e37df1867acf24575ab2fcae573
5
5
  SHA512:
6
- metadata.gz: 31252e262c0d4e48464c44ea1c4698c752abfe71ed4ab79adfd65334f1922499de3568dfe6d9ab899fb3041c0e97367280809830e4230ba18f88bbdc8fdc17af
7
- data.tar.gz: 19dd9da254c7fa53894906ff5c25e73333299d8cd82eb4c9ada3cb4515e7242ddeef7fd76245731a9551a6d538c8d32f9459180fbe2a742fceaf0559b936ba02
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 copyText(codeBlockClass) {
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(" codeCopyEnabled", "")&.split(/[\s,]/, 2)
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jdvp-codetabs-commonmark
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - JD Porterfield