run_tasks 1.4.0 → 1.5.0

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
  SHA1:
3
- metadata.gz: 0de82fa9c8781db30c68460761abbef5daf589b7
4
- data.tar.gz: 78d78c13f4dd1c98806e228eeb7187e1b32e2a04
3
+ metadata.gz: 0ca212e97bece85ae70c8db267e09c31d0c135bd
4
+ data.tar.gz: 36636b9b276ccd8d4246cd748e09c5900223065d
5
5
  SHA512:
6
- metadata.gz: dfbe8b48bd113e771749f9821a8844fccfe84eedf9a512bbfe52c11c13b1d19636fbf0d0008af8fd13edfcd2f507f87e27e736a71fb8046d84350bb82b766b47
7
- data.tar.gz: 152e3afd479a9bdea597a9560ef93c710b27b65724e08272b7199666a220416713aaa893fa4dd4c089a5c92e53fc4e353760e17c79dc21de97a9fa0834cdf5fe
6
+ metadata.gz: 97133b4706e5fd853ae1686ebc1079d28c016bf3f18ed1831051a4fc3d61b3277cc970f4112b59686fb45319b48d4be8d06c727525bfd2ec4cb67f64899d2010
7
+ data.tar.gz: a5f05889f869b1356e79dd577f1ed7fb390ac9bce118a017eef2f80a5a0e3dc42b444de3b61df2e66af4c52126380e4a7ca6987b3cb8ec3f3a391380722b1ed1
@@ -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
 
@@ -44,7 +44,7 @@ def task(name, help = "", &block)
44
44
  @tasks.store(
45
45
  name,
46
46
  {
47
- :help => Markdown.new(help).to_ansi,
47
+ :help => Markdown::Engine.new(help).to_ansi,
48
48
  :block => block
49
49
  }
50
50
  )
@@ -55,7 +55,11 @@ end
55
55
  # @param options [Hash] Optional options sent to the task.
56
56
  def run(task_name_or_command, *arguments, **options)
57
57
  if task_name_or_command.is_a?(Symbol)
58
- @tasks[task_name_or_command][:block].call *arguments, **options
58
+ if options.empty?
59
+ @tasks[task_name_or_command][:block].call *arguments
60
+ else
61
+ @tasks[task_name_or_command][:block].call *arguments, **options
62
+ end
59
63
  return
60
64
  end
61
65
 
@@ -76,6 +80,12 @@ def run(task_name_or_command, *arguments, **options)
76
80
  puts
77
81
  end
78
82
 
83
+ def are_you_sure?(text = "Are you sure?")
84
+ puts "#{text.yellow.bold} [yN]"
85
+ answer = STDIN.gets.chomp.downcase.chars.first
86
+ exit 9 unless answer == "y"
87
+ end
88
+
79
89
  # @param uri [String]
80
90
  def require_remote(uri)
81
91
  cache_path = "/tmp/run_cache_#{Digest::MD5.hexdigest(uri)}"
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.4.0
4
+ version: 1.5.0
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-20 00:00:00.000000000 Z
11
+ date: 2023-04-11 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:
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