hirb 0.2.10 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|