madCLIbs 0.0.4 → 0.0.5

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: b225b7b9de1d2f71e550c51ad2fa87e16578fc9d
4
- data.tar.gz: a05c025b597fbbea9527606c8a0a99e97898284a
3
+ metadata.gz: a88d8d8ab13aa4123b03d4b45323be937e8ecc57
4
+ data.tar.gz: c6bdafb4a0f1e89b461395778358a886e7f65b7f
5
5
  SHA512:
6
- metadata.gz: 8be43d5a80282fc39e5585378c3736c6969c60da9566ffa6d29c9b3d3b87529ca0c3023ceb1183a3c5492b9e64d98452588a5127a3cc1f574866f988c91797c3
7
- data.tar.gz: 504a39a88e488a0551eb9f1831364d2211eb103cc43e1f403a68f6b1f94c482d02236cc6a08dac10059303df3b3800cdcfb4a5978071f034cbe0c591fe513d23
6
+ metadata.gz: 6b99b9dd7c248b257bd8ce285545fb61c72576c1e55c15b8300763f614ddcedfe519c604f3bd144a56545e42f6c80f9387c16164b11d68aa36c8962ff4fd9a57
7
+ data.tar.gz: 1c2a2ee54468a35c3f19608fc486ac2d9c34c1efcb3690b472b08b70ca9219088ebe5c23c75812588d2e4e5b394bc79141000bb26e7714474f16e0fc793f6cbc
@@ -0,0 +1,24 @@
1
+ ## Change Log
2
+
3
+ ### v0.0.5 (2015/02/17 19:51 +00:00)
4
+ - [b1a4fcb](https://github.com/donaldguy/madCLIbs/commit/b1a4fcb3fcaba985b536076c6f8b5ba9c9b68ee0) Handle zero blanks; Add to_s -> value for blanks (@donaldguy)
5
+ - [1aa811d](https://github.com/donaldguy/madCLIbs/commit/1aa811dc97fe749cb8e80166bc43e720dc5a0421) User-configurable token seperation logic (@donaldguy)
6
+
7
+ ### v0.0.4 (2015/02/16 04:23 +00:00)
8
+ - [f16e304](https://github.com/donaldguy/madCLIbs/commit/f16e30444401af79db9b6f20e46eaddfc766e71e) Add Support for Custom Interrupt Handlers (@donaldguy)
9
+
10
+ ### v0.0.3 (2015/02/15 18:54 +00:00)
11
+ - [2c3fea7](https://github.com/donaldguy/madCLIbs/commit/2c3fea7a0ffc4a261be30e114fc86608024ebae3) Add Shift-Tab support; Add demo GIF to README (@donaldguy)
12
+ - [9f2a8ef](https://github.com/donaldguy/madCLIbs/commit/9f2a8efce6ebfeb2007eb60a63f0d303f25f885b) Nestable outer-styles; Loosen single-char constraint (@donaldguy)
13
+ - [d044964](https://github.com/donaldguy/madCLIbs/commit/d04496425bbe772627b548f75d0625c9b9d8ce18) Badges (@donaldguy)
14
+
15
+ ### v0.0.2 (2015/02/15 17:58 +00:00)
16
+ - [58803fc](https://github.com/donaldguy/madCLIbs/commit/58803fcb09d5ff29707d049c5381e135b34026e1) Remove dependency on activesupport (@donaldguy)
17
+
18
+ ### v0.0.1 (2015/02/15 17:55 +00:00)
19
+ - [4ccbf56](https://github.com/donaldguy/madCLIbs/commit/4ccbf5621f0b54a6f4846fd7756b869e9c41baac) Tweak docs for initial release (@donaldguy)
20
+ - [37c6ab9](https://github.com/donaldguy/madCLIbs/commit/37c6ab938c840b64aa81d67e0fe75597ab90c418) Color support; Move a lot of Blank::Base to mixins (@donaldguy)
21
+ - [8d3dfc8](https://github.com/donaldguy/madCLIbs/commit/8d3dfc80059f85af98a074ca6f8106988718dbfa) Make cursor and arrow keys work (@donaldguy)
22
+ - [954c4b4](https://github.com/donaldguy/madCLIbs/commit/954c4b4151285e289da6f3426da7568d0f10962e) Proof of concept /w placeholders & tabbing between fields (@donaldguy)
23
+ - [b753175](https://github.com/donaldguy/madCLIbs/commit/b753175e9a9a03c83ca2345e8072ae889d4a8d29) Establish copyright provenance for iohelper.rb (@donaldguy)
24
+ - [0106789](https://github.com/donaldguy/madCLIbs/commit/0106789a6144c095912fb7fd34c9232c9ee0fc27) Initial commit establishing intention (@donaldguy)
@@ -4,11 +4,13 @@ class MadClibs
4
4
  autoload :Prompter, 'mad_clibs/prompter'
5
5
 
6
6
  attr_accessor :interrupt_handler
7
+ attr_accessor :token_separator
7
8
 
8
9
  def initialize(config = {})
9
10
  @prompter = Prompter.new(self)
10
11
  @interrupt_handler = config[:interrupt_handler]
11
12
  @interrupt_handler ||= ->() { raise Interrupt }
13
+ @token_separator = config[:separator] || " "
12
14
  end
13
15
 
14
16
  def prompt(*args)
@@ -35,6 +35,10 @@ class MadClibs
35
35
  end
36
36
  end
37
37
 
38
+ def to_s
39
+ value
40
+ end
41
+
38
42
  protected
39
43
  include Mixins::ColorHandling
40
44
  include Mixins::DefaultKeyHandling
@@ -16,10 +16,15 @@ class MadClibs
16
16
  @blanks = line.instance_variable_get(:@blanks)
17
17
  @current_blank_index = 0
18
18
 
19
- until done?
19
+ if @blanks.empty?
20
20
  render
21
- place_cursor
22
- getc
21
+ @io.read_key(false) #pause to allow Ctrl-C; continue on any other key
22
+ else
23
+ until done?
24
+ render
25
+ place_cursor
26
+ getc
27
+ end
23
28
  end
24
29
 
25
30
  post_render
@@ -40,19 +45,29 @@ private
40
45
  def render
41
46
  buffer = StringIO.new
42
47
 
43
- @tokens.each do |token|
48
+ @tokens.length.times do |i|
49
+ token = @tokens[i]
44
50
  if token.respond_to? :render
45
51
  buffer.print token.render
46
52
  elsif token.respond_to? :to_s
47
53
  buffer.print token
48
54
  end
49
55
 
50
- buffer.print " "
56
+
57
+ buffer.print seperator_between(token, @tokens.fetch(i+1, nil))
51
58
  end
52
59
 
53
60
  @io.rerender buffer.string
54
61
  end
55
62
 
63
+ def seperator_between(a,b)
64
+ if @controller.token_separator.respond_to? :call
65
+ @controller.token_separator.call(a, b)
66
+ else
67
+ @controller.token_separator
68
+ end
69
+ end
70
+
56
71
  def getc
57
72
  @last_char = @io.read_key(false)
58
73
  case @last_char
@@ -75,12 +90,17 @@ private
75
90
  def place_cursor
76
91
  print @io.carriage_return
77
92
 
78
- @tokens.each do |t|
93
+ @tokens.length.times do |i|
94
+ t = @tokens[i]
79
95
  if t == active_blank
80
96
  print @io.char_right*t.position
81
97
  break
82
98
  end
83
- print @io.char_right*(Term::ANSIColor.uncolored(t).length+1) # + 1 for space
99
+
100
+ token_width = Term::ANSIColor.uncolored(t).length
101
+ seperator_width = seperator_between(t, @tokens.fetch(i+1,nil)).size
102
+
103
+ print @io.char_right*(token_width + seperator_width)
84
104
  end
85
105
  end
86
106
 
@@ -1,3 +1,3 @@
1
1
  class MadClibs
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
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
4
+ version: 0.0.5
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-16 00:00:00.000000000 Z
11
+ date: 2015-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: term-ansicolor
@@ -52,6 +52,7 @@ extensions: []
52
52
  extra_rdoc_files: []
53
53
  files:
54
54
  - ".gitignore"
55
+ - CHANGELOG.md
55
56
  - Gemfile
56
57
  - LICENSE.txt
57
58
  - README.md
@@ -100,3 +101,4 @@ signing_key:
100
101
  specification_version: 4
101
102
  summary: User-friendly fill-in-the-blank CLI forms (think HTML5 with placeholders)
102
103
  test_files: []
104
+ has_rdoc: