markdown_exec 2.8.3 → 2.8.4

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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -0
  3. data/Gemfile.lock +1 -1
  4. data/Rakefile +33 -23
  5. data/bats/{block-types.bats → block-type-bash.bats} +0 -25
  6. data/bats/block-type-link.bats +9 -0
  7. data/bats/block-type-port.bats +16 -0
  8. data/bats/block-type-ux-allowed.bats +29 -0
  9. data/bats/block-type-ux-auto.bats +1 -1
  10. data/bats/block-type-ux-chained.bats +9 -0
  11. data/bats/block-type-ux-echo-hash.bats +14 -0
  12. data/bats/block-type-ux-echo.bats +2 -2
  13. data/bats/block-type-ux-exec.bats +1 -1
  14. data/bats/block-type-ux-hidden.bats +9 -0
  15. data/bats/block-type-ux-invalid.bats +8 -0
  16. data/bats/block-type-ux-transform.bats +1 -1
  17. data/bats/indented-block-type-vars.bats +9 -0
  18. data/bats/line-decor-dynamic.bats +1 -1
  19. data/bats/test_helper.bash +9 -2
  20. data/bats/variable-expansion-multiline.bats +8 -0
  21. data/bats/variable-expansion.bats +1 -1
  22. data/docs/dev/block-type-ux-allowed.md +80 -0
  23. data/docs/dev/block-type-ux-chained.md +21 -0
  24. data/docs/dev/block-type-ux-echo-hash.md +72 -0
  25. data/docs/dev/block-type-ux-hidden.md +21 -0
  26. data/docs/dev/block-type-ux-invalid.md +5 -0
  27. data/docs/dev/indented-block-type-vars.md +6 -0
  28. data/docs/dev/line-decor-dynamic.md +2 -1
  29. data/docs/dev/variable-expansion-multiline.md +31 -0
  30. data/lib/ansi_formatter.rb +0 -1
  31. data/lib/ansi_string.rb +1 -1
  32. data/lib/array.rb +0 -1
  33. data/lib/array_util.rb +0 -1
  34. data/lib/block_label.rb +1 -1
  35. data/lib/cached_nested_file_reader.rb +1 -1
  36. data/lib/constants.rb +18 -0
  37. data/lib/directory_searcher.rb +1 -1
  38. data/lib/exceptions.rb +0 -1
  39. data/lib/fcb.rb +36 -5
  40. data/lib/filter.rb +1 -2
  41. data/lib/format_table.rb +1 -0
  42. data/lib/fout.rb +1 -1
  43. data/lib/hash.rb +0 -1
  44. data/lib/hash_delegator.rb +310 -162
  45. data/lib/link_history.rb +17 -17
  46. data/lib/logged_struct.rb +429 -0
  47. data/lib/markdown_exec/version.rb +1 -1
  48. data/lib/markdown_exec.rb +3 -3
  49. data/lib/mdoc.rb +5 -17
  50. data/lib/menu.src.yml +3 -1
  51. data/lib/menu.yml +1 -1
  52. data/lib/namer.rb +4 -5
  53. data/lib/null_result.rb +131 -0
  54. data/lib/object_present.rb +1 -1
  55. data/lib/option_value.rb +1 -1
  56. data/lib/resize_terminal.rb +1 -2
  57. data/lib/saved_assets.rb +1 -1
  58. data/lib/saved_files_matcher.rb +1 -1
  59. data/lib/shell_session.rb +439 -0
  60. data/lib/streams_out.rb +0 -1
  61. data/lib/string_util.rb +11 -1
  62. data/lib/success_result.rb +112 -0
  63. data/lib/text_analyzer.rb +1 -0
  64. data/lib/ww.rb +9 -7
  65. metadata +23 -3
data/lib/block_label.rb CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!/usr/bin/env -S bundle exec ruby
2
2
  # frozen_string_literal: true
3
3
 
4
4
  # encoding=utf-8
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!/usr/bin/env -S bundle exec ruby
2
2
  # frozen_string_literal: true
3
3
 
4
4
  # encoding=utf-8
data/lib/constants.rb CHANGED
@@ -103,6 +103,24 @@ end
103
103
  BlockSelection = Struct.new(:id)
104
104
  SelectedBlockMenuState = Struct.new(:block, :source, :state)
105
105
 
106
+ # user responses to prompts to choose
107
+ class SelectResponse
108
+ def initialize(value)
109
+ @value = value
110
+ end
111
+
112
+ def continue?
113
+ @value == :ok
114
+ end
115
+
116
+ def self.continue?(value)
117
+ !value.is_a?(SelectResponse) || value.continue?
118
+ end
119
+ end
120
+
121
+ SelectResponse::BACK = SelectResponse.new(:back)
122
+ SelectResponse::OK = SelectResponse.new(:ok)
123
+
106
124
  class TtyMenu
