marked-conductor 1.0.9 → 1.0.11

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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/.irbrc +2 -0
  3. data/CHANGELOG.md +23 -0
  4. data/README.rdoc +1 -1
  5. data/bin/conductor +98 -67
  6. data/html/Array.html +160 -0
  7. data/html/Conductor/Command.html +271 -0
  8. data/html/Conductor/Condition.html +791 -0
  9. data/html/Conductor/Config.html +170 -0
  10. data/html/Conductor/Env.html +220 -0
  11. data/html/Conductor/Script.html +288 -0
  12. data/html/Conductor.html +355 -0
  13. data/html/FalseClass.html +138 -0
  14. data/html/Hash.html +160 -0
  15. data/html/Object.html +138 -0
  16. data/html/README_rdoc.html +86 -0
  17. data/html/String.html +440 -0
  18. data/html/TrueClass.html +138 -0
  19. data/html/created.rid +14 -0
  20. data/html/css/fonts.css +167 -0
  21. data/html/css/rdoc.css +687 -0
  22. data/html/fonts/Lato-Light.ttf +0 -0
  23. data/html/fonts/Lato-LightItalic.ttf +0 -0
  24. data/html/fonts/Lato-Regular.ttf +0 -0
  25. data/html/fonts/Lato-RegularItalic.ttf +0 -0
  26. data/html/fonts/SourceCodePro-Bold.ttf +0 -0
  27. data/html/fonts/SourceCodePro-Regular.ttf +0 -0
  28. data/html/images/add.png +0 -0
  29. data/html/images/arrow_up.png +0 -0
  30. data/html/images/brick.png +0 -0
  31. data/html/images/brick_link.png +0 -0
  32. data/html/images/bug.png +0 -0
  33. data/html/images/bullet_black.png +0 -0
  34. data/html/images/bullet_toggle_minus.png +0 -0
  35. data/html/images/bullet_toggle_plus.png +0 -0
  36. data/html/images/date.png +0 -0
  37. data/html/images/delete.png +0 -0
  38. data/html/images/find.png +0 -0
  39. data/html/images/loadingAnimation.gif +0 -0
  40. data/html/images/macFFBgHack.png +0 -0
  41. data/html/images/package.png +0 -0
  42. data/html/images/page_green.png +0 -0
  43. data/html/images/page_white_text.png +0 -0
  44. data/html/images/page_white_width.png +0 -0
  45. data/html/images/plugin.png +0 -0
  46. data/html/images/ruby.png +0 -0
  47. data/html/images/tag_blue.png +0 -0
  48. data/html/images/tag_green.png +0 -0
  49. data/html/images/transparent.png +0 -0
  50. data/html/images/wrench.png +0 -0
  51. data/html/images/wrench_orange.png +0 -0
  52. data/html/images/zoom.png +0 -0
  53. data/html/index.html +105 -0
  54. data/html/js/darkfish.js +97 -0
  55. data/html/js/navigation.js +105 -0
  56. data/html/js/navigation.js.gz +0 -0
  57. data/html/js/search.js +110 -0
  58. data/html/js/search_index.js +1 -0
  59. data/html/js/search_index.js.gz +0 -0
  60. data/html/js/searcher.js +229 -0
  61. data/html/js/searcher.js.gz +0 -0
  62. data/html/table_of_contents.html +345 -0
  63. data/lib/conductor/condition.rb +25 -10
  64. data/lib/conductor/env.rb +18 -7
  65. data/lib/conductor/script.rb +40 -18
  66. data/lib/conductor/string.rb +58 -6
  67. data/lib/conductor/version.rb +1 -1
  68. data/lib/conductor.rb +1 -0
  69. data/marked-conductor.gemspec +3 -3
  70. metadata +89 -32
data/lib/conductor/env.rb CHANGED
@@ -1,9 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Conductor
4
+ # Environment variables
4
5
  module Env
6
+ ##
7
+ ## Define @env using Marked environment variables
8
+ ##
5
9
  def self.env
