markdown_exec 1.3.9 → 1.4

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: 8fb58efae22bb345c1c1a863aa9dbf62bd6682cda0154d15d8e114cdf1b8ae64
4
- data.tar.gz: eb0f7696597c1c53fc529e0a538e0ca9b2b684418242605574d01c449a47bf67
3
+ metadata.gz: 25d73d643251be40fcf14edd59a890d3d4fca847217b02c9ee6ad6fdbb06b72e
4
+ data.tar.gz: 8bde8d7e84230d50f34425fa3d549c9bbf7b78bb89219290a454547ba6a6b001
5
5
  SHA512:
6
- metadata.gz: 0520a2e9c8c224e511821e362c189aa648f1f76a2e72876d1d87132d7f76f3ecbf2e84adbb6c4852d07b44aa52ddb08b40cd5f913dbd6540cf459794762b682f
7
- data.tar.gz: 8acbbc2f5bde35a2e41b9852951349ff5ee5bd561c42a283675d25d6edc8d915540ea33de8cc48f72e92692ce31edff8b33a1583e3d8a983f8c28b01e82799f9
6
+ metadata.gz: 04fec544c21aac267c89868755a76cbc0f0565cc676ed3ed647ab9459c7308cf01a26572cb059a0aadc26c403067b3ead4fcd2ce5d05051320ee2aa2b8dee911
7
+ data.tar.gz: 3f6ffedbddbf9a15c3fa7c05b24f61367dbff5c717328a333b1cded39ebba13e18f333383f4d35786b565b8985f2433e683daadf01a89963a606471415a4a503
data/.pryrc ADDED
@@ -0,0 +1,11 @@
1
+ if defined?(PryByebug)
2
+ Pry.config.pager = false
3
+ Pry.commands.alias_command 'c', 'continue'
4
+ Pry.commands.alias_command 'f', 'finish'
5
+ Pry.commands.alias_command 's', 'step'
6
+ Pry.commands.alias_command 'n', 'next'
7
+
8
+ Pry::Commands.command /^$/, 'repeat last command' do
9
+ _pry_.run_command Pry.history.to_a.last
10
+ end
11
+ end
data/.rubocop.yml CHANGED
@@ -15,7 +15,6 @@ Layout/LineContinuationLeadingSpace:
15
15
 
16
16
  Layout/LineLength:
17
17
  Max: 96
18
- # Max: 120
19
18
 
20
19
  Lint/Debugger:
21
20
  Enabled: false
@@ -65,6 +64,9 @@ Style/DoubleNegation:
65
64
  Style/EmptyElse:
66
65
  Enabled: false
67
66
 
67
+ Style/FormatStringToken:
68
+ Enabled: false
69
+
68
70
  Style/GlobalVars:
69
71
  Enabled: false
70
72
 
@@ -74,6 +76,18 @@ Style/MixinUsage:
74
76
  Style/MultilineBlockChain:
75
77
  Enabled: false
76
78
 
79
+ Style/PerlBackrefs: # Prefer ::Regexp.last_match.post_match over $'.
80
+ Enabled: false
81
+
82
+ Style/RegexpLiteral:
83
+ Enabled: false
84
+
85
+ Style/Semicolon: # Do not use semicolons to terminate expressions.
86
+ Enabled: false
87
+
88
+ Style/SingleLineMethods: # Avoid single-line method definitions.
89
+ Enabled: false
90
+
77
91
  Style/SlicingWithRange:
78
92
  Enabled: false
79
93
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- markdown_exec (1.3.9)
4
+ markdown_exec (1.4)
5
5
  clipboard (~> 1.3.6)
6
6
  open3 (~> 0.1.1)
7
7
  optparse (~> 0.1.1)
data/bin/bmde ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ # encoding=utf-8
5
+
6
+ require 'bundler/setup'
7
+ Bundler.require(:default)
8
+
9
+ require_relative '../lib/markdown_exec'
10
+
11
+ MarkdownExec::MarkParse.new.run
@@ -13,7 +13,7 @@ __filedirs_all()
13
13
  }
14
14
 
