hirb 0.3.3 → 0.3.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.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.3.4
2
+ * Added auto format of array-like objects i.e. ActiveRecord::Relation and Set.
3
+ * Fixed bug when Hirb::Console#table is used without Hirb enabled.
4
+ * Fixed bug when hirb is running within cron and uses tput.
5
+
1
6
  == 0.3.3
2
7
  * Added ignore_errors option to ignore view errors and continue with original view.
3
8
  * Added support for array menu items.
@@ -10,5 +10,6 @@ complete(:method=>"Hirb::Helpers::Tree.render") {
10
10
  %w{type validate indent limit description multi_line_nodes value_method children_method}
11
11
  }
12
12
  complete(:methods=>%w{Hirb::Menu.render menu}) {
13
- %w{helper_class prompt ask directions readline two_d default_field action multi_action action_object command}
13
+ %w{helper_class prompt ask directions readline two_d default_field action multi_action} +
14
+ %w{action_object command reopen}
14
15
  }
@@ -75,7 +75,7 @@ module Hirb
75
75
  end
76
76
 
77
77
  def determine_output_class(output)
78
- output.is_a?(Array) ? output[0].class : output.class
78
+ output.respond_to?(:to_a) ? Array(output)[0].class : output.class
79
79
  end
80
80
 
81
81
  def call_output_method(output_method, output)
@@ -113,4 +113,4 @@ module Hirb
113
113
  end
114
114
  #:startdoc:
115
115
  end
116
- end
116
+ end
data/lib/hirb/menu.rb CHANGED
@@ -32,6 +32,8 @@ module Hirb
32
32
  # [*:multi_action*] Execute action menu multiple times iterating over the menu choices. Default is false.
33
33
  # [*:action_object*] Object that takes method/command calls. Default is main.
34
34
  # [*:command*] Default method/command to call when no command given.
35
+ # [*:reopen*] Reopens $stdin with given file or with /dev/tty when set to true. Use when
36
+ # $stdin is already reading in piped data.
35
37
  # Examples:
36
38
  # >> extend Hirb::Console
37
39
  # => self
@@ -47,6 +49,7 @@ module Hirb
47
49
  def initialize(options={})
48
50
  @options = {:helper_class=>Hirb::Helpers::AutoTable, :prompt=>"Choose: ", :ask=>true,
49
51
  :directions=>true}.merge options
52
+ @options[:reopen] = '/dev/tty' if @options[:reopen] == true
50
53
  end
51
54
 
52
55
  def render(output, &block)
@@ -60,6 +63,7 @@ module Hirb
60
63
  def get_input
61
64
  prompt = pre_prompt + @options[:prompt]
62
65
  prompt = DIRECTIONS+"\n"+prompt if @options[:directions]
66
+ $stdin.reopen @options[:reopen] if @options[:reopen]
63
67
 
64
68
  if @options[:readline] && readline_loads?
65
69
  get_readline_input(prompt)
@@ -214,4 +218,4 @@ module Hirb
214
218
  end
215
219
  #:startdoc:
216
220
  end
217
- end
221
+ end
data/lib/hirb/util.rb CHANGED
@@ -61,10 +61,12 @@ module Hirb
61
61
  def detect_terminal_size
62
62
  if (ENV['COLUMNS'] =~ /^\d+$/) && (ENV['LINES'] =~ /^\d+$/)
63
63
  [ENV['COLUMNS'].to_i, ENV['LINES'].to_i]
64
- elsif (RUBY_PLATFORM =~ /java/ || !STDIN.tty?) && command_exists?('tput')
64
+ elsif (RUBY_PLATFORM =~ /java/ || (!STDIN.tty? && ENV['TERM'])) && command_exists?('tput')
65
65
  [`tput cols`.to_i, `tput lines`.to_i]
66
+ elsif STDIN.tty? && command_exists?('stty')
67
+ `stty size`.scan(/\d+/).map { |s| s.to_i }.reverse
66
68
  else
67
- command_exists?('stty') ? `stty size`.scan(/\d+/).map { |s| s.to_i }.reverse : nil
69
+ nil
68
70
  end
69
71
  rescue
70
72
  nil
@@ -91,4 +93,4 @@ module Hirb
91
93
  File::ALT_SEPARATOR ? "C:/" : "/"
92
94
  end
93
95
  end
94
- end
96
+ end
data/lib/hirb/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Hirb
2
- VERSION = '0.3.3'
2
+ VERSION = '0.3.4'
3
3
  end
data/lib/hirb/view.rb CHANGED
@@ -154,12 +154,12 @@ module Hirb
154
154
 
155
155
  # Current console width
156
156
  def width
157
- config ? config[:width] : DEFAULT_WIDTH
157
+ config && config[:width] ? config[:width] : DEFAULT_WIDTH
158
158
  end
159
159
 
160
160
  # Current console height
161
161
  def height
162
- config ? config[:height] : DEFAULT_HEIGHT
162
+ config && config[:height] ? config[:height] : DEFAULT_HEIGHT
163
163
  end
164
164
 
165
165
  # Current formatter config, storing a hash of all static views
data/test/console_test.rb CHANGED
@@ -1,7 +1,24 @@
1
1
  require File.join(File.dirname(__FILE__), 'test_helper')
2
2
 
3
- describe "parse_input" do
4
- it "config is set if it wasn't before" do
3
+ describe "Console" do
4
+ it "#table is called without Hirb enabled" do
5
+ extend Hirb::Console
6
+ reset_config
7
+ expected_table = <<-TABLE.unindent
8
+ +-------+
9
+ | value |
10
+ +-------+
11
+ | 5 |
12
+ | 3 |
13
+ +-------+
14
+ 2 rows in set
15
+ TABLE
16
+ capture_stdout {
17
+ table([5,3], :fields=>[:to_s])
18
+ }.should == expected_table +"\n"
19
+ end
20
+
21
+ it ".render_output sets config if it wasn't before" do
5
22
  reset_config
6
23
  View.expects(:render_output)
7
24
  Console.render_output('blah')
@@ -84,7 +84,7 @@ describe "Formatter" do
84
84
  before_all {
85
85
  eval %[module ::Commify
86
86
  def self.render(strings)
87
- strings = [strings] unless strings.is_a?(Array)
87
+ strings = Array(strings)
88
88
  strings.map {|e| e.split('').join(',')}.join("\n")
89
89
  end
90
90
  end]
@@ -112,11 +112,18 @@ describe "Formatter" do
112
112
  view_output('dude')
113
113
  end
114
114
 
115
- it "formats output array" do
115
+ it "formats arrays" do
116
116
  enable_with_output "String"=>{:class=>"Commify"}
117
117
  render_method.expects(:call).with('d,u,d,e')
118
118
  view_output(['dude'])
119
119
  end
120
+
121
+ it "formats array-like objects" do
122
+ enable_with_output "String"=>{:class=>"Commify"}
123
+ render_method.expects(:call).with('d,u,d,e')
124
+ require 'set'
125
+ view_output Set.new(['dude'])
126
+ end
120
127
 
121
128
  it "formats with options option" do
122
129
  eval "module ::Blahify; def self.render(*args); end; end"
data/test/menu_test.rb CHANGED
@@ -98,6 +98,16 @@ describe "Menu" do
98
98
  menu_input('blah')
99
99
  capture_stdout { menu([1], :directions=>false) }.should.not =~ /range.*all/
100
100
  end
101
+
102
+ it "with true reopen option reopens" do
103
+ $stdin.expects(:reopen).with('/dev/tty')
104
+ basic_menu [1], :reopen=>true
105
+ end
106
+
107
+ it "with string reopen option reopens" do
108
+ $stdin.expects(:reopen).with('/dev/blah')
109
+ basic_menu [1], :reopen=>'/dev/blah'
110
+ end
101
111
  end
102
112
 
103
113
  def two_d_menu(options={})
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hirb
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 3
10
- version: 0.3.3
9
+ - 4
10
+ version: 0.3.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gabriel Horner
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-14 00:00:00 -04:00
18
+ date: 2010-09-13 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency