console_cmdr 0.1.0 → 0.2.0

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: 6983834a739e8523ba9615edb694d0b28ace43dd
4
- data.tar.gz: fdf186d65af81533bfd771dc91b613dbc559dea0
3
+ metadata.gz: 5d2eaefdcfd50e5023446a819454eb5369910098
4
+ data.tar.gz: 4de39d32a83d7a75159aaa06338cf3bf222a7751
5
5
  SHA512:
6
- metadata.gz: 4f40a110dae05c5b7993b0fd5a058615e040c2da7618874ae3c876b99063b0e674a4b3530ea58bc5d9e5d6557ea5f3428ca080e0270d5a4a780f3359137ce3e0
7
- data.tar.gz: d70af25aa2a35dfaa0deb23847eeac9bc59cb3b24cf167d0d83cff81b42d697c9c919613dda22fd3a1bd11f019317633086fbf935cc314a5eaf6efedf157f374
6
+ metadata.gz: df98a024361bdd1f020b4ac73c067afa4515a299d5996abf5a11ae0d914658f8dbea3f2101743f51e8eac2868d78863b6bf1bb8a5435eb4be23fca0031f7ed15
7
+ data.tar.gz: 34b6b5203a916613fc009107dbd441d1aad3ab97ab975c54f0b55caa4d7ad03216767141fdcb3955f9b18da2bb9d807217f71d19c0b9ff7e5287cad7ac0301d5
checksums.yaml.gz.sig CHANGED
@@ -1,2 +1,3 @@
1
- ��Sxt%<�?�5��5Ȳ�ϓ�ʖ]�������$�%f*��?7��sBI��8U�ТmHG[gK�g�>��q�we�<�Vo6�v|4rW������p�|st5�=M� �����F��#P���
2
- N-�OS:Nz�؛Rp�ٯ�+,�Y^h4�Y޾�]�UbcɅ��q�o�~�$��*��+ M0����v.�����i/u'O}v��&pW"@F�%~��(6/mv�vڹ�sb�ËF����>'��\A��
1
+ Yyj���T��-ݫg^�L�.�Ƨ-{Cg!��a���-�qK�3Dn����|�Ϣ�s��w�6G=��56>hBq�������*�b�'E���M�`O+�Q�Y#H�R���,�������2
2
+ F�?�˫>jw�?���fʱ锋/RG��H�n ���3���~nR�Y�e�.W'�,y0Q��{_Q��`h�'>y
3
+ Ti;$�.�0�;���]?������bݪjln �+� T6��rN(K�
data.tar.gz.sig CHANGED
@@ -1,2 +1 @@
1
- sh��4&�X��P��ْKMgb��?�;�SN�%O���C�y�K)~b ������ �`Fv��ޒ�&�d3Bb9�L4�O�:����T���5.�и���+S4Ļ\�T���;7��uz�}֖},~�r"߿���?�퍠Aè~� ��+�x�кG&���$�k�s��3vx5���`|x!�s$�v�/�W Ҫ
2
- W���ʩZ�,�IEם�Z�U�Ǔ� s_B��J��L�T�z{�k"�t^%w}�^�IIxX�|�
1
+ �6^���X�6�с��$”�"��ml�HS�����0��bۆ �4B�ӆ�I��E`?c=QHfv��'��x��\��U"�~�7��wȻz�����{�`��˭�/?a�w2H�Rd�A4�"5Թ�s��2���Ǜ�-
data/lib/console_cmdr.rb CHANGED
@@ -3,11 +3,16 @@
3
3
  # file: console_cmdr.rb
4
4
 
5
5
  require 'cmdr'
6
+ require 'pxindex'
6
7
  require 'io/console'
7
8
 
8
9
 
9
10
  class ConsoleCmdr < Cmdr
10
11
 
12
+ def initialize(pxindex: nil)
13
+ super()
14
+ @pxi = pxindex ? PxIndex.new(pxindex) : nil
15
+ end
11
16
 
12
17
  def cli_banner()
13
18
  puts "welcome, this code is powered by the cmdr gem\n\n"
@@ -23,6 +28,13 @@ class ConsoleCmdr < Cmdr
23
28
  c = $stdin.getch
24
29
 
25
30
  #puts c.ord
31
+
32
+ # [27, 91, 65] = up_arrow
33
+ # [27, 91, 66] = down_arrow
34
+ # [27, 91, 67] = right_arrow
35
+ # [27, 91, 68] = left_arrow
36
+ # 13 = enter
37
+
26
38
  if c.ord == 27 then
27
39
  seq << 27
28
40
  #print "\b\b"
@@ -31,9 +43,26 @@ class ConsoleCmdr < Cmdr
31
43
  elsif c.ord == 65 and seq[1] == 91
32
44
  seq << 65
33
45
  c = :arrow_up
46
+ on_keypress(c)
34
47
  input c
48
+ elsif c.ord == 66 and seq[1] == 91
49
+ seq << 66
50
+ c = :arrow_down
51
+ on_keypress(c)
52
+ input c
53
+ elsif c.ord == 67 and seq[1] == 91
54
+ seq << 67
55
+ c = :arrow_right
56
+ on_keypress(c)
57
+ input c
58
+ elsif c.ord == 68 and seq[1] == 91
59
+ seq << 68
60
+ c = :arrow_left
61
+ on_keypress(c)
62
+ input c
35
63
  else
36
64
  if block_given? then
65
+ on_keypress(c)
37
66
  input(c, &blk)
38
67
  else
39
68
  input(c) do |command|
@@ -46,21 +75,21 @@ class ConsoleCmdr < Cmdr
46
75
  end
47
76
  end
48
77
 
49
- end until c == "\u0003"
78
+ end until c == "\u0003" # CTRL+C
50
79
 
51
80
  end
52
81
 
53
82
  protected
54
83
 
55
84
  def reveal(c)
56
-
85
+
57
86
  char = case c
58
87
  when "\u007F" # backspace
59
88
  "\b \b"
60
89
  else
61
90
  c unless c.is_a? Symbol
62
91
  end
63
- print char
92
+ print char unless @input_selection and @input_selection.any?
64
93
  end
65
94
 
66
95
  def display_output(s='')
@@ -70,6 +99,28 @@ class ConsoleCmdr < Cmdr
70
99
  def cli_update(s='')
71
100
  print s
72
101
  end
102
+
103
+ def on_keypress(key)
104
+
105
+ return unless @pxi
106
+
107
+ #puts 'key:' + key.inspect
108
+ if key.is_a? String then
109
+ #puts '@linebuffer: ' + @linebuffer+key.inspect
110
+ a = @pxi.q?(@linebuffer+key)
111
+
112
+ if a then
113
+ @input_selection = a.map(&:title)
114
+ print ("\b" * @linebuffer.length) + @input_selection.last + "\n"
115
+ print @linebuffer + key
116
+ else
117
+ @input_selection = nil
118
+ end
119
+ elsif key == :arrow_down
120
+ @linebuffer = @input_selection.first
73
121
 
74
- end
122
+ print ("\b" * @linebuffer.length) + @linebuffer
123
+ end
124
+ end
75
125
 
126
+ end
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.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -31,7 +31,7 @@ cert_chain:
31
31
  JRl6lG+PlMKYzPBmY9bJ9nnHUzlNaUigwV8HWjUzq9NmckAilhs430t3xe8+fsIc
32
32
  uSZB48oWIrOfew==
33
33
  -----END CERTIFICATE-----
34
- date: 2016-10-30 00:00:00.000000000 Z
34
+ date: 2016-12-01 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: cmdr
@@ -53,6 +53,26 @@ dependencies:
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: 0.4.0
56
+ - !ruby/object:Gem::Dependency
57
+ name: pxindex
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '0.1'
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: 0.1.0
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '0.1'
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 0.1.0
56
76
  description:
57
77
  email: james@r0bertson.co.uk
58
78
  executables: []
metadata.gz.sig CHANGED
Binary file