JunKikuchi-block-html 0.0.1 → 0.0.2
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/VERSION +1 -1
- data/lib/block-html/form.rb +85 -93
- data/lib/block-html.rb +8 -8
- metadata +4 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/lib/block-html/form.rb
CHANGED
@@ -1,114 +1,106 @@
|
|
1
1
|
class BlockHTML
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
def normalize_params(_name, params)
|
7
|
-
if @model.nil?
|
8
|
-
id = params[:id] || _name
|
9
|
-
name = _name
|
10
|
-
else
|
11
|
-
model_name = self.class.normalize_model_name(@model)
|
12
|
-
id = params[:id] || "#{model_name}_#{_name}"
|
13
|
-
name = "#{model_name}[#{_name}]"
|
2
|
+
class Form < BlockHTML
|
3
|
+
def tag(tag, attrs={}, &block)
|
4
|
+
self << Tag.new(nil, tag, attrs, @env_instance, &block)
|
14
5
|
end
|
15
6
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
label = params[:label] || _name
|
7
|
+
def form(attrs={}, &block)
|
8
|
+
tag(:form, attrs, &block)
|
9
|
+
end
|
20
10
|
|
21
|
-
|
22
|
-
|
11
|
+
class Tag < BlockHTML::Tag
|
12
|
+
def initialize(model, name, attrs={}, env_instance=nil, &block)
|
13
|
+
@model = model
|
14
|
+
super(name, attrs, env_instance, &block)
|
15
|
+
end
|
23
16
|
|
24
|
-
|
25
|
-
|
26
|
-
|
17
|
+
def tag(tag, attrs={}, &block)
|
18
|
+
self << Tag.new(@model, tag, attrs, @env_instance, &block)
|
19
|
+
end
|
27
20
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
_p.text error
|
33
|
-
end
|
21
|
+
def model(model, &block)
|
22
|
+
@model = model
|
23
|
+
block.call(self)
|
24
|
+
@model = nil
|
34
25
|
end
|
35
|
-
end unless errors.empty?
|
36
|
-
end
|
37
|
-
private :error_tag
|
38
26
|
|
39
|
-
|
40
|
-
|
41
|
-
form.tag :dl, &block
|
42
|
-
end
|
43
|
-
end
|
27
|
+
def errors(name, params={})
|
28
|
+
return if @model.nil? || @model.errors[name].empty?
|
44
29
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
30
|
+
tag(:div, params) {
|
31
|
+
@model.errors.on(name).each do |val|
|
32
|
+
tag(:p).text(val)
|
33
|
+
end
|
34
|
+
}
|
35
|
+
end
|
50
36
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
def edit(_name, params={})
|
58
|
-
id, name, value, label, errors = normalize_params(_name, params)
|
37
|
+
def edit(name, attrs={})
|
38
|
+
self << Element::Input.new(
|
39
|
+
@model,
|
40
|
+
attrs.merge(:name => name, :type => :text)
|
41
|
+
)
|
42
|
+
end
|
59
43
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
44
|
+
%w(file hidden).each do |type|
|
45
|
+
class_eval %Q{
|
46
|
+
def #{type}(name, attrs={})
|
47
|
+
self << Element::Input.new(
|
48
|
+
@model,
|
49
|
+
attrs.merge(:name => name, :type => :#{type})
|
50
|
+
)
|
51
|
+
end
|
52
|
+
}
|
53
|
+
end
|
70
54
|
|
71
|
-
|
72
|
-
|
55
|
+
%w(submit reset button radio).each do |type|
|
56
|
+
class_eval %Q{
|
57
|
+
def #{type}(name, attrs={})
|
58
|
+
self << Element::Button.new(
|
59
|
+
@model,
|
60
|
+
attrs.merge(:name => name, :type => :#{type})
|
61
|
+
)
|
62
|
+
end
|
63
|
+
}
|
64
|
+
end
|
73
65
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
error_tag(dd, errors)
|
66
|
+
def checkbox(name, attrs={})
|
67
|
+
self << Element::Checkbox.new(
|
68
|
+
@model,
|
69
|
+
attrs.merge(:name => name, :type => :checkbox)
|
70
|
+
)
|
71
|
+
end
|
81
72
|
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def checkbox(_name, params={})
|
85
|
-
id, name, value, label, errors = normalize_params(_name, params)
|
86
73
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
74
|
+
class Element < BlockHTML
|
75
|
+
def initialize(model, attrs)
|
76
|
+
super()
|
77
|
+
@model = model
|
78
|
+
@attrs = attrs
|
79
|
+
@name = @attrs[:name]
|
80
|
+
@id = @attrs[:id] || @name
|
81
|
+
@value = @model ? @model.__send__(@name) : @attrs[:value]
|
82
|
+
end
|
93
83
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
84
|
+
class Input < Element
|
85
|
+
def initialize(model, attrs)
|
86
|
+
super(model, attrs)
|
87
|
+
tag(:input, @attrs.merge(:id => @id, :value => @value))
|
88
|
+
end
|
89
|
+
end
|
100
90
|
|
101
|
-
|
102
|
-
|
91
|
+
class Button < Element
|
92
|
+
def initialize(model, attrs)
|
93
|
+
super(model, attrs)
|
94
|
+
tag(:input, @attrs.merge(:id => @id, :value => @value || @name))
|
95
|
+
end
|
96
|
+
end
|
103
97
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
:value => label || name
|
111
|
-
error_tag(dd, errors)
|
98
|
+
class Checkbox < Element
|
99
|
+
def initialize(model, attrs)
|
100
|
+
super(model, attrs)
|
101
|
+
tag(:input, @value ? @attrs.merge(:checked => '') : @attrs)
|
102
|
+
end
|
103
|
+
end
|
112
104
|
end
|
113
105
|
end
|
114
106
|
end
|
data/lib/block-html.rb
CHANGED
@@ -71,6 +71,12 @@ class BlockHTML
|
|
71
71
|
self
|
72
72
|
end
|
73
73
|
|
74
|
+
def form(attrs={}, &block)
|
75
|
+
self << Form.new(@env_instance) {
|
76
|
+
form(attrs, &block)
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
74
80
|
def render(renderer)
|
75
81
|
each do |node|
|
76
82
|
node.render(renderer)
|
@@ -140,14 +146,6 @@ class BlockHTML
|
|
140
146
|
super(env_instance, &block)
|
141
147
|
end
|
142
148
|
|
143
|
-
def [](key)
|
144
|
-
@attrs[key]
|
145
|
-
end
|
146
|
-
|
147
|
-
def []=(key, val)
|
148
|
-
@attrs[key] = val
|
149
|
-
end
|
150
|
-
|
151
149
|
def render(renderer)
|
152
150
|
renderer.tag(self, @name, @attrs)
|
153
151
|
end
|
@@ -291,4 +289,6 @@ class BlockHTML
|
|
291
289
|
@buf
|
292
290
|
end
|
293
291
|
end
|
292
|
+
|
293
|
+
autoload :Form, 'block-html/form'
|
294
294
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: JunKikuchi-block-html
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jun Kikuchi
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-09-06 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -33,6 +33,7 @@ files:
|
|
33
33
|
- spec/block-html_spec.rb
|
34
34
|
has_rdoc: false
|
35
35
|
homepage: http://github.com/JunKikuchi/block-html
|
36
|
+
licenses:
|
36
37
|
post_install_message:
|
37
38
|
rdoc_options:
|
38
39
|
- --charset=UTF-8
|
@@ -53,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
53
54
|
requirements: []
|
54
55
|
|
55
56
|
rubyforge_project:
|
56
|
-
rubygems_version: 1.
|
57
|
+
rubygems_version: 1.3.5
|
57
58
|
signing_key:
|
58
59
|
specification_version: 3
|
59
60
|
summary: block-html
|