run_tasks 1.3.0 → 1.4.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: defef3f4c383f104dbdd29d887667fd4dc78ab7f6126df67f9c2a164273edb05
4
- data.tar.gz: 82b310b715b998b76ff8269cc36760dfee621915796e736ff8850247c2aa427b
2
+ SHA1:
3
+ metadata.gz: 3f8a01e9cf83e14af770fdf07028b7eeef28e5a2
4
+ data.tar.gz: 6298e13d2b841b1e66f3c095538fd99ea486346c
5
5
  SHA512:
6
- metadata.gz: 1db823df990b780814e452ec8911efaae7c9d80448d075cc1af5b342b4b09e7f3a46074d8b919d517846dfa91a0ae4fd35a670d6093a28384b1edccc9b9c815d
7
- data.tar.gz: 94fab98a5b6d052bc225ba2c363e741a61d7b206f7bb9f50b0047ef830a72118599a9f5b8703d40530df1bbcbb6e1d3dba4580addb38b5301d5d27f284816614
6
+ metadata.gz: 840a4dea8f6978e7a4b48d48afe7148707a127a8d619698ffc7ffe11854996422b1aefe1c52be023728e9f8faf4e2fd61f0034b9821a03c43cecef7d20dec637
7
+ data.tar.gz: 0d3d3b5d42de907bf85acd67f14698231756af2c08c5c767aa6bd762aa2085cf83b770bdbc60f58ad8e9790710a4e9f167d8837c63ecd8f10b8fa6add574ff27
@@ -0,0 +1,44 @@
1
+ module Markdown
2
+ module AbstractTag
3
+ def initialize(value)
4
+ case value
5
+ when String
6
+ @string = value
7
+ when AbstractTag
8
+ @tag = value
9
+ else
10
+ raise "Invalid value of '#{value.class.name}' class"
11
+ end
12
+ end
13
+
14
+ def to_ansi
15
+ string = @string || @tag.to_ansi
16
+ pattern = Regexp.new(
17
+ "(^|.+?)" \
18
+ "(?:#{tokens.map{ |token| "\\" + token.chars.join("\\") }.join('|')})" \
19
+ "(.+?)" \
20
+ "(?:#{tokens.map{ |token| "\\" + token.chars.join("\\") }.join('|')})" \
21
+ "($|.+)"
22
+ )
23
+
24
+ loop do
25
+ string = string.sub(pattern) do
26
+ Regexp.last_match[1] + replace_by(Regexp.last_match[2]) + Regexp.last_match[3]
27
+ end
28
+ break if !Regexp.last_match
29
+ end
30
+
31
+ string
32
+ end
33
+
34
+ protected
35
+
36
+ def tokens
37
+ raise "Not implemented"
38
+ end
39
+
40
+ def replace_by(string)
41
+ raise "Not implemented"
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,18 @@
1
+ require_relative "./abstract_tag"
2
+ require_relative "../string"
3
+
4
+ module Markdown
5
+ class Bold
6
+ include AbstractTag
7
+
8
+ protected
9
+
10
+ def tokens
11
+ ['**', '__']
12
+ end
13
+
14
+ def replace_by(string)
15
+ string.bold
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ require_relative "./abstract_tag"
2
+ require_relative "../string"
3
+
4
+ module Markdown
5
+ class Code
6
+ include AbstractTag
7
+
8
+ protected
9
+
10
+ def tokens
11
+ ['`']
12
+ end
13
+
14
+ def replace_by(string)
15
+ string.cyan
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,22 @@
1
+ require_relative "./bold_tag"
2
+ require_relative "./code_tag"
3
+ require_relative "./italic_tag"
4
+
5
+ module Markdown
6
+ class Engine
7
+ def initialize(string)
8
+ @string = string
9
+ end
10
+
11
+ def to_ansi
12
+ # The tags are ordered by priority.
13
+ # E.g. `Bold` should run before `Italic`.
14
+ tag = Code.new(
15
+ Italic.new(
16
+ Bold.new(@string)
17
+ )
18
+ )
19
+ tag.to_ansi
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ require_relative "./abstract_tag"
2
+ require_relative "../string"
3
+
4
+ module Markdown
5
+ class Italic
6
+ include AbstractTag
7
+
8
+ protected
9
+
10
+ def tokens
11
+ ['*', '_']
12
+ end
13
+
14
+ def replace_by(string)
15
+ string.italic
16
+ end
17
+ end
18
+ end
data/src/run.rb CHANGED
@@ -9,8 +9,8 @@ require "securerandom"
9
9
 
10
10
  ##########################################################################################
11
11
 
12
- require_relative "#{__dir__}/run/markdown"
13
12
  require_relative "#{__dir__}/run/string"
13
+ require_relative "#{__dir__}/run/markdown/engine"
14
14
 
15
15
  ##########################################################################################
16
16
 
@@ -34,19 +34,17 @@ def task(name, help = "", &block)
34
34
  if !name.is_a?(Symbol)
35
35
  puts
36
36
  puts "First task parameter must be a symbol".red
37
- puts
38
37
  exit 6
39
38
  end
40
39
  if !help.is_a?(String)
41
40
  puts
42
41
  puts "Second task parameter must be a string".red
43
- puts
44
42
  exit 6
45
43
  end
46
44
  @tasks.store(
47
45
  name,
48
46
  {
49
- :help => Markdown.new(help).to_ansi,
47
+ :help => Markdown::Engine.new(help).to_ansi,
50
48
  :block => block
51
49
  }
52
50
  )
@@ -89,7 +87,6 @@ rescue => error
89
87
  puts
90
88
  puts "Unable to load #{uri}:".red
91
89
  puts "#{error.class}: #{error.message}".red
