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 CHANGED
@@ -5,7 +5,7 @@ require 'merb-core'
5
5
  require 'merb-core/tasks/merb'
6
6
 
7
7
  GEM_NAME = "merb_inspector"
8
- GEM_VERSION = "0.2.2"
8
+ GEM_VERSION = "0.2.3"
9
9
  AUTHOR = "Maiha"
10
10
  EMAIL = "maiha@wota.jp"
11
11
  HOMEPAGE = "http://github.com/maiha/merb_inspector"
@@ -18,9 +18,9 @@ class DataMapper::ResourceInspector < Merb::Inspector
18
18
  model.properties
19
19
  end
20
20
 
21
- def record_id
21
+ def dom_id
22
22
  oid = @object.new_record? ? "new" : @object.id
23
- "#{resource_name}_#{oid}"
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} if options.is_a?(Symbol)
8
- action = options[:action] || :show
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 < Application
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
- def self.log(message)
20
- path = Merb.root / "log" / "inspector.log"
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
- {:inspector=>self, :options=>@options, :dir=>dir, :id=>@object.object_id}
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
 
@@ -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
- 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
-
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(record)}" if respond_to? :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><%=h obj.inspect %></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="<%=record_id%>">
2
- <div id="<%=record_id%>_show" class="record show" style="display:<%= (@mode == :edit) ? 'none' : 'display' %>">
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="<%=record_id%>_edit" class="record edit" style="display:<%= (@mode == :edit) ? 'display' : 'none' %>">
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(record)}" if respond_to? :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><%=h key.inspect %></td>
15
- <td><%=h obj.inspect %></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.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-29 00:00:00 -08:00
12
+ date: 2008-12-30 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency