hirb 0.4.2 → 0.4.3
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 +3 -0
- data/lib/hirb/formatter.rb +9 -9
- data/lib/hirb/version.rb +1 -1
- data/test/formatter_test.rb +3 -13
- metadata +4 -4
data/CHANGELOG.rdoc
CHANGED
data/lib/hirb/formatter.rb
CHANGED
@@ -2,15 +2,17 @@ module Hirb
|
|
2
2
|
# A Formatter object formats an output object (using Formatter.format_output) into a string based on the views defined
|
3
3
|
# for its class and/or ancestry.
|
4
4
|
class Formatter
|
5
|
-
TO_A_EXCEPTIONS = [Hash, IO]
|
6
|
-
POSSIBLE_TO_A_EXCEPTIONS = %w{Tempfile}
|
7
|
-
|
8
5
|
class<<self
|
9
6
|
# This config is used by Formatter.format_output to lazily load dynamic views defined with Hirb::DynamicView.
|
10
7
|
# This hash has the same format as Formatter.config.
|
11
8
|
attr_accessor :dynamic_config
|
9
|
+
|
10
|
+
# Array of classes whose objects respond to :to_a and allow the first
|
11
|
+
# element of the converted array to determine the output class.
|
12
|
+
attr_accessor :to_a_classes
|
12
13
|
end
|
13
14
|
self.dynamic_config = {}
|
15
|
+
self.to_a_classes = %w{Array Set ActiveRecord::Relation}
|
14
16
|
|
15
17
|
def initialize(additional_config={}) #:nodoc:
|
16
18
|
@klass_config = {}
|
@@ -54,13 +56,11 @@ module Hirb
|
|
54
56
|
_format_output(output, options, &block)
|
55
57
|
end
|
56
58
|
|
57
|
-
|
58
|
-
def
|
59
|
-
@
|
60
|
-
Object.const_defined?(e) }.map {|e| Object.const_get(e) }
|
59
|
+
#:stopdoc:
|
60
|
+
def to_a_classes
|
61
|
+
@to_a_classes ||= self.class.to_a_classes.map {|e| Util.any_const_get(e) }.compact
|
61
62
|
end
|
62
63
|
|
63
|
-
#:stopdoc:
|
64
64
|
def _format_output(output, options, &block)
|
65
65
|
output = options[:output_method] ? (output.is_a?(Array) ?
|
66
66
|
output.map {|e| call_output_method(options[:output_method], e) } :
|
@@ -84,7 +84,7 @@ module Hirb
|
|
84
84
|
end
|
85
85
|
|
86
86
|
def determine_output_class(output)
|
87
|
-
output.respond_to?(:to_a) &&
|
87
|
+
output.respond_to?(:to_a) && to_a_classes.any? {|e| output.is_a?(e) } ?
|
88
88
|
Array(output)[0].class : output.class
|
89
89
|
end
|
90
90
|
|
data/lib/hirb/version.rb
CHANGED
data/test/formatter_test.rb
CHANGED
@@ -72,19 +72,9 @@ describe "Formatter" do
|
|
72
72
|
@formatter.parse_console_options(options).should == expected_options
|
73
73
|
end
|
74
74
|
|
75
|
-
it "#
|
76
|
-
|
77
|
-
@formatter.determine_output_class(
|
78
|
-
end
|
79
|
-
|
80
|
-
it "#determine_output_class bypasses exceptions for to_a" do
|
81
|
-
@formatter.determine_output_class(STDOUT).should == IO
|
82
|
-
@formatter.determine_output_class({:a=>1}).should == Hash
|
83
|
-
end
|
84
|
-
|
85
|
-
it "#determine_output_class bypasses subclasses of exceptions for to_a" do
|
86
|
-
class Hash2 < Hash; end
|
87
|
-
@formatter.determine_output_class(Hash2[1=>2]).should == Hash2
|
75
|
+
it "#determine_output_class recognizes subclasses of to_a classes" do
|
76
|
+
class Array2 < Array; end
|
77
|
+
@formatter.determine_output_class(Array2.new(%w{ok dude})).should == String
|
88
78
|
end
|
89
79
|
end
|
90
80
|
|
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:
|
4
|
+
hash: 9
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 3
|
10
|
+
version: 0.4.3
|
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: 2011-03-
|
18
|
+
date: 2011-03-28 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|