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
data/VERSION.yml
DELETED
data/lib/hirb/hash_struct.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
class Hirb::Helpers::ActiveRecordTable < Hirb::Helpers::ObjectTable
|
2
|
-
# Rows are Rails' ActiveRecord::Base objects. These objects should all be from one class.
|
3
|
-
# Takes same options as Hirb::Helpers::Table.render except as noted below.
|
4
|
-
#
|
5
|
-
# Options:
|
6
|
-
# :fields- Can be any attribute, column or not. If not given, this defaults to the database table's columns.
|
7
|
-
def self.render(rows, options={})
|
8
|
-
rows = Array(rows)
|
9
|
-
options[:fields] ||=
|
10
|
-
begin
|
11
|
-
fields = rows.first.class.column_names
|
12
|
-
fields.map {|e| e.to_sym }
|
13
|
-
end
|
14
|
-
if query_used_select?(rows)
|
15
|
-
selected_columns = rows.first.attributes.keys
|
16
|
-
sorted_columns = rows.first.class.column_names.dup.delete_if {|e| !selected_columns.include?(e) }
|
17
|
-
sorted_columns += (selected_columns - sorted_columns)
|
18
|
-
options[:fields] = sorted_columns.map {|e| e.to_sym}
|
19
|
-
end
|
20
|
-
super(rows, options)
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.query_used_select?(rows) #:nodoc:
|
24
|
-
rows.first.attributes.keys.sort != rows.first.class.column_names.sort
|
25
|
-
end
|
26
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), 'test_helper')
|
2
|
-
|
3
|
-
class Hirb::Helpers::ActiveRecordTableTest < Test::Unit::TestCase
|
4
|
-
context "activerecord table" do
|
5
|
-
test "with no select renders" do
|
6
|
-
expected_table = <<-TABLE.unindent
|
7
|
-
+-----+-------+
|
8
|
-
| age | name |
|
9
|
-
+-----+-------+
|
10
|
-
| 7 | rufus |
|
11
|
-
| 101 | alf |
|
12
|
-
+-----+-------+
|
13
|
-
2 rows in set
|
14
|
-
TABLE
|
15
|
-
@pets = [stub(:name=>'rufus', :age=>7, :attributes=>{"name"=>'rufus', 'age'=>7}, :class=>stub(:column_names=>%w{age name})),
|
16
|
-
stub(:name=>'alf', :age=>101)]
|
17
|
-
Hirb::Helpers::ActiveRecordTable.render(@pets).should == expected_table
|
18
|
-
end
|
19
|
-
|
20
|
-
test "with select renders" do
|
21
|
-
expected_table = <<-TABLE.unindent
|
22
|
-
+-------+
|
23
|
-
| name |
|
24
|
-
+-------+
|
25
|
-
| rufus |
|
26
|
-
| alf |
|
27
|
-
+-------+
|
28
|
-
2 rows in set
|
29
|
-
TABLE
|
30
|
-
@pets = [stub(:name=>'rufus', :age=>7, :attributes=>{'name'=>'rufus'}, :class=>stub(:column_names=>%w{age name})),
|
31
|
-
stub(:name=>'alf', :age=>101)]
|
32
|
-
Hirb::Helpers::ActiveRecordTable.render(@pets).should == expected_table
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|