console_cmdr 0.2.0 → 0.3.0

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: 5d2eaefdcfd50e5023446a819454eb5369910098
4
- data.tar.gz: 4de39d32a83d7a75159aaa06338cf3bf222a7751
3
+ metadata.gz: c3308726d84f864d270fba33b15616f80844f7e8
4
+ data.tar.gz: e5cbfe7d970047080992c9e88afaf858735fa65e
5
5
  SHA512:
6
- metadata.gz: df98a024361bdd1f020b4ac73c067afa4515a299d5996abf5a11ae0d914658f8dbea3f2101743f51e8eac2868d78863b6bf1bb8a5435eb4be23fca0031f7ed15
7
- data.tar.gz: 34b6b5203a916613fc009107dbd441d1aad3ab97ab975c54f0b55caa4d7ad03216767141fdcb3955f9b18da2bb9d807217f71d19c0b9ff7e5287cad7ac0301d5
6
+ metadata.gz: a128d30143c79cf842121983ff7a60fc94e9ee45254565fe38812e2e1fb7ad7f59b060ad66486e27092fb0fd7e44f793e5f6d2dd95b5ea2dd16dd19c9803f5dc
7
+ data.tar.gz: 6a843eba42806265fedd8c5b71a2e7305ae679302e111ba6e10e6e929f379dd6d178a3ecce41a5418bae3cf620244f14659233c35d98dece4993fcbb9effd434
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/console_cmdr.rb CHANGED
@@ -4,14 +4,19 @@
4
4
 
5
5
  require 'cmdr'
6
6
  require 'pxindex'
7
+ require 'terminfo'
7
8
  require 'io/console'
8
9
 
9
10
 
11
+
10
12
  class ConsoleCmdr < Cmdr
11
13
 
12
14
  def initialize(pxindex: nil)
13
15
  super()
16
+ @pxindex_filepath = pxindex
14
17
  @pxi = pxindex ? PxIndex.new(pxindex) : nil
18
+
19
+ @keys = []
15
20
  end
16
21
 
17
22
  def cli_banner()
@@ -19,12 +24,18 @@ class ConsoleCmdr < Cmdr
19
24
  print "> "
20
25
  end
21
26
 
27
+ def reload()
28
+ @pxi = @pxindex_filepath ? PxIndex.new(@pxindex_filepath) : nil
29
+ end
30
+
22
31
  def start(&blk)
23
32
 
24
33
  cli_banner()
25
34
 
26
35
  seq = []
27
- begin
36
+
37
+ loop do
38
+
28
39
  c = $stdin.getch
29
40
 
30
41
  #puts c.ord
@@ -60,6 +71,11 @@ class ConsoleCmdr < Cmdr
60
71
  c = :arrow_left
61
72
  on_keypress(c)
62
73
  input c
74
+
75
+ elsif c == "\u0003" # CTRL+C
76
+ puts
77
+ @linebuffer = ''
78
+ display_output()
63
79
  else
64
80
  if block_given? then
65
81
  on_keypress(c)
@@ -75,7 +91,7 @@ class ConsoleCmdr < Cmdr
75
91
  end
76
92
  end
77
93
 
78
- end until c == "\u0003" # CTRL+C
94
+ end #/ end of loop
79
95
 
80
96
  end
81
97
 
@@ -104,22 +120,52 @@ class ConsoleCmdr < Cmdr
104
120
 
105
121
  return unless @pxi
106
122
 
107
- #puts 'key:' + key.inspect
123
+
108
124
  if key.is_a? String then
109
- #puts '@linebuffer: ' + @linebuffer+key.inspect
125
+
126
+ @keys = []
127
+
110
128
  a = @pxi.q?(@linebuffer+key)
111
129
 
112
130
  if a then
113
- @input_selection = a.map(&:title)
114
- print ("\b" * @linebuffer.length) + @input_selection.last + "\n"
115
- print @linebuffer + key
131
+ unless @input_selection == a.map(&:title) then
132
+ @input_selection = a.map(&:title)
133
+ print ("\b" * @linebuffer.length) + @input_selection.inspect + "\n"
134
+ end
135
+ print ("\b" * @linebuffer.length) + @linebuffer + key
116
136
  else
117
137
  @input_selection = nil
118
138
  end
119
- elsif key == :arrow_down
120
- @linebuffer = @input_selection.first
139
+
140
+ elsif key == :arrow_down or key == :arrow_right
141
+
142
+ @keys << :arrow_down
143
+
144
+ linebuffer = @input_selection[@keys.count(:arrow_down) - 1]
145
+ return if linebuffer.nil?
146
+
147
+
148
+ oldlinebuffer = @linebuffer
149
+ print ("\b" * oldlinebuffer.length)
150
+
151
+ @linebuffer = linebuffer
152
+
153
+ height, width = TermInfo.screen_size
154
+
155
+ rblankpadding = ' ' * (width - @linebuffer.length )
156
+ print @linebuffer
157
+ print rblankpadding
158
+ print ("\b" * rblankpadding.length)
159
+
160
+ elsif key == :arrow_left
161
+
162
+ return if @keys.empty?
163
+
164
+ @keys.pop
165
+ oldlinebuffer = @linebuffer
166
+ @linebuffer = @input_selection[@keys.count(:arrow_down) - 1]
121
167
 
122
- print ("\b" * @linebuffer.length) + @linebuffer
168
+ print ("\b" * oldlinebuffer.length) + @linebuffer
123
169
  end
124
170
  end
125
171
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: console_cmdr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -73,6 +73,26 @@ dependencies:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: 0.1.0
76
+ - !ruby/object:Gem::Dependency
77
+ name: terminfo
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.1'
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: 0.1.1
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - "~>"
91
+ - !ruby/object:Gem::Version
92
+ version: '0.1'
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 0.1.1
76
96
  description:
77
97
  email: james@r0bertson.co.uk
78
98
  executables: []
metadata.gz.sig CHANGED
Binary file