92
- puts
93
90
  exit 8
94
91
  end
95
92
 
@@ -106,7 +103,6 @@ RUNFILE = "Runfile.rb"
106
103
  if !File.exists?(RUNFILE)
107
104
  puts
108
105
  puts "#{RUNFILE} does not exist".red
109
- puts
110
106
  exit 7
111
107
  end
112
108
 
@@ -116,7 +112,6 @@ rescue SyntaxError => error
116
112
  puts
117
113
  puts "The Runfile contains a syntax error:".red
118
114
  puts error.message.red
119
- puts
120
115
  exit 5
121
116
  end
122
117
 
@@ -146,25 +141,27 @@ end
146
141
  # Verify the latest release version.
147
142
  if VERSION && HOMEPAGE
148
143
  Thread.new do
149
- contents = URI.parse("#{HOMEPAGE}/master/run.gemspec")
150
- .open
151
- .read
152
- version = /^\s*s.version\s*=\s*"(.+?)"\s*$/.match(contents)
153
- if !version.nil?
154
- next if File.exists?("/tmp/run_dismiss_#{version}")
155
- current = VERSION.split "."
156
- latest = version[1].split "."
157
- if current[0].to_i < latest[0].to_i ||
158
- current[1].to_i < latest[1].to_i ||
159
- current[2].to_i < latest[2].to_i
160
- puts "New ".cyan + version[1].yellow + " version released!".cyan
161
- puts
162
- puts "You can upgrade with:".cyan + "gem update run_tasks".yellow
163
- puts
164
- File.write "/tmp/run_dismiss_#{version}", ""
144
+ begin
145
+ contents = URI.parse("#{HOMEPAGE}/master/run.gemspec")
146
+ .open
147
+ .read
148
+ version = /^\s*s.version\s*=\s*"(.+?)"\s*$/.match(contents)
149
+ if !version.nil?
150
+ next if File.exists?("/tmp/run_dismiss_#{version}")
151
+ current = VERSION.split "."
152
+ latest = version[1].split "."
153
+ if current[0].to_i < latest[0].to_i ||
154
+ current[1].to_i < latest[1].to_i ||
155
+ current[2].to_i < latest[2].to_i
156
+ puts "New ".cyan + version[1].yellow + " version released!".cyan
157
+ puts
158
+ puts "You can upgrade with:".cyan + "gem update run_tasks".yellow
159
+ puts
160
+ File.write "/tmp/run_dismiss_#{version}", ""
161
+ end
165
162
  end
163
+ rescue
166
164
  end
167
- rescue
168
165
  end
169
166
  end
170
167
 
@@ -173,14 +170,15 @@ name = ARGV[0].gsub('-', '_').to_sym # Auto-fix hyphens to underscores.
173
170
  if !@tasks.include?(name)
174
171
  puts
175
172
  puts "Unknown '#{name}' task".red
176
- puts
177
173
  exit 2
178
174
  end
179
175
  begin
180
- run(name, *ARGV.slice(1..))
176
+ run(name, *ARGV.slice(Range.new(1, ARGV.size - 1)))
181
177
  rescue Interrupt
182
178
  exit 3
183
179
  rescue => error
184
- puts error.message.red
180
+ puts
181
+ puts "· #{error.message}".red
182
+ puts "· #{error.backtrace.first}".red
185
183
  exit 4
186
184
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: run_tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aurélien Delogu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-16 00:00:00.000000000 Z
11
+ date: 2023-02-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: aurelien.delogu@gmail.com
@@ -19,7 +19,11 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - bin/run
21
21
  - src/run.rb
22
- - src/run/markdown.rb
22
+ - src/run/markdown/abstract_tag.rb
23
+ - src/run/markdown/bold_tag.rb
24
+ - src/run/markdown/code_tag.rb
25
+ - src/run/markdown/engine.rb
26
+ - src/run/markdown/italic_tag.rb
23
27
  - src/run/string.rb
24
28
  homepage: https://github.com/pyrsmk/run
25
29
  licenses:
@@ -40,7 +44,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
40
44
  - !ruby/object:Gem::Version
41
45
  version: '0'
42
46
  requirements: []
43
- rubygems_version: 3.1.6
47
+ rubyforge_project:
48
+ rubygems_version: 2.5.2
44
49
  signing_key:
45
50
  specification_version: 4
46
51
  summary: Run project tasks with ease
data/src/run/markdown.rb DELETED
@@ -1,35 +0,0 @@
1
- require_relative "./string"
2
-
3
- class Markdown
4
- def initialize(string)
5
- @string = string
6
- end
7
-
8
- def to_ansi
9
- # Apply private methods onto string.
10
- private_methods(false).reject{ |name| name == :initialize }
11
- .reduce(@string) do |string, method|
12
- send(method, string)
13
- end
14
- end
15
-
16
- private
17
-
18
- def bold(string)
19
- string.gsub(/([^*_]|^)[*_]{2}([^*_]+)[*_]{2}([^*_]|$)/) do
20
- Regexp.last_match[1] + Regexp.last_match[2].bold + Regexp.last_match[3]
21
- end
22
- end
23
-
24
- def code(string)
25
- string.gsub(/([^`]|^)`([^*_]+)`([^`]|$)/) do
26
- Regexp.last_match[1] + Regexp.last_match[2].cyan + Regexp.last_match[3]
27
- end
28
- end
29
-
30
- def italic(string)
31
- string.gsub(/([^*_]|^)[*_]{1}([^*_]+)[*_]{1}([^*_]|$)/) do
32
- Regexp.last_match[1] + Regexp.last_match[2].italic + Regexp.last_match[3]
33
- end
34
- end
35
- end