input_css 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a909d7c29971c180313b62f06634385d5e1152af
4
+ data.tar.gz: ac555296f644e2eba5293b9070de7a317c7b154b
5
+ SHA512:
6
+ metadata.gz: 7c0b71c9249581e5bb6253ae3b53830be8ace7abaff170701da159d653564228f564600b9eef24b238d97e751c261c063b139260c68b57809ed3dfa4985da00d
7
+ data.tar.gz: 915d650fb1d021739232056f6b4d56d547691c5ec013c9e68e51141a6b8799a2e4f399e7f10cb6753e74af05517b879060e731d31eec35279db1a569ff20e647
data/.gitignore CHANGED
@@ -2,3 +2,5 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ .ruby-version
6
+ .ruby-gemset
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new
5
+
6
+ task :default => :spec
data/input_css.gemspec CHANGED
@@ -19,4 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
 
21
21
  s.add_runtime_dependency "rails"
22
+
23
+ s.add_development_dependency "rspec"
24
+ s.add_development_dependency "equivalent-xml"
22
25
  end
data/lib/input_css.rb CHANGED
@@ -3,29 +3,39 @@ require "input_css/version"
3
3
  # Modifies the 'options' of the tag helper so that, by default,
4
4
  # there's a CSS class attribute based on the type attribute
5
5
  # (Note: only applies to input fields)
6
+ module InputCSS
7
+ def tag(name, options=nil, open=false, escape=true)
8
+ options = css_options_for_tag(name, options)
9
+ super
10
+ end
11
+
12
+ def css_options_for_tag(name, options)
13
+ options = HashWithIndifferentAccess.new(options)
14
+ return options if options[:type] == 'hidden'
15
+
16
+ # alter CSS class based on type
17
+ # (only for <input ... /> tags)
18
+ if name.to_s.downcase =~ /^input$/
19
+ type, css = options[:type], options[:class]
20
+ type = 'text' if type == 'password'
21
+ options[:class] = "#{css.to_s} #{type.to_s}".gsub!(/^\s*/, '') unless css && css.split.include?(type)
22
+ end
23
+ options
24
+ end
25
+ module_function :css_options_for_tag
26
+ end
27
+
6
28
  module ActionView
7
29
  module Helpers
8
30
  module TagHelper
9
- def tag_with_default_css(name, options=nil, open=false, escape=true)
10
- options = css_options_for_tag(name, options)
11
- tag_without_default_css(name, options, open, escape)
12
- end
13
- alias_method_chain :tag, :default_css
14
-
15
- private
16
-
17
- def css_options_for_tag(name, options)
18
- options = HashWithIndifferentAccess.new(options)
19
- return options if options[:type] == 'hidden'
20
-
21
- # alter CSS class based on type
22
- # (only for <input ... /> tags)
23
- if name.to_s.downcase =~ /^input$/
24
- type, css = options[:type], options[:class]
25
- type = 'text' if type == 'password'
26
- options[:class] = "#{css.to_s} #{type.to_s}".gsub!(/^\s*/, '') unless css && css.split.include?(type)
31
+ if respond_to?(:prepend) # Rails 5 compat
32
+ prepend InputCSS
33
+ else
34
+ def tag_with_default_css(name, options=nil, open=false, escape=true)
35
+ options = InputCSS.css_options_for_tag(name, options)
36
+ tag_without_default_css(name, options, open, escape)
27
37
  end
28
- options
38
+ alias_method_chain :tag, :default_css
29
39
  end
30
40
  end
31
41
 
@@ -1,3 +1,3 @@
1
1
  module InputCSS
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -11,18 +11,18 @@ describe "InputCSS" do
11
11
  VALID_TYPES.each do |type|
12
12
  it "should have class='#{type}' for type='#{type}'" do
13
13
  tag('input', { :type => type }).
14
- should eql("<input class=\"#{type}\" type=\"#{type}\" />")
14
+ should be_equivalent_to("<input class=\"#{type}\" type=\"#{type}\" />")
15
15
  end
