madCLIbs 0.0.3 → 0.0.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.
- checksums.yaml +4 -4
- data/examples/ctrlc.rb +23 -0
- data/lib/mad_clibs/blanks/mixins/color_handling.rb +1 -1
- data/lib/mad_clibs/prompter.rb +6 -2
- data/lib/mad_clibs/version.rb +1 -1
- data/lib/mad_clibs.rb +10 -4
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b225b7b9de1d2f71e550c51ad2fa87e16578fc9d
|
4
|
+
data.tar.gz: a05c025b597fbbea9527606c8a0a99e97898284a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8be43d5a80282fc39e5585378c3736c6969c60da9566ffa6d29c9b3d3b87529ca0c3023ceb1183a3c5492b9e64d98452588a5127a3cc1f574866f988c91797c3
|
7
|
+
data.tar.gz: 504a39a88e488a0551eb9f1831364d2211eb103cc43e1f403a68f6b1f94c482d02236cc6a08dac10059303df3b3800cdcfb4a5978071f034cbe0c591fe513d23
|
data/examples/ctrlc.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
#you can specify custom Ctrl-C behavior
|
2
|
+
|
3
|
+
require 'madCLIbs'
|
4
|
+
require 'term/ansicolor'
|
5
|
+
|
6
|
+
$cli = MadCLIbs.new
|
7
|
+
$color = Term::ANSIColor
|
8
|
+
|
9
|
+
$cli.interrupt_handler = ->(){ puts "\nRetrying"; return true }
|
10
|
+
|
11
|
+
now = $cli.prompt("Push ^C",
|
12
|
+
$color.green($cli.string("now")),
|
13
|
+
)
|
14
|
+
|
15
|
+
puts "Field value s1=#{now}"
|
16
|
+
|
17
|
+
$cli.interrupt_handler = ->(){ puts "\nAborting"; return false }
|
18
|
+
|
19
|
+
now = $cli.prompt("Push ^C",
|
20
|
+
$color.red($cli.string("now")),
|
21
|
+
)
|
22
|
+
|
23
|
+
puts "Field value s1=#{now.inspect}"
|
@@ -29,7 +29,7 @@ class MadClibs
|
|
29
29
|
@color_seed ||= '%{value}'
|
30
30
|
colored = s
|
31
31
|
uncolored = uncolor(s)
|
32
|
-
new_color_seed = colored.sub(
|
32
|
+
new_color_seed = colored.sub(uncolored, '%{value}')
|
33
33
|
@color_seed = new_color_seed % {value: @color_seed}
|
34
34
|
uncolored
|
35
35
|
end
|
data/lib/mad_clibs/prompter.rb
CHANGED
@@ -4,7 +4,8 @@ require 'term/ansicolor'
|
|
4
4
|
|
5
5
|
class MadClibs
|
6
6
|
class Prompter
|
7
|
-
def initialize
|
7
|
+
def initialize(controller)
|
8
|
+
@controller = controller
|
8
9
|
@io = IOHelper
|
9
10
|
reinit
|
10
11
|
end
|
@@ -53,7 +54,7 @@ private
|
|
53
54
|
end
|
54
55
|
|
55
56
|
def getc
|
56
|
-
@last_char = @io.read_key
|
57
|
+
@last_char = @io.read_key(false)
|
57
58
|
case @last_char
|
58
59
|
when "up", "shift-tab"
|
59
60
|
previous_blank!
|
@@ -63,6 +64,9 @@ private
|
|
63
64
|
next_blank!
|
64
65
|
when "return", "linefeed"
|
65
66
|
@last_char = "return"
|
67
|
+
when "ctrl-c", "ctrl-d"
|
68
|
+
continue = @controller.interrupt_handler.()
|
69
|
+
throw :escape unless continue
|
66
70
|
else
|
67
71
|
active_blank.key(@last_char)
|
68
72
|
end
|
data/lib/mad_clibs/version.rb
CHANGED
data/lib/mad_clibs.rb
CHANGED
@@ -3,14 +3,20 @@ class MadClibs
|
|
3
3
|
autoload :Blanks, 'mad_clibs/blanks'
|
4
4
|
autoload :Prompter, 'mad_clibs/prompter'
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
attr_accessor :interrupt_handler
|
7
|
+
|
8
|
+
def initialize(config = {})
|
9
|
+
@prompter = Prompter.new(self)
|
10
|
+
@interrupt_handler = config[:interrupt_handler]
|
11
|
+
@interrupt_handler ||= ->() { raise Interrupt }
|
8
12
|
end
|
9
13
|
|
10
14
|
def prompt(*args)
|
11
15
|
l = Line.new(*args)
|
12
|
-
|
13
|
-
|
16
|
+
catch :escape do
|
17
|
+
@prompter.prompt(l)
|
18
|
+
l.values()
|
19
|
+
end
|
14
20
|
end
|
15
21
|
|
16
22
|
def string(val)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: madCLIbs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Donald Guy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: term-ansicolor
|
@@ -58,6 +58,7 @@ files:
|
|
58
58
|
- Rakefile
|
59
59
|
- examples/basic.rb
|
60
60
|
- examples/colors.rb
|
61
|
+
- examples/ctrlc.rb
|
61
62
|
- examples/scoped.rb
|
62
63
|
- lib/madCLIbs.rb
|
63
64
|
- lib/madCLIbs/import.rb
|