madCLIbs 0.0.3 → 0.0.4

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: d6e4489abd1410baba0ed65e21de82b707ec9148
4
- data.tar.gz: 61fb3e613fc43515672c173379e1264c197a39a6
3
+ metadata.gz: b225b7b9de1d2f71e550c51ad2fa87e16578fc9d
4
+ data.tar.gz: a05c025b597fbbea9527606c8a0a99e97898284a
5
5
  SHA512:
6
- metadata.gz: 38c35fbd1232947ae63bc5eafc6867de5c7f78bb6e14760b2115cac1869c4421f7a5dc178ef8c72895b7f4d03b8a5b62782ce8d620d3db98e634d6975b80fd83
7
- data.tar.gz: 7841306381833dca8616ba18e4645407396155f585cc2eccfe34a6195daf6b7a1b96249cfc46f48932abb5c60c7996b92233051666909cb8ffb0681c4a1ad88d
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(%r'#{uncolored}', '%{value}')
32
+ new_color_seed = colored.sub(uncolored, '%{value}')
33
33
  @color_seed = new_color_seed % {value: @color_seed}
34
34
  uncolored
35
35
  end
@@ -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
@@ -1,3 +1,3 @@
1
1
  class MadClibs
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
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
- def initialize()
7
- @prompter = Prompter.new
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
- @prompter.prompt(l)
13
- l.values()
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.3
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-15 00:00:00.000000000 Z
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