16
16
  end
17
17
 
18
18
  it "should have class='text' for type='password'" do
19
19
  tag('input', { :type => 'password' }).
20
- should eql("<input class=\"text\" type=\"password\" />")
20
+ should be_equivalent_to("<input class=\"text\" type=\"password\" />")
21
21
  end
22
22
 
23
23
  it "should not have a class attribute for type='hidden'" do
24
24
  tag('input', {:type => 'hidden'}).
25
- should eql("<input type=\"hidden\" />")
25
+ should be_equivalent_to("<input type=\"hidden\" />")
26
26
  end
27
27
  end
28
28
 
@@ -32,12 +32,12 @@ describe "InputCSS" do
32
32
 
33
33
  describe "use examples shown in TagHelper#tag documentation" do
34
34
  it "should not add a default class attribute to non-INPUT tags" do
35
- tag('br').should eql("<br />")
36
- tag('br', nil, true).should eql("<br>")
35
+ tag('br').should be_equivalent_to("<br />")
36
+ tag('br', nil, true).should be_equivalent_to("<br>")
37
37
  tag('img', {:src => 'open & shut.png'}).
38
- should eql("<img src=\"open &amp; shut.png\" />")
38
+ should be_equivalent_to("<img src=\"open &amp; shut.png\" />")
39
39
  tag('img', {:src => 'open &amp; shut.png'}, false, false).
40
- should eql("<img src=\"open &amp; shut.png\" />")
40
+ should be_equivalent_to("<img src=\"open &amp; shut.png\" />")
41
41
  end
42
42
  end
43
43
 
@@ -47,19 +47,19 @@ describe "InputCSS" do
47
47
 
48
48
  it "should behave as expected (according to documentation) with the addition of default class" do
49
49
  text_field_tag('name').
50
- should eql("<input class=\"text\" id=\"name\" name=\"name\" type=\"text\" />")
50
+ should be_equivalent_to("<input class=\"text\" id=\"name\" name=\"name\" type=\"text\" />")
51
51
  text_field_tag('query', 'Enter your search query here').
52
- should eql("<input class=\"text\" id=\"query\" name=\"query\" type=\"text\" value=\"Enter your search query here\" />")
52
+ should be_equivalent_to("<input class=\"text\" id=\"query\" name=\"query\" type=\"text\" value=\"Enter your search query here\" />")
53
53
  text_field_tag('request', nil, :class => 'special_input').
54
- should eql("<input class=\"special_input text\" id=\"request\" name=\"request\" type=\"text\" />")
54
+ should be_equivalent_to("<input class=\"special_input text\" id=\"request\" name=\"request\" type=\"text\" />")
55
55
  text_field_tag('address', '', :size => 75).
56
- should eql("<input class=\"text\" id=\"address\" name=\"address\" size=\"75\" type=\"text\" value=\"\" />")
56
+ should be_equivalent_to("<input class=\"text\" id=\"address\" name=\"address\" size=\"75\" type=\"text\" value=\"\" />")
57
57
  text_field_tag('zip', nil, :maxlength => 5).
58
- should eql("<input class=\"text\" id=\"zip\" maxlength=\"5\" name=\"zip\" type=\"text\" />")
58
+ should be_equivalent_to("<input class=\"text\" id=\"zip\" maxlength=\"5\" name=\"zip\" type=\"text\" />")
59
59
  text_field_tag('payment_amount', '$0.00', :disabled => true).
60
- should eql("<input class=\"text\" disabled=\"disabled\" id=\"payment_amount\" name=\"payment_amount\" type=\"text\" value=\"$0.00\" />")
60
+ should be_equivalent_to("<input class=\"text\" disabled=\"disabled\" id=\"payment_amount\" name=\"payment_amount\" type=\"text\" value=\"$0.00\" />")
61
61
  text_field_tag('ip', '0.0.0.0', :maxlength => 15, :size => 20, :class => 'ip-input').