107
125
  ENABLE = nil
108
126
  DISABLE = ''
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!/usr/bin/env -S bundle exec ruby
2
2
  # frozen_string_literal: true
3
3
 
4
4
  # encoding=utf-8
data/lib/exceptions.rb CHANGED
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env ruby
2
1
  # frozen_string_literal: true
3
2
 
4
3
  # encoding=utf-8
data/lib/fcb.rb CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!/usr/bin/env -S bundle exec ruby
2
2
  # frozen_string_literal: true
3
3
 
4
4
  # encoding=utf-8
@@ -74,6 +74,19 @@ module MarkdownExec
74
74
  @attrs.delete(key)
75
75
  end
76
76
 
77
+ # Removes and returns the first matching name from dependencies collection
78
+ # Checks nickname, oname, pub_name and s2title
79
+ # 2024-08-04 match oname for long block names
80
+ # 2024-08-04 match nickname
81
+ # may not exist if block name is duplicated
82
+ def delete_matching_name!(dependencies)
83
+ dependencies.delete(@attrs[:dname]) ||
84
+ dependencies.delete(@attrs[:nickname]) ||
85
+ dependencies.delete(@attrs[:oname]) ||
86
+ dependencies.delete(@attrs.pub_name) ||
87
+ dependencies.delete(@attrs[:s2title])
88
+ end
89
+
77
90
  # Derives a title from the body of an FCB object.
78
91
  # @param fcb [Object] The FCB object whose title is to be derived.
79
92
  # @return [String] The derived title.
@@ -141,8 +154,8 @@ module MarkdownExec
141
154
  oname = @attrs[:oname] = format(export.menu_format, export.to_h)
142
155
  @attrs[:readonly] = export.readonly
143
156
  else
144
- # triggered by an empty block
145
- raise "Invalid data type: #{data.inspect}"
157
+ # triggered by an empty or non-YAML block
158
+ return NullResult.new(message: 'Invalid YAML', data: data)
146
159
  end
147
160
  end
148
161
 
@@ -150,6 +163,8 @@ module MarkdownExec
150
163
  (yield oname, BLOCK_TYPE_COLOR_OPTIONS[@attrs[:type]]),
151
164
  @attrs[:indent]
152
165
  )
166
+
167
+ SuccessResult.instance
153
168
  end
154
169
 
155
170
  # Formats multiline body content as a title string.
@@ -163,6 +178,24 @@ module MarkdownExec
163
178
  end.join("\n") << "\n"
164
179
  end
165
180
 
181
+ # :reek:ManualDispatch
182
+ # 2024-08-04 match nickname
183
+ def is_dependency_of?(dependency_names)
184
+ dependency_names.include?(@attrs[:dname]) ||
185
+ dependency_names.include?(@attrs[:nickname]) ||
186
+ dependency_names.include?(@attrs[:oname]) ||
187
+ dependency_names.include?(@attrs.pub_name) ||
188
+ dependency_names.include?(@attrs[:s2title])
189
+ end
190
+
191
+ def is_named?(name)
192
+ @attrs[:dname] == name ||
193
+ @attrs[:nickname] == name ||
194
+ @attrs[:oname] == name ||
195
+ @attrs.pub_name == name ||
196
+ @attrs[:s2title] == name
197
+ end
198
+
166
199
  # :reek:ManualDispatch
167
200
  def method_missing(method, *args, &block)
168
201
  method_name = method.to_s
@@ -181,8 +214,6 @@ module MarkdownExec
181
214
  raise err
182
215
  end
183
216
 
184
- public
185
-
186
217
  def name_in_menu!(indented_multi_line)
187
218
  # Indent has been extracted from the first line,
188
219
  # remove indent from the remaining lines.
data/lib/filter.rb CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!/usr/bin/env -S bundle exec ruby
2
2
  # frozen_string_literal: true
3
3
 
4
4
  # encoding=utf-8
@@ -123,7 +123,6 @@ module MarkdownExec
123
123
  #
124
124
  def self.apply_other_filters(options, filters, fcb)
125
125
  name = fcb.oname
126
- shell = fcb.shell
127
126
  filters[:fcb_chrome] = fcb.fetch(:chrome, false)
128
127
  filters[:shell_default] = (fcb.type == BlockType::SHELL)
129
128
 
data/lib/format_table.rb CHANGED
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env -S bundle exec ruby
1
2
  # frozen_string_literal: true
2
3
 
3
4
  require 'ostruct'
data/lib/fout.rb CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!/usr/bin/env -S bundle exec ruby
2
2
  # frozen_string_literal: true
3
3
 
4
4
  # encoding=utf-8
data/lib/hash.rb CHANGED
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env ruby
2
1
  # frozen_string_literal: true
3
2
 
4
3
  # encoding=utf-8