marked-conductor 1.0.9 → 1.0.11

Sign up to get free protection for your applications and to get access to all the features.
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