62
- should eql("<input class=\"ip-input text\" id=\"ip\" maxlength=\"15\" name=\"ip\" size=\"20\" type=\"text\" value=\"0.0.0.0\" />")
62
+ should be_equivalent_to("<input class=\"ip-input text\" id=\"ip\" maxlength=\"15\" name=\"ip\" size=\"20\" type=\"text\" value=\"0.0.0.0\" />")
63
63
  end
64
64
  end
65
65
 
@@ -80,43 +80,43 @@ describe "InputCSS" do
80
80
  # FormHelper#text_field
81
81
  it "should add default css to text_field" do
82
82
  text_field(:project, :title, :object => @project).
83
- should eql("<input class=\"text\" id=\"project_title\" name=\"project[title]\" size=\"30\" type=\"text\" value=\"RPH\" />")
83
+ should be_equivalent_to("<input class=\"text\" id=\"project_title\" name=\"project[title]\" type=\"text\" value=\"RPH\" />")
84
84
  end
85
85
 
86
86
  it "should append css to existing css" do
87
87
  text_field(:project, :title, :object => @project, :class => 'project').
88
- should eql("<input class=\"project text\" id=\"project_title\" name=\"project[title]\" size=\"30\" type=\"text\" value=\"RPH\" />")
88
+ should be_equivalent_to("<input class=\"project text\" id=\"project_title\" name=\"project[title]\" type=\"text\" value=\"RPH\" />")
89
89
  end
90
90
 
91
91
  # FormHelper#hidden_field
92
92
  it "should not add css to hidden_field" do
93
93
  hidden_field(:project, :title, :object => @project).
94
- should eql("<input id=\"project_title\" name=\"project[title]\" type=\"hidden\" value=\"RPH\" />")
94
+ should be_equivalent_to("<input id=\"project_title\" name=\"project[title]\" type=\"hidden\" value=\"RPH\" />")
95
95
  end
96
96
 
97
97
  # FormHelper#password_field
98
98
  it "should add default css of 'text' to password_field" do
99
99
  password_field(:project, :title, :object => @project).
100
- should eql("<input class=\"text\" id=\"project_title\" name=\"project[title]\" size=\"30\" type=\"password\" value=\"RPH\" />")
100
+ should be_equivalent_to("<input class=\"text\" id=\"project_title\" name=\"project[title]\" type=\"password\" />")
101
101
  end
102
102
 
103
103
  it "should add default css of 'text' to password_field" do
104
104
  password_field(:project, :title, :object => @project, :class => 'project').
105
- should eql("<input class=\"project text\" id=\"project_title\" name=\"project[title]\" size=\"30\" type=\"password\" value=\"RPH\" />")
105
+ should be_equivalent_to("<input class=\"project text\" id=\"project_title\" name=\"project[title]\" type=\"password\" />")
106
106
  end
107
107
 
108
108
  # FormHelper#check_box
109
109
  it "should add default css to check_box" do
110
110
  check_box(:project, :is_complete, :object => @project).