6
- @env ||= if ENV["CONDUCTOR_TEST"] == "true"
10
+ if ENV["CONDUCTOR_TEST"] == "true"
7
11
  load_test_env
8
12
  else
9
13
  @env ||= {
@@ -23,23 +27,31 @@ module Conductor
23
27
  @env
24
28
  end
25
29
 
30
+ ##
31
+ ## Loads a test environment.
32
+ ##
26
33
  def self.load_test_env
27
34
  @env = {
28
35
  home: "/Users/ttscoff",
29
36
  css_path: "/Applications/Marked 2.app/Contents/Resources/swiss.css",
30
37
  ext: "md",
31
38
  includes: [],
32
- origin: "/Users/ttscoff/Desktop/Code/nvultra-docs/content/",
33
- filepath: "/Users/ttscoff/Desktop/Code/nvultra-docs/content/advanced-features.md",
39
+ origin: "/Users/ttscoff/Sites/dev/bt/source/_posts/",
40
+ filepath: "/Users/ttscoff/Sites/dev/bt/source/_posts/2024-04-01-automating-the-dimspirations-workflow.md",
34
41
  filename: "advanced-features.md",
35
42
  phase: "PROCESS",
36
43
  outline: "NONE",
37
- path: "/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/ttscoff/Desktop/Code/nvultra-docs/content/"
44
+ path: "/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/ttscoff/Sites/dev/bt/source/_posts"
38
45
  }
39
46
  end
40
47
 
48
+ ##
49
+ ## env to string
50
+ ##
51
+ ## @return [String] shell-compatible string representation of @env
52
+ ##
41
53
  def self.to_s
42
- out_h = {
54
+ {
43
55
  "HOME" => @env[:home],
44
56
  "MARKED_CSS_PATH" => @env[:css_path],
45
57
  "MARKED_EXT" => @env[:ext],
@@ -49,8 +61,7 @@ module Conductor
49
61
  "MARKED_PHASE" => @env[:phase],
50
62
  "OUTLINE" => @env[:outline],
51
63
  "PATH" => @env[:path]
52
- }
53
- out_h.map { |k, v| %(#{k}="#{v}") }.join(" ")
64
+ }.map { |k, v| %(#{k}="#{v}") }.join(" ")
54
65
  end
55
66
  end
56
67
  end
@@ -5,41 +5,63 @@ module Conductor
5
5
  class Script
6
6
  attr_reader :args, :path
7
7
 
8
+ ##
9
+ ## Initializes the given script.
10
+ ##
11
+ ## @param script The script/path
12
+ ##
8
13
  def initialize(script)
9
14
  parts = Shellwords.split(script)
10
15
  self.path = parts[0]
11
16
  self.args = parts[1..].join(" ")
12
17
  end
13
18
 
19
+ ##
20
+ ## Set script path, automatically expands/tests
21
+ ##
22
+ ## @param path The path
23
+ ##
14
24
  def path=(path)
15
25
  @path = if %r{^[%/]}.match?(path)
16
- File.expand_path(path)
17
- else
18
- script_dir = File.expand_path("~/.config/conductor/scripts")
19
- if File.exist?(File.join(script_dir, path))
20
- File.join(script_dir, path)
21
- elsif TTY::Which.exist?(path)
22
- TTY::Which.which(path)
23
- else
24
- raise "Path to #{path} not found"
25
-
26
- end
27
- end
26
+ File.expand_path(path)
27
+ else
28
+ script_dir = File.expand_path("~/.config/conductor/scripts")
29
+ if File.exist?(File.join(script_dir, path))
30
+ File.join(script_dir, path)
31
+ elsif TTY::Which.exist?(path)
32
+ TTY::Which.which(path)
33
+ else
34
+ raise "Path to #{path} not found"
35
+
36
+ end
37
+ end
28
38
  end
29
39
 
40
+ ##
41
+ ## Set the args array
42
+ ##
43
+ ## @param array The array
44
+ ##
30
45
  def args=(array)
31
46
  @args = if array.is_a?(Array)
32
- array.join(" ")
33
- else
34
- array
35
- end
47
+ array.join(" ")
48
+ else
49
+ array
50
+ end
36
51
  end
37
52
 
53
+ ##
54
+ ## Execute the script
55
+ ##
56
+ ## @return [String] script results (STDOUT)
57
+ ##
38
58
  def run
39
59
  stdin = Conductor.stdin
40
60
 
41
61
  raise "Script path not defined" unless @path
42
62
 
63
+ raise "Script not executable" unless File.executable?(@path)
64
+
43
65
  use_stdin = true
44
66
  if /\$\{?file\}?/.match?(args)
45
67
  use_stdin = false
@@ -50,9 +72,9 @@ module Conductor
50
72
  end
51
73
 
52
74
  if use_stdin
53
- `echo #{Shellwords.escape(stdin)} | #{Env} #{path} #{args}`
75
+ `echo #{Shellwords.escape(stdin)} | #{Env} #{@path} #{@args}`
54
76
  else
55
- `#{Env} #{path} #{args}`
77
+ `#{Env} #{@path} #{@args}`
56
78
  end
57
79
  end
58
80
  end
@@ -2,6 +2,11 @@
2
2
 
3
3
  # String helpers
4
4
  class ::String
5
+ ##
6
+ ## Convert a string boolean to symbol
7
+ ##
8
+ ## @return [Symbol] symbolized version
9
+ ##
5
10
  def bool_to_symbol
6
11
  case self
7
12
  when /(NOT|!!)/
@@ -13,18 +18,39 @@ class ::String
13
18
  end
14
19
  end
15
20
 
21
+ ##
22
+ ## Test a string to see if it's a UTC date
23
+ ##
24
+ ## @return [Boolean] test result
25
+ ##
16
26
  def date?
17
- dup.force_encoding("utf-8").match?(/^\d{4}-\d{2}-\d{2}/)
27
+ dup.force_encoding("utf-8").match?(/^\d{4}-\d{2}-\d{2}( \d\d:\d\d)?$/)
18
28
  end
19
29
 
30
+ ##
31
+ ## Test a string to see if it includes a time
32
+ ##
33
+ ## @return [Boolean] test result
34
+ ##
20
35
  def time?
21
36
  dup.force_encoding("utf-8").match(/ \d{1,2}(:\d\d)? *([ap]m)?/i)
22
37
  end
23
38
 
39
+ ##
40
+ ## Convert a natural language string to a Date
41
+ ## object
42
+ ##
43
+ ## @return [Date] Resulting Date object
44
+ ##
24
45
  def to_date
25
46
  Chronic.parse(dup.force_encoding("utf-8"))
26
47
  end
27
48
 
49
+ ##
50
+ ## Remove time from string
51
+ ##
52
+ ## @return [String] string with time removed
53
+ ##
28
54
  def strip_time
29
55
  dup.force_encoding("utf-8").sub(/ \d{1,2}(:\d\d)? *([ap]m)?/i, "")
30
56
  end
@@ -34,22 +60,48 @@ class ::String
34
60
  Chronic.parse("#{strip_time} #{t}")
35
61
  end
36
62
 
63
+ ##
64
+ ## Test if a string is a number
65
+ ##
66
+ ## @return [Boolean] test result
67
+ ##
37
68
  def number?
38
69
  to_f.positive?
39
70
  end
40
71
 
72
+ ##
73
+ ## Test if a string is a boolean
74
+ ##
75
+ ## @return [Boolean] test result
76
+ ##
41
77
  def bool?
42
78
  dup.force_encoding("utf-8").match?(/^(?:y(?:es)?|no?|t(?:rue)?|f(?:alse)?)$/)
43
79
  end
44
80
 
45
- def meta?
46
- self =~ /^---/m
81
+ ##
82
+ ## Test if string starts with YAML
83
+ ##
84
+ ## @return [Boolean] test result
85
+ ##
86
+ def yaml?
87
+ dup.force_encoding('utf-8').match?(/^---/m)
47
88
  end
48
89
 
49
- def yaml?
50
- self =~ /^\w+: +\S+/m
90
+ ##
91
+ ## Test if a string starts with MMD metadata
92
+ ##
93
+ ## @return [Boolean] test result
94
+ ##
95
+ def meta?
96
+ dup.force_encoding('utf-8').match?(/^\w+: +\S+/m)
51
97
  end
52
98
 
99
+ ##
100
+ ## Destructive version of #to_bool
101
+ ##
102
+ ##
103
+ ## @see #to_bool
104
+ ##
53
105
  def to_bool!
54
106
  replace to_bool
55
107
  end
@@ -60,7 +112,7 @@ class ::String
60
112
  ## @return [Boolean] Bool representation of the object.
61
113
  ##
62
114
  def to_bool
63
- case self
115
+ case self.force_encoding('utf-8')
64
116
  when /^[yt]/i
65
117
  true
66
118
  else
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Conductor
4
- VERSION = '1.0.9'
4
+ VERSION = '1.0.11'
5
5
  end
data/lib/conductor.rb CHANGED
@@ -20,6 +20,7 @@ require_relative "conductor/condition"
20
20
 
21
21
  module Conductor
22
22
  class << self
23
+ attr_accessor :original_input
23
24
  attr_writer :stdin
24
25
 
25
26
  def stdin
@@ -29,20 +29,20 @@ Gem::Specification.new do |spec|
29
29
  spec.executables = spec.files.grep(%r{\Abin/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ["lib"]
31
31
 
32
- spec.add_development_dependency "pry", "~> 0.14.2"
33
32
  spec.add_development_dependency "awesome_print", "~> 1.9.2"
34
33
  spec.add_development_dependency "bundler", "~> 2.0"
35
34
  spec.add_development_dependency "gem-release", "~> 2.2"
36
35
  spec.add_development_dependency "parse_gemspec-cli", "~> 1.0"
36
+ spec.add_development_dependency "pry", "~> 0.14.2"
37
37
  spec.add_development_dependency "rake", "~> 13.0"
38
- spec.add_development_dependency "yard", "~> 0.9", ">= 0.9.26"
39
38
  spec.add_development_dependency "rspec", "~> 3.0"
40
39
  spec.add_development_dependency "simplecov", "~> 0.21"
41
40
  spec.add_development_dependency "simplecov-console", "~> 0.9"
41
+ spec.add_development_dependency "yard", "~> 0.9", ">= 0.9.26"
42
42
 
43
43
  # Uncomment to register a new dependency of your gem
44
- spec.add_dependency "tty-which", "~> 0.5.0"
45
44
  spec.add_dependency "chronic", "~> 0.10.2"
45
+ spec.add_dependency "tty-which", "~> 0.5.0"
46
46
  # For more information and examples about making a new gem, checkout our
47
47
  # guide at: https://bundler.io/guides/creating_gem.html
48
48
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marked-conductor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Terpstra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-27 00:00:00.000000000 Z
11
+ date: 2024-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: pry
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 0.14.2
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 0.14.2
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: awesome_print
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -81,39 +67,33 @@ dependencies:
81
67
  - !ruby/object:Gem::Version
82
68
  version: '1.0'
83
69
  - !ruby/object:Gem::Dependency
84
- name: rake
70
+ name: pry
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: '13.0'
75
+ version: 0.14.2
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: '13.0'
82
+ version: 0.14.2
97
83
  - !ruby/object:Gem::Dependency
98
- name: yard
84
+ name: rake
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: '0.9'
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- version: 0.9.26
89
+ version: '13.0'
107
90
  type: :development
108
91
  prerelease: false
109
92
  version_requirements: !ruby/object:Gem::Requirement
110
93
  requirements:
111
94
  - - "~>"
112
95
  - !ruby/object:Gem::Version
113
- version: '0.9'
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: 0.9.26
96
+ version: '13.0'
117
97
  - !ruby/object:Gem::Dependency
118
98
  name: rspec
119
99
  requirement: !ruby/object:Gem::Requirement
@@ -157,19 +137,25 @@ dependencies:
157
137
  - !ruby/object:Gem::Version
158
138
  version: '0.9'
159
139
  - !ruby/object:Gem::Dependency
160
- name: tty-which
140
+ name: yard
161
141
  requirement: !ruby/object:Gem::Requirement
162
142
  requirements:
163
143
  - - "~>"
164
144
  - !ruby/object:Gem::Version
165
- version: 0.5.0
166
- type: :runtime
145
+ version: '0.9'
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: 0.9.26
149
+ type: :development
167
150
  prerelease: false
168
151
  version_requirements: !ruby/object:Gem::Requirement
169
152
  requirements:
170
153
  - - "~>"
171
154
  - !ruby/object:Gem::Version
172
- version: 0.5.0
155
+ version: '0.9'
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: 0.9.26
173
159
  - !ruby/object:Gem::Dependency
174
160
  name: chronic
175
161
  requirement: !ruby/object:Gem::Requirement
@@ -184,6 +170,20 @@ dependencies:
184
170
  - - "~>"
185
171
  - !ruby/object:Gem::Version
186
172
  version: 0.10.2
173
+ - !ruby/object:Gem::Dependency
174
+ name: tty-which
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: 0.5.0
180
+ type: :runtime
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: 0.5.0
187
187
  description: Conductor allows easy configuration of multiple scripts that are run
188
188
  as custom pre/processors for Marked based on conditional statements.
189
189
  email:
@@ -204,6 +204,63 @@ files:
204
204
  - README.rdoc
205
205
  - Rakefile
206
206
  - bin/conductor
207
+ - html/Array.html
208
+ - html/Conductor.html
209
+ - html/Conductor/Command.html
210
+ - html/Conductor/Condition.html
211
+ - html/Conductor/Config.html
212
+ - html/Conductor/Env.html
213
+ - html/Conductor/Script.html
214
+ - html/FalseClass.html
215
+ - html/Hash.html
216
+ - html/Object.html
217
+ - html/README_rdoc.html
218
+ - html/String.html
219
+ - html/TrueClass.html
220
+ - html/created.rid
221
+ - html/css/fonts.css
222
+ - html/css/rdoc.css
223
+ - html/fonts/Lato-Light.ttf
224
+ - html/fonts/Lato-LightItalic.ttf
225
+ - html/fonts/Lato-Regular.ttf
226
+ - html/fonts/Lato-RegularItalic.ttf
227
+ - html/fonts/SourceCodePro-Bold.ttf
228
+ - html/fonts/SourceCodePro-Regular.ttf
229
+ - html/images/add.png
230
+ - html/images/arrow_up.png
231
+ - html/images/brick.png
232
+ - html/images/brick_link.png
233
+ - html/images/bug.png
234
+ - html/images/bullet_black.png
235
+ - html/images/bullet_toggle_minus.png
236
+ - html/images/bullet_toggle_plus.png
237
+ - html/images/date.png
238
+ - html/images/delete.png
239
+ - html/images/find.png
240
+ - html/images/loadingAnimation.gif
241
+ - html/images/macFFBgHack.png
242
+ - html/images/package.png
243
+ - html/images/page_green.png
244
+ - html/images/page_white_text.png
245
+ - html/images/page_white_width.png
246
+ - html/images/plugin.png
247
+ - html/images/ruby.png
248
+ - html/images/tag_blue.png
249
+ - html/images/tag_green.png
250
+ - html/images/transparent.png
251
+ - html/images/wrench.png
252
+ - html/images/wrench_orange.png
253
+ - html/images/zoom.png
254
+ - html/index.html
255
+ - html/js/darkfish.js
256
+ - html/js/navigation.js
257
+ - html/js/navigation.js.gz
258
+ - html/js/search.js
259
+ - html/js/search_index.js
260
+ - html/js/search_index.js.gz
261
+ - html/js/searcher.js
262
+ - html/js/searcher.js.gz
263
+ - html/table_of_contents.html
207
264
  - images/preferences.jpg
208
265
  - lib/conductor.rb
209
266
  - lib/conductor/array.rb