trenni-formatters 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trenni/formatters/html/definition_list_form.rb +4 -3
- data/lib/trenni/formatters/html/form_formatter.rb +22 -5
- data/lib/trenni/formatters/version.rb +1 -1
- data/spec/trenni/formatters/form_formatter_spec.rb +7 -8
- data/spec/trenni/formatters/formatters_spec.rb +0 -2
- data/spec/trenni/formatters/html/option_select_spec.rb +46 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d07510393a4aecacebc320982d9382532413cce
|
4
|
+
data.tar.gz: b6a714803a220c15b55bd7b231fb2b62c60b1b14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 828c3ea8d67b34e7d1f5d3ab04aa5666d6b47028e45f2e63585bbff812a4baeced3ef6b6d7550b5b28b23c6b311c3e0a304ea763ad04ac260cfccc1fafe7ae52
|
7
|
+
data.tar.gz: 2add9c98f3c1af745192bf3acadc3c6112b3a67406fa0c31df25c85af48072956599ee3dbf486e3c75e0f8056207074ac9621e60789d5993c2f8d298a30dcb05
|
@@ -19,6 +19,7 @@
|
|
19
19
|
# THE SOFTWARE.
|
20
20
|
|
21
21
|
require 'trenni/builder'
|
22
|
+
require 'trenni/template'
|
22
23
|
|
23
24
|
require_relative 'form_formatter'
|
24
25
|
|
@@ -85,9 +86,9 @@ module Trenni
|
|
85
86
|
# A submission button
|
86
87
|
def submit(options = {})
|
87
88
|
options = @options.merge(options)
|
88
|
-
|
89
|
-
unless options
|
90
|
-
options[:title] ||=
|
89
|
+
|
90
|
+
unless title = title_for(options)
|
91
|
+
options[:title] ||= new_record? ? 'Create' : 'Update'
|
91
92
|
end
|
92
93
|
|
93
94
|
Builder.fragment do |builder|
|
@@ -29,6 +29,15 @@ module Trenni
|
|
29
29
|
@options[:object]
|
30
30
|
end
|
31
31
|
|
32
|
+
# Return true if the object is begin created or false if it is being updated.
|
33
|
+
def new_record?
|
34
|
+
if object.respond_to? :new_record?
|
35
|
+
return object.new_record?
|
36
|
+
elsif self.object.respond_to? :saved?
|
37
|
+
return !object.saved?
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
32
41
|
# The name of the field, used for the name attribute of an input.
|
33
42
|
def name_for(options)
|
34
43
|
options[:name] || options[:field]
|
@@ -37,12 +46,14 @@ module Trenni
|
|
37
46
|
def field_for(options)
|
38
47
|
options[:field]
|
39
48
|
end
|
40
|
-
|
41
|
-
#
|
49
|
+
|
50
|
+
# A title is a text string that will be displayed next to or on top of the control to describe it or its value:
|
42
51
|
def title_for(options)
|
43
|
-
title = options[:title]
|
52
|
+
title = options[:title]
|
53
|
+
return Strings::to_html(title) if title
|
44
54
|
|
45
|
-
|
55
|
+
field_name = field_for(options)
|
56
|
+
return Strings::to_title(field_name.to_s) if field_name
|
46
57
|
end
|
47
58
|
|
48
59
|
def object_value_for(options)
|
@@ -85,6 +96,9 @@ module Trenni
|
|
85
96
|
:min => options[:min],
|
86
97
|
:max => options[:max],
|
87
98
|
:step => options[:step],
|
99
|
+
# for <input type="text">
|
100
|
+
:minlength => options[:minlength],
|
101
|
+
:maxlength => options[:maxlength],
|
88
102
|
}
|
89
103
|
|
90
104
|
return attributes
|
@@ -110,7 +124,10 @@ module Trenni
|
|
110
124
|
:required => options[:required],
|
111
125
|
:disabled => options[:disabled],
|
112
126
|
:readonly => options[:readonly],
|
127
|
+
:pattern => pattern_for(options),
|
113
128
|
:placeholder => placeholder_for(options),
|
129
|
+
:minlength => options[:minlength],
|
130
|
+
:maxlength => options[:maxlength],
|
114
131
|
}
|
115
132
|
end
|
116
133
|
|
@@ -131,10 +148,10 @@ module Trenni
|
|
131
148
|
def submit_attributes_for(options)
|
132
149
|
return {
|
133
150
|
:type => options[:type] || 'submit',
|
151
|
+
:name => name_for(options),
|
134
152
|
:id => options[:id],
|
135
153
|
:class => options[:class],
|
136
154
|
:disabled => options[:disabled],
|
137
|
-
:name => name_for(options),
|
138
155
|
:value => title_for(options),
|
139
156
|
}
|
140
157
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
1
|
# Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
|
4
2
|
#
|
5
3
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
@@ -31,21 +29,22 @@ module Trenni::Formatters::FormFormatterSpec
|
|
31
29
|
end
|
32
30
|
|
33
31
|
describe Trenni::Formatters do
|
32
|
+
let(:formatter) {FormFormatter.new(:object => double(:bar => 10))}
|
33
|
+
|
34
34
|
it "should generate form" do
|
35
|
-
object = double(:bar => 10)
|
36
|
-
|
37
|
-
formatter = FormFormatter.new(:object => object)
|
38
|
-
|
39
35
|
output_tag = formatter.input(:field => :bar)
|
40
36
|
expect(output_tag).to be == %Q{<dt>Bar</dt>\n<dd><input name="bar" value="10"/></dd>}
|
41
37
|
end
|
42
38
|
|
43
39
|
it "should have default value" do
|
44
|
-
formatter = FormFormatter.new
|
45
|
-
|
46
40
|
expect(formatter.value_for(:value => 10)).to be == "10"
|
47
41
|
expect(formatter.value_for(:value => nil, :default => 10)).to be == "10"
|
48
42
|
end
|
43
|
+
|
44
|
+
it "should have a different title" do
|
45
|
+
output_tag = formatter.input(:field => :bar, :title => "Title")
|
46
|
+
expect(output_tag).to be == %Q{<dt>Title</dt>\n<dd><input name="bar" value="10"/></dd>}
|
47
|
+
end
|
49
48
|
end
|
50
49
|
|
51
50
|
describe "<input>" do
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# Copyright, 2014, by Samuel G. D. Williams. <http://www.codeotaku.com>
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
# of this software and associated documentation files (the "Software"), to deal
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
8
|
+
# furnished to do so, subject to the following conditions:
|
9
|
+
#
|
10
|
+
# The above copyright notice and this permission notice shall be included in
|
11
|
+
# all copies or substantial portions of the Software.
|
12
|
+
#
|
13
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
# THE SOFTWARE.
|
20
|
+
|
21
|
+
require 'trenni/formatters'
|
22
|
+
|
23
|
+
module Trenni::Formatters::HTML::OptionSelectSpec
|
24
|
+
class FormFormatter < Trenni::Formatters::Formatter
|
25
|
+
include Trenni::Formatters::HTML::DefinitionListForm
|
26
|
+
|
27
|
+
def select(options = {}, &block)
|
28
|
+
element(Trenni::Formatters::HTML::OptionSelect, options, &block)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe Trenni::Formatters::HTML::OptionSelect do
|
33
|
+
let(:formatter) {FormFormatter.new(:object => double(:bar => 10))}
|
34
|
+
|
35
|
+
it "should format items" do
|
36
|
+
_out = []
|
37
|
+
|
38
|
+
formatter.select :field => :bar do |select|
|
39
|
+
_out << select.item(:title => "A", :value => 0)
|
40
|
+
_out << select.item(:title => "B", :value => 10)
|
41
|
+
end
|
42
|
+
|
43
|
+
expect(_out.join).to be == "<dt>Bar</dt>\n<dd>\n\t<select name=\"bar\">\n\t\t<option value=\"0\">A</option><option value=\"10\" selected>B</option>\n\t</select>\n</dd>"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trenni-formatters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: trenni
|
@@ -90,6 +90,7 @@ files:
|
|
90
90
|
- lib/trenni/formatters/version.rb
|
91
91
|
- spec/trenni/formatters/form_formatter_spec.rb
|
92
92
|
- spec/trenni/formatters/formatters_spec.rb
|
93
|
+
- spec/trenni/formatters/html/option_select_spec.rb
|
93
94
|
- trenni-formatters.gemspec
|
94
95
|
homepage: https://github.com/ioquatix/trenni-formatters
|
95
96
|
licenses: []
|
@@ -117,3 +118,4 @@ summary: Formatters for Trenni, to assist with typical views and form based inte
|
|
117
118
|
test_files:
|
118
119
|
- spec/trenni/formatters/form_formatter_spec.rb
|
119
120
|
- spec/trenni/formatters/formatters_spec.rb
|
121
|
+
- spec/trenni/formatters/html/option_select_spec.rb
|