hirb 0.2.10 → 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.
- data/CHANGELOG.rdoc +14 -0
- data/README.rdoc +67 -63
- data/Rakefile +3 -0
- data/lib/hirb.rb +25 -18
- data/lib/hirb/console.rb +3 -3
- data/lib/hirb/dynamic_view.rb +112 -0
- data/lib/hirb/formatter.rb +61 -140
- data/lib/hirb/helpers.rb +11 -1
- data/lib/hirb/helpers/auto_table.rb +20 -12
- data/lib/hirb/helpers/object_table.rb +2 -2
- data/lib/hirb/helpers/table.rb +15 -14
- data/lib/hirb/helpers/tree.rb +19 -15
- data/lib/hirb/import_object.rb +1 -1
- data/lib/hirb/menu.rb +1 -1
- data/lib/hirb/util.rb +1 -1
- data/lib/hirb/version.rb +3 -0
- data/lib/hirb/view.rb +74 -19
- data/lib/hirb/views.rb +8 -0
- data/lib/hirb/views/couch_db.rb +11 -0
- data/lib/hirb/views/misc_db.rb +15 -0
- data/lib/hirb/views/mongo_db.rb +15 -0
- data/lib/hirb/views/orm.rb +11 -0
- data/lib/hirb/views/rails.rb +19 -0
- data/test/dynamic_view_test.rb +96 -0
- data/test/formatter_test.rb +36 -48
- data/test/table_test.rb +41 -4
- data/test/tree_test.rb +17 -0
- data/test/view_test.rb +6 -0
- data/test/views_test.rb +15 -0
- metadata +24 -11
- data/VERSION.yml +0 -5
- data/lib/hirb/hash_struct.rb +0 -17
- data/lib/hirb/helpers/active_record_table.rb +0 -26
- data/lib/hirb/views/activerecord_base.rb +0 -9
- data/test/active_record_table_test.rb +0 -35
@@ -0,0 +1,19 @@
|
|
1
|
+
module Hirb::Views::Rails #:nodoc:
|
2
|
+
def active_record__base_view(obj)
|
3
|
+
{:fields=>get_active_record_fields(obj)}
|
4
|
+
end
|
5
|
+
|
6
|
+
def get_active_record_fields(obj)
|
7
|
+
fields = obj.class.column_names.map {|e| e.to_sym }
|
8
|
+
# if query used select
|
9
|
+
if obj.attributes.keys.sort != obj.class.column_names.sort
|
10
|
+
selected_columns = obj.attributes.keys
|
11
|
+
sorted_columns = obj.class.column_names.dup.delete_if {|e| !selected_columns.include?(e) }
|
12
|
+
sorted_columns += (selected_columns - sorted_columns)
|
13
|
+
fields = sorted_columns.map {|e| e.to_sym}
|
14
|
+
end
|
15
|
+
fields
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
Hirb::DynamicView.add Hirb::Views::Rails, :helper=>:auto_table
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper')
|
2
|
+
|
3
|
+
module Hirb
|
4
|
+
class DynamicViewTest < Test::Unit::TestCase
|
5
|
+
def output_expects(output, expects)
|
6
|
+
Helpers::ObjectTable.expects(:render).with(output, expects)
|
7
|
+
Helpers::AutoTable.render(output)
|
8
|
+
end
|
9
|
+
after(:all) { Formatter.dynamic_config = {} }
|
10
|
+
|
11
|
+
context "add" do
|
12
|
+
before(:all) { View.load_config }
|
13
|
+
|
14
|
+
test "raises error if no :helper option" do
|
15
|
+
assert_raises(ArgumentError) {
|
16
|
+
Hirb.add_dynamic_view 'Blah', {}
|
17
|
+
}.message.should =~ /:helper.*required/
|
18
|
+
end
|
19
|
+
|
20
|
+
test "raises error if :helper option not a dynamic_view module" do
|
21
|
+
assert_raises(ArgumentError) {
|
22
|
+
Hirb.add_dynamic_view('Blah', :helper=>:table) {|obj| }
|
23
|
+
}.message.should =~ /:helper.*must/
|
24
|
+
end
|
25
|
+
|
26
|
+
test "raises error if views module not a module" do
|
27
|
+
assert_raises(ArgumentError) {
|
28
|
+
Hirb.add_dynamic_view 'Blah', :helper=>:auto_table
|
29
|
+
}.message.should =~ /must be a module/
|
30
|
+
end
|
31
|
+
|
32
|
+
test "adds a view with block" do
|
33
|
+
Hirb.add_dynamic_view('Date', :helper=>:auto_table) do |obj|
|
34
|
+
{:fields=>obj.class::DAYNAMES}
|
35
|
+
end
|
36
|
+
output_expects [Date.new], :fields=>Date::DAYNAMES
|
37
|
+
end
|
38
|
+
|
39
|
+
test "when adding views with a block, second view for same class overrides first one" do
|
40
|
+
Hirb.add_dynamic_view('Date', :helper=>:auto_table) do |obj|
|
41
|
+
{:fields=>obj.class::DAYNAMES}
|
42
|
+
end
|
43
|
+
Hirb.add_dynamic_view('Date', :helper=>:auto_table) do |obj|
|
44
|
+
{:fields=>[:blah]}
|
45
|
+
end
|
46
|
+
output_expects [Date.new], :fields=>[:blah]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
test "class_to_method and method_to_class convert to each other" do
|
51
|
+
["DBI::Row", "Hirb::View"].each do |e|
|
52
|
+
Helpers::AutoTable.method_to_class(DynamicView.class_to_method(e).downcase).should == e
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context "dynamic_view" do
|
57
|
+
def define_view(mod_name= :Blah, &block)
|
58
|
+
mod = Views.const_set(mod_name, Module.new)
|
59
|
+
mod_block = block_given? ? block : lambda {|obj| {:fields=>obj.class::DAYNAMES}}
|
60
|
+
mod.send(:define_method, :date_view, mod_block)
|
61
|
+
Hirb.add_dynamic_view mod, :helper=>:auto_table
|
62
|
+
end
|
63
|
+
|
64
|
+
before(:all) { View.load_config }
|
65
|
+
before(:each) { Formatter.dynamic_config = {} }
|
66
|
+
after(:each) { Views.send(:remove_const, :Blah) }
|
67
|
+
after(:all) { reset_config }
|
68
|
+
|
69
|
+
test "sets a view's options" do
|
70
|
+
define_view
|
71
|
+
output_expects [Date.new], :fields=>Date::DAYNAMES
|
72
|
+
end
|
73
|
+
|
74
|
+
test "does override existing formatter dynamic_config" do
|
75
|
+
Formatter.dynamic_config["Date"] = {:class=>Helpers::Table}
|
76
|
+
define_view
|
77
|
+
Formatter.dynamic_config["Date"].should == {:class=>Hirb::Helpers::AutoTable, :ancestor=>true}
|
78
|
+
end
|
79
|
+
|
80
|
+
test "raises a readable error when error occurs in a view" do
|
81
|
+
define_view {|obj| raise 'blah' }
|
82
|
+
assert_raises(RuntimeError) {
|
83
|
+
Helpers::AutoTable.render([Date.new])
|
84
|
+
}.message.should =~ /'Date'.*date_view.*\nblah/
|
85
|
+
end
|
86
|
+
|
87
|
+
test "another view can reuse an old view's options" do
|
88
|
+
define_view
|
89
|
+
define_view(:Blah2) do |obj|
|
90
|
+
{:fields=>obj.class::DAYNAMES + ['blah']}
|
91
|
+
end
|
92
|
+
output_expects [Date.new], :fields=>(Date::DAYNAMES + ['blah'])
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
data/test/formatter_test.rb
CHANGED
@@ -2,14 +2,12 @@ require File.join(File.dirname(__FILE__), 'test_helper')
|
|
2
2
|
|
3
3
|
module Hirb
|
4
4
|
class FormatterTest < Test::Unit::TestCase
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
end
|
9
|
-
|
10
|
-
before(:all) { eval "module ::Dooda; end" }
|
5
|
+
def set_formatter(hash={})
|
6
|
+
@formatter = Formatter.new(hash)
|
7
|
+
end
|
11
8
|
|
12
|
-
|
9
|
+
context "klass_config" do
|
10
|
+
test "recursively merges ancestor options" do
|
13
11
|
set_formatter "String"=>{:args=>[1,2], :options=>{:fields=>[:to_s]}},
|
14
12
|
"Object"=>{:method=>:object_output, :ancestor=>true, :options=>{:vertical=>true}},
|
15
13
|
"Kernel"=>{:method=>:default_output}
|
@@ -17,33 +15,50 @@ class FormatterTest < Test::Unit::TestCase
|
|
17
15
|
@formatter.klass_config(::String).should == expected_result
|
18
16
|
end
|
19
17
|
|
20
|
-
test "
|
18
|
+
test "doesn't merge ancestor options" do
|
21
19
|
set_formatter "String"=>{:args=>[1,2]}, "Object"=>{:method=>:object_output}, "Kernel"=>{:method=>:default_output}
|
22
|
-
|
23
|
-
@formatter.klass_config(::String).should == expected_result
|
20
|
+
@formatter.klass_config(::String).should == {:args=>[1, 2]}
|
24
21
|
end
|
25
22
|
|
26
|
-
test "
|
23
|
+
test "returns hash when nothing found" do
|
27
24
|
set_formatter.klass_config(::String).should == {}
|
28
25
|
end
|
29
26
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
27
|
+
context "with dynamic_config" do
|
28
|
+
after(:each) { Formatter.dynamic_config = {}}
|
29
|
+
|
30
|
+
test "merges ancestor options and sets local config" do
|
31
|
+
Formatter.dynamic_config = {"Object"=>{:method=>:blah}, "Kernel"=>{:args=>[1,2], :ancestor=>true}}
|
32
|
+
set_formatter.klass_config(::String).should == {:args=>[1,2], :ancestor=>true}
|
33
|
+
@formatter.config['Kernel'].should == {:args=>[1,2], :ancestor=>true}
|
34
|
+
end
|
35
|
+
|
36
|
+
test "uses local config over dynamic_config" do
|
37
|
+
Formatter.dynamic_config = {"String"=>{:method=>:blah}}
|
38
|
+
set_formatter "String"=>{:args=>[1,2]}
|
39
|
+
@formatter.klass_config(::String).should == {:args=>[1,2]}
|
40
|
+
end
|
41
|
+
|
42
|
+
test "uses dynamic_config and sets local config" do
|
43
|
+
Formatter.dynamic_config = {"String"=>{:method=>:blah}}
|
44
|
+
set_formatter.klass_config(::String).should == {:method=>:blah}
|
45
|
+
@formatter.config['String'].should == {:method=>:blah}
|
46
|
+
end
|
36
47
|
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context "formatter methods:" do
|
51
|
+
before(:all) { eval "module ::Dooda; end" }
|
37
52
|
|
38
|
-
test "
|
53
|
+
test "add_view sets formatter config" do
|
39
54
|
set_formatter
|
40
|
-
@formatter.
|
55
|
+
@formatter.add_view ::Dooda, :class=>"DoodaView"
|
41
56
|
@formatter.klass_config(::Dooda).should == {:class=>"DoodaView"}
|
42
57
|
end
|
43
58
|
|
44
|
-
test "
|
59
|
+
test "add_view overwrites existing formatter config" do
|
45
60
|
set_formatter "Dooda"=>{:class=>"DoodaView"}
|
46
|
-
@formatter.
|
61
|
+
@formatter.add_view ::Dooda, :class=>"DoodaView2"
|
47
62
|
@formatter.klass_config(::Dooda).should == {:class=>"DoodaView2"}
|
48
63
|
end
|
49
64
|
|
@@ -55,33 +70,6 @@ class FormatterTest < Test::Unit::TestCase
|
|
55
70
|
end
|
56
71
|
end
|
57
72
|
|
58
|
-
context "enable" do
|
59
|
-
before(:each) { View.formatter = nil; reset_config }
|
60
|
-
after(:each) { Hirb.disable }
|
61
|
-
|
62
|
-
def formatter_config
|
63
|
-
View.formatter.config
|
64
|
-
end
|
65
|
-
|
66
|
-
test "sets default formatter config" do
|
67
|
-
eval "module ::Hirb::Views::Something_Base; def self.render; end; end"
|
68
|
-
Hirb.enable
|
69
|
-
formatter_config["Something::Base"].should == {:class=>"Hirb::Views::Something_Base"}
|
70
|
-
end
|
71
|
-
|
72
|
-
test "sets default formatter config with default_options" do
|
73
|
-
eval "module ::Hirb::Views::Blah; def self.render; end; def self.default_options; {:ancestor=>true}; end; end"
|
74
|
-
Hirb.enable
|
75
|
-
formatter_config["Blah"].should == {:class=>"Hirb::Views::Blah", :ancestor=>true}
|
76
|
-
end
|
77
|
-
|
78
|
-
test "sets formatter config" do
|
79
|
-
class_hash = {"Something::Base"=>{:class=>"BlahBlah"}}
|
80
|
-
Hirb.enable :output=>class_hash
|
81
|
-
formatter_config['Something::Base'].should == class_hash['Something::Base']
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
73
|
context "format_output" do
|
86
74
|
def view_output(*args, &block); View.view_output(*args, &block); end
|
87
75
|
def render_method(*args); View.render_method(*args); end
|
data/test/table_test.rb
CHANGED
@@ -27,7 +27,17 @@ class Hirb::Helpers::TableTest < Test::Unit::TestCase
|
|
27
27
|
+---+---+
|
28
28
|
1 row in set
|
29
29
|
TABLE
|
30
|
-
table([{:a=>1, :b=>2}], :headers=>
|
30
|
+
table([{:a=>1, :b=>2}], :headers=>false).should == expected_table
|
31
|
+
end
|
32
|
+
|
33
|
+
test "with no headers and nil fields renders" do
|
34
|
+
expected_table = <<-TABLE.unindent
|
35
|
+
+---+---+
|
36
|
+
| 1 | |
|
37
|
+
+---+---+
|
38
|
+
1 row in set
|
39
|
+
TABLE
|
40
|
+
table([{:a=>1, :b=>nil}], :headers=>false).should == expected_table
|
31
41
|
end
|
32
42
|
|
33
43
|
test "with string keys renders" do
|
@@ -66,6 +76,10 @@ class Hirb::Helpers::TableTest < Test::Unit::TestCase
|
|
66
76
|
table([]).should == "0 rows in set"
|
67
77
|
end
|
68
78
|
|
79
|
+
test "with invalid rows raises an argumenterror" do
|
80
|
+
assert_raises(ArgumentError) { table(:a=>1) }.message.should =~ /Table must/
|
81
|
+
end
|
82
|
+
|
69
83
|
test "renders utf8" do
|
70
84
|
expected_table = <<-TABLE.unindent
|
71
85
|
+--------------------+
|
@@ -151,7 +165,7 @@ class Hirb::Helpers::TableTest < Test::Unit::TestCase
|
|
151
165
|
|
152
166
|
test "fields and number options copies fields option and does not modify it" do
|
153
167
|
options = {:fields=>[:f1], :number=>true}
|
154
|
-
table({:f1=>1, :f2=>2}, options)
|
168
|
+
table([{:f1=>1, :f2=>2}], options)
|
155
169
|
options[:fields].should == [:f1]
|
156
170
|
end
|
157
171
|
|
@@ -439,8 +453,31 @@ class Hirb::Helpers::TableTest < Test::Unit::TestCase
|
|
439
453
|
table([[1,2],[2,3]], :change_fields=>['name', 'value']).should == expected_table
|
440
454
|
end
|
441
455
|
|
442
|
-
test "
|
443
|
-
|
456
|
+
test "change_fields and fields option renders" do
|
457
|
+
expected_table = <<-TABLE.unindent
|
458
|
+
+------+
|
459
|
+
| name |
|
460
|
+
+------+
|
461
|
+
| 1 |
|
462
|
+
| 2 |
|
463
|
+
+------+
|
464
|
+
2 rows in set
|
465
|
+
TABLE
|
466
|
+
table([[1,2],[2,3]], :change_fields=>['name', 'value'], :fields=>['name']).should == expected_table
|
467
|
+
end
|
468
|
+
|
469
|
+
test "invalid fields in change_fields options are ignored" do
|
470
|
+
expected_table = <<-TABLE.unindent
|
471
|
+
+------+-------+
|
472
|
+
| name | value |
|
473
|
+
+------+-------+
|
474
|
+
| 1 | 2 |
|
475
|
+
| 2 | 3 |
|
476
|
+
+------+-------+
|
477
|
+
2 rows in set
|
478
|
+
TABLE
|
479
|
+
table([{:a=>1,:b=>2}, {:a=>2,:b=>3}], :change_fields=>{:a=>'name', :b=>'value', :c=>'time'}).should == expected_table
|
480
|
+
table([[1,2],[2,3]], :change_fields=>['name', 'value','time']).should == expected_table
|
444
481
|
end
|
445
482
|
|
446
483
|
test "filter_any option filters any value" do
|
data/test/tree_test.rb
CHANGED
@@ -107,6 +107,23 @@ class Hirb::Helpers::TreeTest < Test::Unit::TestCase
|
|
107
107
|
TREE
|
108
108
|
tree([[0,'0'],[1,'1'],[2,'2'],[2,'3'],[1,'4']], :type=>:number)
|
109
109
|
end
|
110
|
+
|
111
|
+
test "with multi-line nodes option renders" do
|
112
|
+
expected_tree = <<-TREE.unindent
|
113
|
+
parent
|
114
|
+
+-------+
|
115
|
+
| value |
|
116
|
+
+-------+
|
117
|
+
| 1 |
|
118
|
+
| 2 |
|
119
|
+
| 3 |
|
120
|
+
+-------+
|
121
|
+
indented
|
122
|
+
stuff
|
123
|
+
TREE
|
124
|
+
node1 = "+-------+\n| value |\n+-------+\n| 1 |\n| 2 |\n| 3 |\n+-------+"
|
125
|
+
tree([ [0, 'parent'],[1, node1],[2, "indented\nstuff"]], :multi_line_nodes=>true)
|
126
|
+
end
|
110
127
|
end
|
111
128
|
|
112
129
|
def mock_node(value, value_method)
|
data/test/view_test.rb
CHANGED
@@ -49,6 +49,12 @@ module Hirb
|
|
49
49
|
{ :output=>{klass=>{:class=>:auto_table}} }
|
50
50
|
end
|
51
51
|
|
52
|
+
test "sets formatter config" do
|
53
|
+
class_hash = {"Something::Base"=>{:class=>"BlahBlah"}}
|
54
|
+
Hirb.enable :output=>class_hash
|
55
|
+
View.formatter_config['Something::Base'].should == class_hash['Something::Base']
|
56
|
+
end
|
57
|
+
|
52
58
|
test "when called multiple times merges configs" do
|
53
59
|
Hirb.config = nil
|
54
60
|
# default config + config_file
|
data/test/views_test.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'test_helper')
|
2
|
+
|
3
|
+
class Hirb::ViewsTest < Test::Unit::TestCase
|
4
|
+
context "activerecord table" do
|
5
|
+
test "with no select gets default options" do
|
6
|
+
pet = stub(:name=>'rufus', :age=>7, :attributes=>{"name"=>'rufus', 'age'=>7}, :class=>stub(:column_names=>%w{age name}))
|
7
|
+
Hirb::Helpers::AutoTable.active_record__base_view(pet).should == {:fields=>[:age, :name]}
|
8
|
+
end
|
9
|
+
|
10
|
+
test "with select gets default options" do
|
11
|
+
pet = stub(:name=>'rufus', :age=>7, :attributes=>{'name'=>'rufus'}, :class=>stub(:column_names=>%w{age name}))
|
12
|
+
Hirb::Helpers::AutoTable.active_record__base_view(pet).should == {:fields=>[:name]}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hirb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 3
|
8
|
+
- 0
|
9
|
+
version: 0.3.0
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Gabriel Horner
|
@@ -9,7 +14,7 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-03-11 00:00:00 -05:00
|
13
18
|
default_executable:
|
14
19
|
dependencies: []
|
15
20
|
|
@@ -27,13 +32,11 @@ files:
|
|
27
32
|
- LICENSE.txt
|
28
33
|
- README.rdoc
|
29
34
|
- Rakefile
|
30
|
-
- VERSION.yml
|
31
35
|
- lib/hirb.rb
|
32
36
|
- lib/hirb/console.rb
|
37
|
+
- lib/hirb/dynamic_view.rb
|
33
38
|
- lib/hirb/formatter.rb
|
34
|
-
- lib/hirb/hash_struct.rb
|
35
39
|
- lib/hirb/helpers.rb
|
36
|
-
- lib/hirb/helpers/active_record_table.rb
|
37
40
|
- lib/hirb/helpers/auto_table.rb
|
38
41
|
- lib/hirb/helpers/object_table.rb
|
39
42
|
- lib/hirb/helpers/parent_child_tree.rb
|
@@ -47,11 +50,17 @@ files:
|
|
47
50
|
- lib/hirb/pager.rb
|
48
51
|
- lib/hirb/string.rb
|
49
52
|
- lib/hirb/util.rb
|
53
|
+
- lib/hirb/version.rb
|
50
54
|
- lib/hirb/view.rb
|
51
|
-
- lib/hirb/views
|
52
|
-
-
|
55
|
+
- lib/hirb/views.rb
|
56
|
+
- lib/hirb/views/couch_db.rb
|
57
|
+
- lib/hirb/views/misc_db.rb
|
58
|
+
- lib/hirb/views/mongo_db.rb
|
59
|
+
- lib/hirb/views/orm.rb
|
60
|
+
- lib/hirb/views/rails.rb
|
53
61
|
- test/auto_table_test.rb
|
54
62
|
- test/console_test.rb
|
63
|
+
- test/dynamic_view_test.rb
|
55
64
|
- test/formatter_test.rb
|
56
65
|
- test/hirb_test.rb
|
57
66
|
- test/import_test.rb
|
@@ -64,6 +73,7 @@ files:
|
|
64
73
|
- test/tree_test.rb
|
65
74
|
- test/util_test.rb
|
66
75
|
- test/view_test.rb
|
76
|
+
- test/views_test.rb
|
67
77
|
has_rdoc: true
|
68
78
|
homepage: http://tagaholic.me/hirb/
|
69
79
|
licenses: []
|
@@ -77,25 +87,27 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
77
87
|
requirements:
|
78
88
|
- - ">="
|
79
89
|
- !ruby/object:Gem::Version
|
90
|
+
segments:
|
91
|
+
- 0
|
80
92
|
version: "0"
|
81
|
-
version:
|
82
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
94
|
requirements:
|
84
95
|
- - ">="
|
85
96
|
- !ruby/object:Gem::Version
|
97
|
+
segments:
|
98
|
+
- 0
|
86
99
|
version: "0"
|
87
|
-
version:
|
88
100
|
requirements: []
|
89
101
|
|
90
102
|
rubyforge_project: tagaholic
|
91
|
-
rubygems_version: 1.3.
|
103
|
+
rubygems_version: 1.3.6
|
92
104
|
signing_key:
|
93
105
|
specification_version: 3
|
94
106
|
summary: A mini view framework for console/irb that's easy to use, even while under its influence.
|
95
107
|
test_files:
|
96
|
-
- test/active_record_table_test.rb
|
97
108
|
- test/auto_table_test.rb
|
98
109
|
- test/console_test.rb
|
110
|
+
- test/dynamic_view_test.rb
|
99
111
|
- test/formatter_test.rb
|
100
112
|
- test/hirb_test.rb
|
101
113
|
- test/import_test.rb
|
@@ -108,3 +120,4 @@ test_files:
|
|
108
120
|
- test/tree_test.rb
|
109
121
|
- test/util_test.rb
|
110
122
|
- test/view_test.rb
|
123
|
+
- test/views_test.rb
|