15
15
  _mde_echo_version() {
16
- echo "1.3.9"
16
+ echo "1.4"
17
17
  }
18
18
 
19
19
  _mde() {
@@ -138,4 +138,4 @@ _mde() {
138
138
 
139
139
  complete -o filenames -o nospace -F _mde mde
140
140
  # _mde_echo_version
141
- # echo "Updated: 2023-10-29 19:38:35 UTC"
141
+ # echo "Updated: 2023-10-31 15:43:43 UTC"
data/examples/linked1.md CHANGED
@@ -3,26 +3,26 @@
3
3
  ::: * This is document 1 *
4
4
  ::: This document links to a matching document to demonstrate navigation between documents.
5
5
 
6
- ::: This Bash block displays the value of variables "linked1var" and "linked2var"
6
+ ::: This Bash block displays the value of variables "page1_var_via_environment" and "page2_var_via_environment"
7
7
 
8
- ```bash :page1_show_vars
8
+ ```bash :show_vars
9
9
  source bin/colorize_env_vars.sh
10
- colorize_env_vars 'on page1' linked1var linked2var
10
+ colorize_env_vars 'vars for page2' PAGE2_VAR_VIA_INHERIT page2_var_via_environment
11
+ colorize_env_vars 'vars for page3' PAGE3_VAR_VIA_INHERIT page3_var_via_environment
11
12
  ```
12
13
 
13
- ::: This Link block sets variable "linked2var" and navigates to document 2.
14
+ ::: This Link block
15
+ ::: 1. requires a block that sets environment variable PAGE2_VAR_VIA_INHERIT,
16
+ ::: 2. navigates to document 2, and
17
+ ::: 3. executes block "show_vars" to display the imported PAGE2_VAR_VIA_INHERIT.
14
18
 
15
- ```link :linked2
16
- file: examples/linked2.md
17
- vars:
18
- linked2var: from_linked1
19
+ ```bash :(vars2)
20
+ PAGE2_VAR_VIA_INHERIT=for_page2_from_page1_via_inherited_code_file
19
21
  ```
20
22
 
21
- ::: This Link block sets variable "linked2var", navigates to document 2, and executes block "page2_show_vars".
22
-
23
- ```link :linked2_show_vars
23
+ ```link :linked2_import_vars +(vars2)
24
24
  file: examples/linked2.md
25
- block: page2_show_vars
25
+ block: show_vars
26
26
  vars:
27
- linked2var: from_linked1
27
+ page2_var_via_environment: for_page2_from_page1_via_current_environment
28
28
  ```
data/examples/linked2.md CHANGED
@@ -3,26 +3,27 @@
3
3
  ::: * This is document 2 *
4
4
  ::: This document links to a matching document to demonstrate navigation between documents.
5
5
 
6
- ::: This Bash block displays the value of variables "linked1var" and "linked2var"
6
+ ::: This Bash block displays the value of variables "page1_var_via_environment" and "page2_var_via_environment"
7
7
 
8
- ```bash :page2_show_vars
8
+ ```bash :show_vars
9
9
  source bin/colorize_env_vars.sh
10
- colorize_env_vars 'on page2' linked1var linked2var
10
+ colorize_env_vars 'vars for page2' PAGE2_VAR_VIA_INHERIT page2_var_via_environment
11
+ colorize_env_vars 'vars for page3' PAGE3_VAR_VIA_INHERIT page3_var_via_environment
11
12
  ```
12
13
 
13
- ::: This Link block sets variable "linked1var" and navigates to document 1.
14
14
 
15
- ```link :linked1
16
- file: examples/linked1.md
17
- vars:
18
- linked1var: from_linked2
19
- ```
15
+ ::: This Link block requires a block that
16
+ ::: 1. sets environment variable PAGE3_VAR_VIA_INHERIT,
17
+ ::: 2. navigates to document 3, and
18
+ ::: 3. executes block "show_vars" to display the imported PAGE3_VAR_VIA_INHERIT.
20
19
 
21
- ::: This Link block sets variable "linked1var", navigates to document 1, and executes block "page1_show_vars".
20
+ ```bash :(vars3)
21
+ PAGE3_VAR_VIA_INHERIT=for_page3_from_page2_via_inherited_code_file
22
+ ```
22
23
 
23
- ```link :linked1_show_vars
24
- file: examples/linked1.md
25
- block: page1_show_vars
24
+ ```link :linked3_import_vars +(vars3)
25
+ file: examples/linked3.md
26
+ block: show_vars
26
27
  vars:
27
- linked1var: from_linked2
28
+ page3_var_via_environment: for_page3_from_page2_via_current_environment
28
29
  ```
@@ -0,0 +1,12 @@
1
+ # Demo document linking
2
+
3
+ ::: * This is document 3 *
4
+ ::: This document is linked from another document to demonstrate code transfer.
5
+
6
+ ::: This Bash block displays the value of variables "PAGE3_VAR_VIA_INHERIT" and "page3_var_via_environment"
7
+
8
+ ```bash :show_vars
9
+ source bin/colorize_env_vars.sh
10
+ colorize_env_vars 'vars for page2' PAGE2_VAR_VIA_INHERIT page2_var_via_environment
11
+ colorize_env_vars 'vars for page3' PAGE3_VAR_VIA_INHERIT page3_var_via_environment
12
+ ```
data/lib/block_types.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  BLOCK_TYPE_BASH = 'bash'
2
4
  BLOCK_TYPE_LINK = 'link'
3
5
  BLOCK_TYPE_OPTS = 'opts'
data/lib/colorize.rb CHANGED
@@ -2,81 +2,78 @@
2
2
 
3
3
  # encoding=utf-8
4
4
 
5
+ # Extends Ruby's native String class to include ANSI coloring functionality.
6
+ # Adds methods to apply RGB colors, named colors, and other formatting to strings.
5
7
  class String
6
- alias_method :original_method_missing, :method_missing
7
-
8
+ # Handles dynamic method calls to create RGB colors.
9
+ #
10
+ # @param method_name [Symbol] The name of the method being called.
11
+ # @param args [Array] The arguments passed to the method.
12
+ # @param block [Proc] An optional block.
13
+ # @return [String] The formatted string.
8
14
  def method_missing(method_name, *args, &block)
9
- if /^fg_rgb_/ =~ method_name.to_s
15
+ case method_name.to_s
16
+ when /^fg_rgb_/
10
17
  fg_rgb_color($'.gsub('_', ';'))
18
+ when /^fg_rgbh_/
19
+ hex_to_rgb($')
11
20
  else
12
- original_method_missing(method_name, *args, &block)
21
+ super
13
22
  end
14
23
  end
15
24
 
16
- # control sequence with reset
25
+ # Generates an ANSI control sequence for the string.
17
26
  #
27
+ # @return [String] The string wrapped in an ANSI control sequence.
18
28
  def ansi_control_sequence
19
29
  "\033[#{self}\033[0m"
20
30
  end
21
31
 
22
- # use 24-bit RGB foreground color spec
23
- # ex: 1;2;3
32
+ # Applies a 24-bit RGB foreground color to the string.
24
33
  #
34
+ # @param rgb [String] The RGB color, expressed as a string like "1;2;3".
35
+ # @return [String] The string with the applied RGB foreground color.
25
36
  def fg_rgb_color(rgb)
26
37
  "38;2;#{rgb}m#{self}".ansi_control_sequence
27
38
  end
28
39
 
29
- def plain
30
- self
31
- end
32
-
33
- # named colors
40
+ # Converts hex color codes to RGB and applies them to the string.
34
41
  #
35
- def black
36
- "30m#{self}".ansi_control_sequence
37
- end
38
-
39
- def red
40
- "31m#{self}".ansi_control_sequence
42
+ # @param hex_str [String] The RGB color, expressed as a hex string like "FF00FF".
43
+ # @return [String] The string with the applied RGB foreground color.
44
+ def hex_to_rgb(hex_str)
45
+ fg_rgb_color(
46
+ hex_str.split('_').map { |hex| hex.to_i(16).to_s }.join(';')
47
+ )
41
48
  end
42
49
 
43
- def bred
44
- "1;31m#{self}".ansi_control_sequence
45
- end
46
-
47
- def green
48
- "32m#{self}".ansi_control_sequence
49
- end
50
-
51
- def bgreen
52
- "1;32m#{self}".ansi_control_sequence
53
- end
54
-
55
- def yellow
56
- "33m#{self}".ansi_control_sequence
57
- end
58
-
59
- def byellow
60
- "1;33m#{self}".ansi_control_sequence
61
- end
62
-
63
- def blue
64
- "34m#{self}".ansi_control_sequence
65
- end
66
-
67
- def magenta
68
- "35m#{self}".ansi_control_sequence
69
- end
70
-
71
- def cyan
72
- "36m#{self}".ansi_control_sequence
73
- end
74
-
75
- def white
76
- "37m#{self}".ansi_control_sequence
50
+ # Provides a plain, unmodified version of the string.
51
+ #
52
+ # @return [String] The original string.
53
+ def plain
54
+ self
77
55
  end
78
56
 
79
- def bwhite
80
- "1;37m#{self}".ansi_control_sequence
81
- end
57
+ # A collection of methods for applying named colors.
58
+ #
59
+ # For example, #black applies a black foreground color to the string.
60
+ # These are provided for convenience and easy readability.
61
+
62
+ def black; "30m#{self}".ansi_control_sequence; end
63
+ def bred; "1;31m#{self}".ansi_control_sequence; end
64
+ def bgreen; "1;32m#{self}".ansi_control_sequence; end
65
+ def byellow; "1;33m#{self}".ansi_control_sequence; end
66
+ def magenta; "35m#{self}".ansi_control_sequence; end
67
+ def cyan; "36m#{self}".ansi_control_sequence; end
68
+ def white; "37m#{self}".ansi_control_sequence; end
69
+ def bwhite; "1;37m#{self}".ansi_control_sequence; end
70
+
71
+ # More named colors using RGB hex values
72
+ def blue; fg_rgbh_00_00_FF; end
73
+ def green; fg_rgbh_00_FF_00; end
74
+ def indigo; fg_rgbh_4B_00_82; end
75
+ def orange; fg_rgbh_FF_7F_00; end
76
+ def red; fg_rgbh_FF_00_00; end
77
+ def violet; fg_rgbh_94_00_D3; end
78
+ def yellow; fg_rgbh_FF_FF_00; end
82
79
  end
data/lib/filter.rb CHANGED
@@ -38,7 +38,7 @@ module MarkdownExec
38
38
  name = fcb.oname
39
39
  shell = fcb.fetch(:shell, '')
40
40
 
41
- apply_name_filters(options, filters, name) #if shell == 'bash'
41
+ apply_name_filters(options, filters, name)
42
42
  apply_shell_filters(options, filters, shell)
43
43
  apply_other_filters(options, filters, fcb)
44
44
 
@@ -125,7 +125,7 @@ module MarkdownExec
125
125
 
126
126
  return unless options[:bash_only]
127
127
 
128
- filters[:shell_default] = (shell == 'bash')
128
+ filters[:shell_default] = (shell == BLOCK_TYPE_BASH)
129
129
  end
130
130
 
131
131
  # Evaluates the filter settings to make a final decision on
@@ -239,7 +239,7 @@ if $PROGRAM_NAME == __FILE__
239
239
 
240
240
  def test_bash_only_condition_true
241
241
  @options[:bash_only] = true
242
- @fcb[:shell] = 'bash'
242
+ @fcb[:shell] = BLOCK_TYPE_BASH
243
243
  assert Filter.fcb_select?(@options, @fcb)
244
244
  end
245
245
 
@@ -7,5 +7,5 @@ module MarkdownExec
7
7
  BIN_NAME = 'mde'
8
8
  GEM_NAME = 'markdown_exec'
9
9
  TAP_DEBUG = 'MDE_DEBUG'
10
- VERSION = '1.3.9'
10
+ VERSION = '1.4'
11
11
  end