maiha-merb_inspector 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/inspectors/data_mapper.rb +34 -6
- data/lib/merb_inspector/helper.rb +10 -34
- data/lib/merb_inspector/inspector.rb +16 -10
- data/lib/merb_inspector/manager.rb +22 -9
- data/lib/merb_inspector.rb +8 -20
- data/templates/array/_default.html.erb +14 -3
- data/templates/data_mapper/resource/_record.html.erb +3 -3
- data/templates/hash/_default.html.erb +14 -3
- metadata +2 -2
data/Rakefile
CHANGED
data/inspectors/data_mapper.rb
CHANGED
@@ -18,9 +18,9 @@ class DataMapper::ResourceInspector < Merb::Inspector
|
|
18
18
|
model.properties
|
19
19
|
end
|
20
20
|
|
21
|
-
def
|
21
|
+
def dom_id
|
22
22
|
oid = @object.new_record? ? "new" : @object.id
|
23
|
-
"#{resource_name}
|
23
|
+
"#{resource_name}-#{oid}"
|
24
24
|
end
|
25
25
|
|
26
26
|
def template
|
@@ -31,10 +31,6 @@ class DataMapper::ResourceInspector < Merb::Inspector
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
def toggle
|
35
|
-
"$('##{record_id} .record').toggle();return false;"
|
36
|
-
end
|
37
|
-
|
38
34
|
def save_action
|
39
35
|
if @object.new_record?
|
40
36
|
"/" + resource_name
|
@@ -68,6 +64,38 @@ class DataMapper::ResourceInspector < Merb::Inspector
|
|
68
64
|
link_to label, resource(record, :edit), opts
|
69
65
|
rescue Merb::Router::GenerationError
|
70
66
|
end
|
67
|
+
|
68
|
+
######################################################################
|
69
|
+
### form builder for DataMapper
|
70
|
+
|
71
|
+
def column_header(p)
|
72
|
+
label = p.name.to_s
|
73
|
+
h(label)
|
74
|
+
# link_to label, "#", :onclick=>"return false;"
|
75
|
+
end
|
76
|
+
|
77
|
+
def column_value(record, p)
|
78
|
+
h(record.send p.name.to_s)
|
79
|
+
end
|
80
|
+
|
81
|
+
def column_form(record, p)
|
82
|
+
# first, search class prefixed method that user override
|
83
|
+
method = "#{Extlib::Inflection.demodulize(record.class.name)}_#{p.name}_form"
|
84
|
+
return send(method, record, p) if respond_to?(method, true)
|
85
|
+
|
86
|
+
# second, search method that user override
|
87
|
+
method = "#{p.name}_form"
|
88
|
+
return send(method, record, p) if respond_to?(method, true)
|
89
|
+
|
90
|
+
# second, guess form from property type
|
91
|
+
if p.type == ::DataMapper::Types::Serial
|
92
|
+
record.send p.name
|
93
|
+
elsif p.type == ::DataMapper::Types::Text
|
94
|
+
text_area p.name
|
95
|
+
else
|
96
|
+
text_field p.name
|
97
|
+
end
|
98
|
+
end
|
71
99
|
end
|
72
100
|
|
73
101
|
|
@@ -4,46 +4,22 @@ module Merb
|
|
4
4
|
def inspect(object = nil, options = {})
|
5
5
|
return super() unless object
|
6
6
|
|
7
|
-
options = {:action=>options}
|
8
|
-
|
7
|
+
options = options.is_a?(Hash) ? options : {:action=>options}
|
8
|
+
options[:action] ||= :show
|
9
|
+
options[:level] ||= 1
|
9
10
|
inspector = (Manager.lookup(object) || Merb::Inspector.default).new(Merb::Request.new({}))
|
10
11
|
|
11
|
-
if inspector.respond_to?(action)
|
12
|
-
inspector.send action, object, options
|
12
|
+
if inspector.respond_to?(options[:action])
|
13
|
+
inspector.send options[:action], object, options
|
13
14
|
else
|
14
|
-
message = "%s doesn't recognize '%s' action" % [inspector.class, action]
|
15
|
+
message = "%s doesn't recognize '%s' action" % [inspector.class, options[:action]]
|
15
16
|
raise Merb::Inspector::ActionNotFound, message
|
16
17
|
end
|
17
18
|
end
|
18
|
-
|
19
|
-
def column_header(p)
|
20
|
-
label = p.name.to_s
|
21
|
-
h(label)
|
22
|
-
# link_to label, "#", :onclick=>"return false;"
|
23
|
-
end
|
24
|
-
|
25
|
-
def column_value(record, p)
|
26
|
-
h(record.send p.name.to_s)
|
27
|
-
end
|
28
|
-
|
29
|
-
def column_form(record, p)
|
30
|
-
# first, search class prefixed method that user override
|
31
|
-
method = "#{Extlib::Inflection.demodulize(record.class.name)}_#{p.name}_form"
|
32
|
-
return send(method, record, p) if respond_to?(method, true)
|
33
|
-
|
34
|
-
# second, search method that user override
|
35
|
-
method = "#{p.name}_form"
|
36
|
-
return send(method, record, p) if respond_to?(method, true)
|
37
|
-
|
38
|
-
# second, guess form from property type
|
39
|
-
if p.type == ::DataMapper::Types::Serial
|
40
|
-
record.send p.name
|
41
|
-
elsif p.type == ::DataMapper::Types::Text
|
42
|
-
text_area p.name
|
43
|
-
else
|
44
|
-
text_field p.name
|
45
|
-
end
|
46
|
-
end
|
47
19
|
end
|
48
20
|
end
|
49
21
|
end
|
22
|
+
|
23
|
+
class Merb::Controller
|
24
|
+
include Merb::Inspector::Helper
|
25
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Merb
|
2
|
-
class Inspector <
|
2
|
+
class Inspector < Merb::Controller
|
3
3
|
######################################################################
|
4
4
|
### for exceptins
|
5
5
|
|
@@ -16,19 +16,13 @@ module Merb
|
|
16
16
|
Inspector
|
17
17
|
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
message = "[Inspector] %s" % message.to_s.strip
|
22
|
-
File.open(path, "a+") {|f| f.puts message}
|
23
|
-
end
|
19
|
+
######################################################################
|
20
|
+
### for class
|
24
21
|
|
25
22
|
def self.model(model, inspector = self)
|
26
23
|
Merb::Inspector::Manager.register(model, inspector)
|
27
24
|
end
|
28
25
|
|
29
|
-
######################################################################
|
30
|
-
### for class
|
31
|
-
|
32
26
|
def show(object, options = {})
|
33
27
|
@object = object
|
34
28
|
@options = options
|
@@ -41,6 +35,14 @@ module Merb
|
|
41
35
|
self.class.name.sub(/^Merb::/,'').sub(/Inspector$/,'').snake_case.gsub(/::/, '/')
|
42
36
|
end
|
43
37
|
|
38
|
+
def dom_id
|
39
|
+
@object.class.name.plural.snake_case.gsub(/::/,'-') + '-' + @object.object_id.to_s
|
40
|
+
end
|
41
|
+
|
42
|
+
def toggle
|
43
|
+
"$('##{dom_id} .reversible').toggle();return false;"
|
44
|
+
end
|
45
|
+
|
44
46
|
def dir
|
45
47
|
Merb::Inspector.root + "templates" + name
|
46
48
|
end
|
@@ -66,7 +68,11 @@ module Merb
|
|
66
68
|
end
|
67
69
|
|
68
70
|
def basic_options
|
69
|
-
{:
|
71
|
+
{:options=>@options, :level=>@options[:level]}
|
72
|
+
end
|
73
|
+
|
74
|
+
def child_options
|
75
|
+
{:level=>@options[:level]+1}
|
70
76
|
end
|
71
77
|
end
|
72
78
|
|
@@ -9,11 +9,30 @@ module Merb
|
|
9
9
|
attr_accessor :caches
|
10
10
|
end
|
11
11
|
|
12
|
-
self.stores = Hash.new
|
13
|
-
self.caches = Hash.new
|
14
|
-
|
15
12
|
def self.reset
|
13
|
+
self.stores = Hash.new
|
16
14
|
self.caches = Hash.new
|
15
|
+
|
16
|
+
File.unlink Merb.root / "log" / "inspector.log"
|
17
|
+
load_builtin_inspectors
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.load_builtin_inspectors
|
21
|
+
inspector_dir = File.dirname(__FILE__) / "../../inspectors"
|
22
|
+
Dir["#{inspector_dir}/*.rb"].sort.each do |file|
|
23
|
+
begin
|
24
|
+
require file
|
25
|
+
rescue Exeption => error
|
26
|
+
message = "[MerbInspector] load error: #{error} (#{error.class})"
|
27
|
+
Merb.logger.error message
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.log(message)
|
33
|
+
path = Merb.root / "log" / "inspector.log"
|
34
|
+
message = "[Inspector] %s" % message.to_s.strip
|
35
|
+
File.open(path, "a+") {|f| f.puts message}
|
17
36
|
end
|
18
37
|
|
19
38
|
def self.register(klass, inspector)
|
@@ -40,12 +59,6 @@ module Merb
|
|
40
59
|
return stores[klass]
|
41
60
|
end
|
42
61
|
|
43
|
-
def self.log(message)
|
44
|
-
path = Merb.root / "log" / "inspector.log"
|
45
|
-
message = "[Inspector] %s" % message.to_s.strip
|
46
|
-
File.open(path, "a+") {|f| f.puts message}
|
47
|
-
end
|
48
|
-
|
49
62
|
######################################################################
|
50
63
|
### Install
|
51
64
|
|
data/lib/merb_inspector.rb
CHANGED
@@ -9,30 +9,18 @@ if defined?(Merb::Plugins)
|
|
9
9
|
}
|
10
10
|
|
11
11
|
Merb::BootLoader.before_app_loads do
|
12
|
-
# require code that must be loaded before the application
|
13
|
-
end
|
14
|
-
|
15
|
-
Merb::BootLoader.after_app_loads do
|
16
|
-
inspector_dir = File.dirname(__FILE__) / "../inspectors"
|
17
|
-
|
18
12
|
require "merb_inspector" / "inspector"
|
19
13
|
require "merb_inspector" / "manager"
|
20
14
|
require "merb_inspector" / "helper"
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
rescue Exeption => error
|
26
|
-
message = "[MerbInspector] load error: #{error} (#{error.class})"
|
27
|
-
Merb.logger.error message
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
class ::Application
|
32
|
-
include Merb::Inspector::Helper
|
33
|
-
end
|
34
|
-
|
15
|
+
end
|
16
|
+
|
17
|
+
Merb::BootLoader.after_app_loads do
|
18
|
+
Merb::Inspector::Manager.reset
|
35
19
|
Merb::Inspector::Manager.install
|
20
|
+
|
21
|
+
# class ::Application
|
22
|
+
# include Merb::Inspector::Helper
|
23
|
+
# end
|
36
24
|
end
|
37
25
|
|
38
26
|
Merb::Plugins.add_rakefiles "merb_inspector/merbtasks"
|
@@ -1,3 +1,7 @@
|
|
1
|
+
<div id="<%= dom_id %>">
|
2
|
+
|
3
|
+
<div id="<%= dom_id %>_level1" class="reversible" style="display:<%= (level == 1) ? 'display' : 'none' %>">
|
4
|
+
<div style="float:right;"><%= link_to "[x]", "#", :onclick=>toggle %></div>
|
1
5
|
<table class="inspector">
|
2
6
|
<tr>
|
3
7
|
<th><p>index</p></th>
|
@@ -7,12 +11,19 @@
|
|
7
11
|
<%- @object.each_with_index do |obj, i| -%>
|
8
12
|
<%-
|
9
13
|
tr_class = (i % 2 == 0) ? "even-record" : ""
|
10
|
-
tr_class += " #{list_row_class(
|
14
|
+
tr_class += " #{list_row_class(obj)}" if respond_to? :list_row_class
|
11
15
|
-%>
|
12
16
|
<tr class="record <%=tr_class%>">
|
13
|
-
<td><%=i+1%></td>
|
14
|
-
<td><%=
|
17
|
+
<td align=center><%=i+1%></td>
|
18
|
+
<td><%= inspect obj, child_options %></td>
|
15
19
|
<td><%=h obj.class.name %></td>
|
16
20
|
</tr>
|
17
21
|
<%- end -%>
|
18
22
|
</table>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<div id="<%= dom_id %>_level2" class="reversible" style="display:<%= (level == 1) ? 'none' : 'display' %>">
|
26
|
+
<%= link_to h(@object.inspect.truncate), "#", :onclick=>toggle %>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
</div>
|
@@ -1,5 +1,5 @@
|
|
1
|
-
<div id="<%=
|
2
|
-
<div id="<%=
|
1
|
+
<div id="<%=dom_id%>">
|
2
|
+
<div id="<%=dom_id%>_show" class="reversible record show" style="display:<%= (@mode == :edit) ? 'none' : 'display' %>">
|
3
3
|
<table>
|
4
4
|
<tbody>
|
5
5
|
<%- columns.each do |p| -%>
|
@@ -17,7 +17,7 @@
|
|
17
17
|
</table>
|
18
18
|
</div>
|
19
19
|
|
20
|
-
<div id="<%=
|
20
|
+
<div id="<%=dom_id%>_edit" class="reversible record edit" style="display:<%= (@mode == :edit) ? 'display' : 'none' %>">
|
21
21
|
<%= form_for record, :action=>save_action do %>
|
22
22
|
<table>
|
23
23
|
<tbody>
|
@@ -1,3 +1,7 @@
|
|
1
|
+
<div id="<%= dom_id %>">
|
2
|
+
<div id="<%= dom_id %>_level1" class="reversible" style="display:<%= (level == 1) ? 'display' : 'none' %>">
|
3
|
+
<div style="float:right;"><%= link_to "[x]", "#", :onclick=>toggle %></div>
|
4
|
+
|
1
5
|
<table class="inspector">
|
2
6
|
<tr>
|
3
7
|
<th><p>key</p></th>
|
@@ -8,12 +12,19 @@
|
|
8
12
|
<%- obj = @object[key] -%>
|
9
13
|
<%-
|
10
14
|
tr_class = (i % 2 == 0) ? "even-record" : ""
|
11
|
-
tr_class += " #{list_row_class(
|
15
|
+
tr_class += " #{list_row_class(obj)}" if respond_to? :list_row_class
|
12
16
|
-%>
|
13
17
|
<tr class="record <%=tr_class%>">
|
14
|
-
<td><%=
|
15
|
-
<td><%=
|
18
|
+
<td><%= inspect key, child_options %></td>
|
19
|
+
<td><%= inspect obj, child_options %></td>
|
16
20
|
<td><%=h obj.class.name %></td>
|
17
21
|
</tr>
|
18
22
|
<%- end -%>
|
19
23
|
</table>
|
24
|
+
</div>
|
25
|
+
|
26
|
+
<div id="<%= dom_id %>_level2" class="reversible" style="display:<%= (level == 1) ? 'none' : 'display' %>">
|
27
|
+
<%= link_to h(@object.inspect.truncate), "#", :onclick=>toggle %>
|
28
|
+
</div>
|
29
|
+
|
30
|
+
</div>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: maiha-merb_inspector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maiha
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-12-
|
12
|
+
date: 2008-12-30 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|