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 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