foundation_rails_helper 1.2.2 → 2.0.0
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +19 -0
- data/.rubocop_todo.yml +67 -0
- data/.travis.yml +0 -3
- data/CHANGELOG.md +9 -0
- data/README.md +2 -0
- data/Rakefile +4 -2
- data/foundation_rails_helper.gemspec +12 -11
- data/lib/foundation_rails_helper.rb +5 -5
- data/lib/foundation_rails_helper/action_view_extension.rb +1 -1
- data/lib/foundation_rails_helper/flash_helper.rb +11 -12
- data/lib/foundation_rails_helper/form_builder.rb +53 -36
- data/lib/foundation_rails_helper/version.rb +1 -1
- data/lib/railtie.rb +2 -3
- data/spec/.rubocop.yml +7 -0
- data/spec/foundation_rails_helper/configuration_spec.rb +6 -8
- data/spec/foundation_rails_helper/flash_helper_spec.rb +23 -23
- data/spec/foundation_rails_helper/form_builder_spec.rb +154 -156
- data/spec/spec_helper.rb +1 -1
- data/spec/support/.rubocop.yml +2 -0
- data/spec/support/mock_rails.rb +22 -15
- metadata +21 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eaf080baa48830a883681c55c892a30b366deabc
|
4
|
+
data.tar.gz: 84a7e2dd8b70cbbe2b622a41bc9d3500bae8f396
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b578327401357039bf3ec51d10c45c86f36183f86f682ea0b303c181da14278a7a3f4de4223c92c7c451d7dccba539eec8e7799c490c855bc7a9eabd7b70cfbc
|
7
|
+
data.tar.gz: b8d41f62ad350069855247e1bdc1672c6ae08d549424768123dd67500e79eb5e1bcea1dbe820ef4e79822ec04a251f6eddf67cdde003c40bbc28e3fb725fbdbf
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
inherit_from: .rubocop_todo.yml
|
2
|
+
|
3
|
+
AllCops:
|
4
|
+
TargetRubyVersion: 2.3
|
5
|
+
Include:
|
6
|
+
- Rakefile
|
7
|
+
- Gemfile
|
8
|
+
- '*.gemspec'
|
9
|
+
Exclude:
|
10
|
+
- 'vendor/**/*'
|
11
|
+
|
12
|
+
# A quick fix for not having magic comments at the top of each file
|
13
|
+
# # frozen_string_literal: true
|
14
|
+
# https://github.com/bbatsov/rubocop/issues/3284
|
15
|
+
FrozenStringLiteralComment:
|
16
|
+
Enabled: false
|
17
|
+
|
18
|
+
Documentation:
|
19
|
+
Enabled: false
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2016-09-14 16:08:41 -0700 using RuboCop version 0.42.0.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 3
|
10
|
+
Lint/NestedMethodDefinition:
|
11
|
+
Exclude:
|
12
|
+
- 'spec/support/mock_rails.rb'
|
13
|
+
|
14
|
+
# Offense count: 3
|
15
|
+
Metrics/AbcSize:
|
16
|
+
Max: 179
|
17
|
+
|
18
|
+
# Offense count: 1
|
19
|
+
# Configuration parameters: CountComments.
|
20
|
+
Metrics/ClassLength:
|
21
|
+
Max: 186
|
22
|
+
|
23
|
+
# Offense count: 1
|
24
|
+
Metrics/CyclomaticComplexity:
|
25
|
+
Max: 7
|
26
|
+
|
27
|
+
# Offense count: 157
|
28
|
+
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
|
29
|
+
# URISchemes: http, https
|
30
|
+
Metrics/LineLength:
|
31
|
+
Max: 163
|
32
|
+
|
33
|
+
# Offense count: 5
|
34
|
+
# Configuration parameters: CountComments.
|
35
|
+
Metrics/MethodLength:
|
36
|
+
Max: 55
|
37
|
+
|
38
|
+
# Offense count: 1
|
39
|
+
# Configuration parameters: CountComments.
|
40
|
+
Metrics/ModuleLength:
|
41
|
+
Max: 102
|
42
|
+
|
43
|
+
# Offense count: 2
|
44
|
+
# Configuration parameters: CountKeywordArgs.
|
45
|
+
Metrics/ParameterLists:
|
46
|
+
Max: 8
|
47
|
+
|
48
|
+
# Offense count: 1
|
49
|
+
Metrics/PerceivedComplexity:
|
50
|
+
Max: 8
|
51
|
+
|
52
|
+
# Offense count: 3
|
53
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
54
|
+
# SupportedStyles: nested, compact
|
55
|
+
Style/ClassAndModuleChildren:
|
56
|
+
Exclude:
|
57
|
+
- 'spec/support/mock_rails.rb'
|
58
|
+
|
59
|
+
# Offense count: 1
|
60
|
+
# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist.
|
61
|
+
# NamePrefix: is_, has_, have_
|
62
|
+
# NamePrefixBlacklist: is_, has_, have_
|
63
|
+
# NameWhitelist: is_a?
|
64
|
+
Style/PredicateName:
|
65
|
+
Exclude:
|
66
|
+
- 'spec/**/*'
|
67
|
+
- 'lib/foundation_rails_helper/form_builder.rb'
|
data/.travis.yml
CHANGED
@@ -3,7 +3,6 @@ branches:
|
|
3
3
|
only:
|
4
4
|
- master
|
5
5
|
rvm:
|
6
|
-
- 1.9.3
|
7
6
|
- 2.1.9
|
8
7
|
- 2.2.5
|
9
8
|
- 2.3.1
|
@@ -14,8 +13,6 @@ env:
|
|
14
13
|
- "RAILS_VERSION=5.0.0"
|
15
14
|
matrix:
|
16
15
|
exclude:
|
17
|
-
- rvm: 1.9.3
|
18
|
-
env: "RAILS_VERSION=5.0.0"
|
19
16
|
- rvm: 2.1.9
|
20
17
|
env: "RAILS_VERSION=5.0.0"
|
21
18
|
- rvm: 2.4.0-preview1
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## Version 2.0
|
2
|
+
This will be used for Foundation 5 support
|
3
|
+
|
4
|
+
### Breaking changes:
|
5
|
+
* Dropped support for Ruby 1.9.3
|
6
|
+
|
7
|
+
### Features:
|
8
|
+
* Add Rubocop code style linting
|
9
|
+
|
1
10
|
## Version 1.2.2
|
2
11
|
* Fix Rails 5 deprecation warnings about alias_method_chain
|
3
12
|
* Allow Capybara to be upgraded beyond 2.6.x
|
data/README.md
CHANGED
@@ -16,6 +16,8 @@ So far it includes:
|
|
16
16
|
* Only Rails 4.1/4.2/5 and Foundation 5 are fully supported
|
17
17
|
* Some features may work with Foundation 4 and older, but results may vary, and markup which exists only for those versions will be gradually removed
|
18
18
|
* Legacy branches exist for Rails 3 and 4.0 (see the rails3 and rails4.0 branches). These are not actively supported, and fixes are not retroactively applied, but pull requests are welcome.
|
19
|
+
* We test against ruby versions 2.1 and up. This gem may still work fine on
|
20
|
+
1.9.3, but your mileage may vary
|
19
21
|
|
20
22
|
|
21
23
|
## Screenshots
|
data/Rakefile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
|
-
require
|
2
|
+
require 'bundler/gem_tasks'
|
3
3
|
require 'rspec/core/rake_task'
|
4
|
+
require 'rubocop/rake_task'
|
4
5
|
|
5
6
|
RSpec::Core::RakeTask.new(:spec)
|
6
|
-
|
7
|
+
RuboCop::RakeTask.new(:rubocop)
|
8
|
+
task default: [:spec, :rubocop]
|
@@ -2,26 +2,26 @@
|
|
2
2
|
require File.expand_path('../lib/foundation_rails_helper/version', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
|
-
gem.authors = [
|
6
|
-
gem.email = [
|
7
|
-
gem.description =
|
8
|
-
gem.summary =
|
9
|
-
gem.homepage =
|
5
|
+
gem.authors = ['Sebastien Gruhier']
|
6
|
+
gem.email = ['sebastien.gruhier@xilinus.com']
|
7
|
+
gem.description = 'Rails for zurb foundation CSS framework. Form builder, flash message, ...'
|
8
|
+
gem.summary = 'Rails helpers for zurb foundation CSS framework'
|
9
|
+
gem.homepage = 'http://github.com/sgruhier/foundation_rails_helper'
|
10
10
|
|
11
|
-
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
11
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
12
12
|
gem.files = `git ls-files`.split("\n")
|
13
13
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
14
|
-
gem.name =
|
15
|
-
gem.require_paths = [
|
14
|
+
gem.name = 'foundation_rails_helper'
|
15
|
+
gem.require_paths = ['lib']
|
16
16
|
gem.version = FoundationRailsHelper::VERSION
|
17
17
|
gem.license = 'MIT'
|
18
18
|
|
19
19
|
# Allow different versions of the rails gems to be specified, for testing:
|
20
|
-
rails_version = ENV[
|
20
|
+
rails_version = ENV['RAILS_VERSION'] || 'default'
|
21
21
|
|
22
22
|
rails = case rails_version
|
23
|
-
when
|
24
|
-
|
23
|
+
when 'default'
|
24
|
+
'>= 4.1'
|
25
25
|
else
|
26
26
|
"~> #{rails_version}"
|
27
27
|
end
|
@@ -35,4 +35,5 @@ Gem::Specification.new do |gem|
|
|
35
35
|
gem.add_development_dependency 'rspec-rails', '>= 3.1'
|
36
36
|
gem.add_development_dependency 'mime-types', '~> 2'
|
37
37
|
gem.add_development_dependency 'capybara', '~> 2.7'
|
38
|
+
gem.add_development_dependency 'rubocop', '> 0.41'
|
38
39
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
1
|
+
require 'foundation_rails_helper/version'
|
2
|
+
require 'foundation_rails_helper/configuration'
|
3
|
+
require 'foundation_rails_helper/form_builder'
|
4
|
+
require 'foundation_rails_helper/flash_helper'
|
5
|
+
require 'foundation_rails_helper/action_view_extension'
|
6
6
|
ActiveSupport.on_load(:action_view) do
|
7
7
|
include FoundationRailsHelper::FlashHelper
|
8
8
|
end
|
@@ -7,14 +7,14 @@ module FoundationRailsHelper
|
|
7
7
|
# <a href="" class="close">×</a>
|
8
8
|
# </div>
|
9
9
|
DEFAULT_KEY_MATCHING = {
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
17
|
-
}
|
10
|
+
alert: :alert,
|
11
|
+
notice: :success,
|
12
|
+
info: :info,
|
13
|
+
secondary: :secondary,
|
14
|
+
success: :success,
|
15
|
+
error: :alert,
|
16
|
+
warning: :warning
|
17
|
+
}.freeze
|
18
18
|
def display_flash_messages(key_matching = {})
|
19
19
|
key_matching = DEFAULT_KEY_MATCHING.merge(key_matching)
|
20
20
|
key_matching.default = :standard
|
@@ -28,18 +28,17 @@ module FoundationRailsHelper
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
|
31
|
+
private
|
32
32
|
|
33
33
|
def alert_box(value, alert_class)
|
34
|
-
content_tag :div, :
|
34
|
+
content_tag :div, data: { alert: '' }, class: "alert-box #{alert_class}" do
|
35
35
|
concat value
|
36
36
|
concat close_link
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
40
|
def close_link
|
41
|
-
link_to(
|
41
|
+
link_to('×'.html_safe, '#', class: :close)
|
42
42
|
end
|
43
|
-
|
44
43
|
end
|
45
44
|
end
|
@@ -37,9 +37,7 @@ module FoundationRailsHelper
|
|
37
37
|
options[:label_options] ||= {}
|
38
38
|
label_options = options.delete(:label_options).merge!(value: tag_value)
|
39
39
|
label_text = options.delete(:label)
|
40
|
-
unless label_text == false
|
41
|
-
l = label(attribute, label_text, label_options)
|
42
|
-
end
|
40
|
+
l = label(attribute, label_text, label_options) unless label_text == false
|
43
41
|
r = @template.radio_button(@object_name, attribute, tag_value,
|
44
42
|
objectify_options(options))
|
45
43
|
|
@@ -48,26 +46,26 @@ module FoundationRailsHelper
|
|
48
46
|
|
49
47
|
def password_field(attribute, options = {})
|
50
48
|
field attribute, options do |opts|
|
51
|
-
super(attribute, opts.merge(:
|
49
|
+
super(attribute, opts.merge(autocomplete: :off))
|
52
50
|
end
|
53
51
|
end
|
54
52
|
|
55
53
|
def datetime_select(attribute, options = {}, html_options = {})
|
56
54
|
field attribute, options, html_options do |html_opts|
|
57
|
-
super(attribute, options, html_opts.merge(:
|
55
|
+
super(attribute, options, html_opts.merge(autocomplete: :off))
|
58
56
|
end
|
59
57
|
end
|
60
58
|
|
61
59
|
def date_select(attribute, options = {}, html_options = {})
|
62
60
|
field attribute, options, html_options do |html_opts|
|
63
|
-
super(attribute, options, html_opts.merge(:
|
61
|
+
super(attribute, options, html_opts.merge(autocomplete: :off))
|
64
62
|
end
|
65
63
|
end
|
66
64
|
|
67
65
|
def time_zone_select(attribute, priorities = nil, options = {}, html_options = {})
|
68
66
|
field attribute, options, html_options do |html_opts|
|
69
67
|
super(attribute, priorities, options,
|
70
|
-
html_opts.merge(:
|
68
|
+
html_opts.merge(autocomplete: :off))
|
71
69
|
end
|
72
70
|
end
|
73
71
|
|
@@ -96,8 +94,8 @@ module FoundationRailsHelper
|
|
96
94
|
|
97
95
|
def autocomplete(attribute, url, options = {})
|
98
96
|
field attribute, options do |opts|
|
99
|
-
opts.merge!(:
|
100
|
-
:
|
97
|
+
opts.merge!(update_elements: opts[:update_elements],
|
98
|
+
min_length: 0, value: object.send(attribute))
|
101
99
|
autocomplete_field(attribute, url, opts)
|
102
100
|
end
|
103
101
|
end
|
@@ -107,7 +105,7 @@ module FoundationRailsHelper
|
|
107
105
|
super(value, options)
|
108
106
|
end
|
109
107
|
|
110
|
-
|
108
|
+
private
|
111
109
|
|
112
110
|
def has_error?(attribute)
|
113
111
|
object.respond_to?(:errors) && !object.errors[attribute].blank?
|
@@ -121,11 +119,11 @@ module FoundationRailsHelper
|
|
121
119
|
|
122
120
|
error_messages = object.errors[attribute].join(', ')
|
123
121
|
error_messages = error_messages.html_safe if options[:html_safe_errors]
|
124
|
-
content_tag(:small, error_messages, :
|
122
|
+
content_tag(:small, error_messages, class: class_name)
|
125
123
|
end
|
126
124
|
|
127
|
-
def custom_label(attribute, text, options
|
128
|
-
return block_given? ?
|
125
|
+
def custom_label(attribute, text, options)
|
126
|
+
return block_given? ? yield.html_safe : ''.html_safe if text == false
|
129
127
|
if text.nil? || text == true
|
130
128
|
text =
|
131
129
|
if object.class.respond_to?(:human_attribute_name)
|
@@ -134,31 +132,52 @@ module FoundationRailsHelper
|
|
134
132
|
attribute.to_s.humanize
|
135
133
|
end
|
136
134
|
end
|
137
|
-
text =
|
135
|
+
text = yield.html_safe + " #{text}" if block_given?
|
138
136
|
options ||= {}
|
139
137
|
label(attribute, text, options)
|
140
138
|
end
|
141
139
|
|
142
140
|
def column_classes(options)
|
143
|
-
classes =
|
144
|
-
|
145
|
-
|
141
|
+
classes = SizeClassCalcluator.new(options).classes
|
142
|
+
classes + ' columns'
|
143
|
+
end
|
144
|
+
|
145
|
+
class SizeClassCalcluator
|
146
|
+
def initialize(size_options)
|
147
|
+
@small = size_options[:small]
|
148
|
+
@medium = size_options[:medium]
|
149
|
+
@large = size_options[:large]
|
150
|
+
end
|
151
|
+
|
152
|
+
def classes
|
153
|
+
[small_class, medium_class, large_class].compact.join(' ')
|
154
|
+
end
|
155
|
+
|
156
|
+
private
|
157
|
+
|
158
|
+
def small_class
|
159
|
+
"small-#{@small}" if valid_size(@small)
|
146
160
|
end
|
147
|
-
|
148
|
-
|
161
|
+
|
162
|
+
def medium_class
|
163
|
+
"medium-#{@medium}" if valid_size(@medium)
|
149
164
|
end
|
150
|
-
|
151
|
-
|
165
|
+
|
166
|
+
def large_class
|
167
|
+
"large-#{@large}" if valid_size(@large)
|
168
|
+
end
|
169
|
+
|
170
|
+
def valid_size(value)
|
171
|
+
value.present? && value.to_i < 12
|
152
172
|
end
|
153
|
-
classes + 'columns'
|
154
173
|
end
|
155
174
|
|
156
175
|
def tag_from_options(name, options)
|
157
176
|
return ''.html_safe unless options && options[:value].present?
|
158
177
|
|
159
178
|
content_tag(:div,
|
160
|
-
content_tag(:span, options[:value], :
|
161
|
-
:
|
179
|
+
content_tag(:span, options[:value], class: name),
|
180
|
+
class: column_classes(options).to_s)
|
162
181
|
end
|
163
182
|
|
164
183
|
def decrement_input_size(input, column, options)
|
@@ -191,12 +210,12 @@ module FoundationRailsHelper
|
|
191
210
|
postfix = tag_from_options('postfix', postfix_options)
|
192
211
|
|
193
212
|
input_size = calculate_input_size(prefix_options, postfix_options)
|
194
|
-
klass =
|
195
|
-
input = content_tag(:div, block, :
|
213
|
+
klass = column_classes(input_size.marshal_dump).to_s
|
214
|
+
input = content_tag(:div, block, class: klass)
|
196
215
|
|
197
216
|
html =
|
198
217
|
if input_size.changed?
|
199
|
-
content_tag(:div, prefix + input + postfix, :
|
218
|
+
content_tag(:div, prefix + input + postfix, class: 'row collapse')
|
200
219
|
else
|
201
220
|
block
|
202
221
|
end
|
@@ -206,20 +225,18 @@ module FoundationRailsHelper
|
|
206
225
|
|
207
226
|
def error_and_hint(attribute, options = {})
|
208
227
|
html = ''
|
209
|
-
if options[:hint]
|
210
|
-
html += content_tag(:span, options[:hint], :class => :hint)
|
211
|
-
end
|
228
|
+
html += content_tag(:span, options[:hint], class: :hint) if options[:hint]
|
212
229
|
html += error_for(attribute, options) || ''
|
213
230
|
html.html_safe
|
214
231
|
end
|
215
232
|
|
216
|
-
def field(attribute, options, html_options = nil
|
233
|
+
def field(attribute, options, html_options = nil)
|
217
234
|
auto_labels = true unless @options[:auto_labels] == false
|
218
|
-
if auto_labels || options[:label]
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
235
|
+
html = if auto_labels || options[:label]
|
236
|
+
custom_label(attribute, options[:label], options[:label_options])
|
237
|
+
else
|
238
|
+
''.html_safe
|
239
|
+
end
|
223
240
|
class_options = html_options || options
|
224
241
|
|
225
242
|
if has_error?(attribute)
|