111
- should eql(
112
- "<input checked=\"checked\" class=\"checkbox\" id=\"project_is_complete\" name=\"project[is_complete]\" type=\"checkbox\" value=\"1\" />" +
113
- "<input name=\"project[is_complete]\" type=\"hidden\" value=\"0\" />"
111
+ should be_equivalent_to(
112
+ "<input name=\"project[is_complete]\" type=\"hidden\" value=\"0\" />" +
113
+ "<input checked=\"checked\" class=\"checkbox\" id=\"project_is_complete\" name=\"project[is_complete]\" type=\"checkbox\" value=\"1\" />"
114
114
  )
115
115
  end
116
116
 
117
117
  it "should add default css to check_box" do
118
118
  check_box(:project, :is_complete, :object => @project, :class => 'project').
119
- should eql(
119
+ should be_equivalent_to(
120
120
  "<input checked=\"checked\" class=\"project checkbox\" id=\"project_is_complete\" name=\"project[is_complete]\" type=\"checkbox\" value=\"1\" />" +
121
121
  "<input name=\"project[is_complete]\" type=\"hidden\" value=\"0\" />"
122
122
  )
@@ -125,19 +125,19 @@ describe "InputCSS" do
125
125
  # FormHelper#radio_button
126
126
  it "should add default css to radio_button" do
127
127
  radio_button(:project, :is_complete, 'yes').
128
- should eql("<input class=\"radio\" id=\"project_is_complete_yes\" name=\"project[is_complete]\" type=\"radio\" value=\"yes\" />")
128
+ should be_equivalent_to("<input class=\"radio\" id=\"project_is_complete_yes\" name=\"project[is_complete]\" type=\"radio\" value=\"yes\" />")
129
129
  end
130
130
 
131
131
  it "should add default css to radio_button" do
132
132
  radio_button(:project, :is_complete, 'yes', :class => 'project').
133
- should eql("<input class=\"project radio\" id=\"project_is_complete_yes\" name=\"project[is_complete]\" type=\"radio\" value=\"yes\" />")
133
+ should be_equivalent_to("<input class=\"project radio\" id=\"project_is_complete_yes\" name=\"project[is_complete]\" type=\"radio\" value=\"yes\" />")
134
134
  end
135
135
 
136
136
  # FormHelper#file_field
137
137
  it "should add default css to file_field" do
138
138
  file_field(:project, :chart).
139
- should eql("<input class=\"file\" id=\"project_chart\" name=\"project[chart]\" size=\"30\" type=\"file\" />")
139
+ should be_equivalent_to("<input class=\"file\" id=\"project_chart\" name=\"project[chart]\" type=\"file\" />")
140
140
  end
141
141
  end
142
142
  end
143
- end
143
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,70 @@
1
- require 'rubygems'
2
1
  require 'action_controller'
3
2
  require 'action_view'
4
- require File.join(File.dirname(__FILE__), "../lib/input_css")
3
+ require_relative "../lib/input_css"
4
+
5
+ require 'rspec/matchers' # req by equivalent-xml custom matcher `be_equivalent_to`
6
+ require 'equivalent-xml'
7
+
8
+ RSpec.configure do |config|
9
+ # These two settings work together to allow you to limit a spec run
10
+ # to individual examples or groups you care about by tagging them with
11
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
12
+ # get run.
13
+ config.filter_run :focus
14
+ config.run_all_when_everything_filtered = true
15
+
16
+ # Many RSpec users commonly either run the entire suite or an individual
17
+ # file, and it's useful to allow more verbose output when running an
18
+ # individual spec file.
19
+ if config.files_to_run.one?
20
+ # Use the documentation formatter for detailed output,
21
+ # unless a formatter has already been configured
22
+ # (e.g. via a command-line flag).
23
+ config.default_formatter = 'doc'
24
+ end
25
+
26
+ # Print the 10 slowest examples and example groups at the
27
+ # end of the spec run, to help surface which specs are running
28
+ # particularly slow.
29
+ # config.profile_examples = 10
30
+
31
+ # Run specs in random order to surface order dependencies. If you find an
32
+ # order dependency and want to debug it, you can fix the order by providing
33
+ # the seed, which is printed after each run.
34
+ # --seed 1234
35
+ config.order = :random
36
+
37
+ # Seed global randomization in this process using the `--seed` CLI option.
38
+ # Setting this allows you to use `--seed` to deterministically reproduce
39
+ # test failures related to randomization by passing the same `--seed` value
40
+ # as the one that triggered the failure.
41
+ Kernel.srand config.seed
42
+
43
+ # rspec-expectations config goes here. You can use an alternate
44
+ # assertion/expectation library such as wrong or the stdlib/minitest
45
+ # assertions if you prefer.
46
+ config.expect_with :rspec do |expectations|
47
+ # Enable only the newer, non-monkey-patching expect syntax.
48
+ # For more details, see:
49
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
50
+ expectations.syntax = [:should, :expect]
51
+ end
52
+
53
+ config.define_derived_metadata do |meta|
54
+ meta[:aggregate_failures] = true unless meta.key?(:aggregate_failures)
55
+ end
56
+
57
+ # rspec-mocks config goes here. You can use an alternate test double
58
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
59
+ config.mock_with :rspec do |mocks|
60
+ # Enable only the newer, non-monkey-patching expect syntax.
61
+ # For more details, see:
62
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
63
+ mocks.syntax = [:should, :expect]
64
+
65
+ # Prevents you from mocking or stubbing a method that does not exist on
66
+ # a real object. This is generally recommended.
67
+ mocks.verify_partial_doubles = true
68
+ end
69
+ end
70
+
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: input_css
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.1.1
4
+ version: 0.1.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ryan Heath
@@ -10,22 +9,48 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-06-27 00:00:00.000000000 Z
12
+ date: 2017-07-19 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
- prerelease: false
17
- type: :runtime
18
15
  name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rspec
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
19
37
  version_requirements: !ruby/object:Gem::Requirement
20
- none: false
21
38
  requirements:
22
- - - ! '>='
39
+ - - ">="
23
40
  - !ruby/object:Gem::Version
24
41
  version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: equivalent-xml
25
44
  requirement: !ruby/object:Gem::Requirement
26
- none: false
27
45
  requirements:
28
- - - ! '>='
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
29
54
  - !ruby/object:Gem::Version
30
55
  version: '0'
31
56
  description: This plugin taps into Rails tag helpers and adds a CSS class equal to
@@ -37,44 +62,39 @@ executables: []
37
62
  extensions: []
38
63
  extra_rdoc_files: []
39
64
  files:
40
- - .gitignore
65
+ - ".gitignore"
66
+ - ".rspec"
41
67
  - Gemfile
42
68
  - MIT-LICENSE
43
69
  - README.textile
44
70
  - Rakefile
45
- - init.rb
46
71
  - input_css.gemspec
47
- - install.rb
48
72
  - lib/input_css.rb
49
73
  - lib/input_css/version.rb
50
74
  - spec/input_css_spec.rb
51
- - spec/rcov.opts
52
- - spec/spec.opts
53
75
  - spec/spec_helper.rb
54
76
  - tasks/input_css_tasks.rake
55
- - uninstall.rb
56
77
  homepage: https://github.com/botandrose/input_css
57
78
  licenses: []
79
+ metadata: {}
58
80
  post_install_message:
59
81
  rdoc_options: []
60
82
  require_paths:
61
83
  - lib
62
84
  required_ruby_version: !ruby/object:Gem::Requirement
63
- none: false
64
85
  requirements:
65
- - - ! '>='
86
+ - - ">="
66
87
  - !ruby/object:Gem::Version
67
88
  version: '0'
68
89
  required_rubygems_version: !ruby/object:Gem::Requirement
69
- none: false
70
90
  requirements:
71
- - - ! '>='
91
+ - - ">="
72
92
  - !ruby/object:Gem::Version
73
93
  version: '0'
74
94
  requirements: []
75
95
  rubyforge_project: input_css
76
- rubygems_version: 1.8.25
96
+ rubygems_version: 2.4.8
77
97
  signing_key:
78
- specification_version: 3
98
+ specification_version: 4
79
99
  summary: Adds CSS classes for Rails input tags
80
100
  test_files: []
data/init.rb DELETED
@@ -1 +0,0 @@
1
- require 'input_css'
data/install.rb DELETED
@@ -1 +0,0 @@
1
- # Install hook code here
data/spec/rcov.opts DELETED
@@ -1,4 +0,0 @@
1
- --exclude
2
- gems
3
- --exclude
4
- spec
data/spec/spec.opts DELETED
@@ -1,5 +0,0 @@
1
- --colour
2
- --backtrace
3
- --format
4
- specdoc
5
- --diff
data/uninstall.rb DELETED
@@ -1 +0,0 @@
1
- # Uninstall hook code here