underscore_params 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +6 -0
- data/README.md +40 -0
- data/Rakefile +11 -0
- data/lib/underscore_params/action_dispatch/http/underscore_params.rb +43 -0
- data/lib/underscore_params/railtie.rb +9 -0
- data/lib/underscore_params/version.rb +3 -0
- data/lib/underscore_params.rb +8 -0
- data/test/underscore_params_test.rb +58 -0
- data/underscore_params.gemspec +22 -0
- metadata +69 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b3becd47ba00ca0a65525b288f3f21389cefaff0
|
4
|
+
data.tar.gz: ef05bc94877a0c4d2d49cbd3721b0d996e1c0fa0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3604b1c20038bb6edf1eda8e9a1d0b9ba8d93cfa88dcc9331d7536977afe6d68a6d80909b9163d62443b987bac0e7991212bbb48adcbf04dd79385253199c06f
|
7
|
+
data.tar.gz: 006bbcd6135419e32b5cef91bee0a481db49ac3aac71573be930f616d045e764d20b330f6502938f397c50aa9a30f4df64212c0fd34c57bb81552aa3ae0c4460
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# Underscore Params
|
2
|
+
|
3
|
+
Forces all param keys in Rails to be underscored. eg
|
4
|
+
|
5
|
+
{'anObject' => 'value'} turns into {'an_object' => 'value'}
|
6
|
+
|
7
|
+
Will underscore all param keys including deeply nested ones.
|
8
|
+
|
9
|
+
Helpful if you do not have control over the view layer / what params are being sent to the application and don't want to complicate controllers / models with conversion logic.
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Add this line to your application's Gemfile:
|
14
|
+
|
15
|
+
gem 'underscore_params'
|
16
|
+
|
17
|
+
And then execute:
|
18
|
+
|
19
|
+
$ bundle
|
20
|
+
|
21
|
+
Or install it yourself as:
|
22
|
+
|
23
|
+
$ gem install underscore_params
|
24
|
+
|
25
|
+
## Usage
|
26
|
+
|
27
|
+
* Just reference in Gemfile
|
28
|
+
* Works for Rails 4+ (not tested on earlier versions)
|
29
|
+
|
30
|
+
## Contributing
|
31
|
+
|
32
|
+
1. Fork it ( http://github.com/ansonK/underscore_params/fork )
|
33
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
34
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
35
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
36
|
+
5. Create new Pull Request
|
37
|
+
|
38
|
+
## License
|
39
|
+
|
40
|
+
Underscore Params is released under the [MIT License](http://www.opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
module ActionDispatch
|
2
|
+
module Http
|
3
|
+
|
4
|
+
#
|
5
|
+
# Overrides the default params method on ActionDispatch::Request to underscore all keys
|
6
|
+
# (request.params is aliased to parameters)
|
7
|
+
#
|
8
|
+
# Should be included into ActionDispatch::Request after the standard Rails modules
|
9
|
+
#
|
10
|
+
module UnderscoreParams
|
11
|
+
|
12
|
+
#
|
13
|
+
# Processes parameters by underscoring all hash keys
|
14
|
+
#
|
15
|
+
def parameters
|
16
|
+
underscore_keys super
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
#
|
22
|
+
# Underscores all key values in both Hashes and Hashes in arrays.
|
23
|
+
# Other values are not modified
|
24
|
+
#
|
25
|
+
# @param value [Object] The value to be processed
|
26
|
+
#
|
27
|
+
def underscore_keys(value)
|
28
|
+
case value
|
29
|
+
when Array
|
30
|
+
value.map { |v| underscore_keys(v) }
|
31
|
+
when Hash
|
32
|
+
Hash[value.map { |k, v| [underscore_key(k), underscore_keys(v)] }]
|
33
|
+
else
|
34
|
+
value
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def underscore_key(val)
|
39
|
+
val.to_s.underscore
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
module UnderscoreParams
|
2
|
+
class Railtie < Rails::Railtie
|
3
|
+
initializer "underscore_params.configure_controller" do |app|
|
4
|
+
ActiveSupport.on_load :action_controller do
|
5
|
+
ActionDispatch::Request.send :include, ActionDispatch::Http::UnderscoreParams
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
require 'active_support/core_ext/string/inflections'
|
2
|
+
require "underscore_params/version"
|
3
|
+
require "underscore_params/action_dispatch/http/underscore_params"
|
4
|
+
require 'underscore_params/railtie' if defined?(Rails)
|
5
|
+
|
6
|
+
module UnderscoreParams
|
7
|
+
# Your code goes here...
|
8
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'minitest'
|
2
|
+
require 'minitest/spec'
|
3
|
+
require 'minitest/autorun'
|
4
|
+
require 'underscore_params'
|
5
|
+
|
6
|
+
#
|
7
|
+
# Mymics the setup of how ActionDispatch::Request has a Parameters module included
|
8
|
+
#
|
9
|
+
module UnderscoreTest
|
10
|
+
module Parameters
|
11
|
+
def parameters
|
12
|
+
parameter_values
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class TestController
|
17
|
+
attr_accessor :parameter_values
|
18
|
+
include Parameters
|
19
|
+
include ActionDispatch::Http::UnderscoreParams
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe ActionDispatch::Http::UnderscoreParams do
|
24
|
+
before do
|
25
|
+
@controller = UnderscoreTest::TestController.new
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'underscores camelCase keys' do
|
29
|
+
@controller.parameter_values = {'firstName' => 'Bob'}
|
30
|
+
@controller.parameters.must_equal({'first_name' => 'Bob'})
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'underscores camelCase keys in nested objects' do
|
34
|
+
@controller.parameter_values = {'objName' => {'firstName' => 'Bob'} }
|
35
|
+
@controller.parameters.must_equal({'obj_name' => {'first_name' => 'Bob'}})
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'underscores camelCase keys in deeply nested objects' do
|
39
|
+
@controller.parameter_values = {"type"=>"Birth",
|
40
|
+
"text"=>"This is when I was born",
|
41
|
+
"date"=>"1980-01-01",
|
42
|
+
"locations"=>{},
|
43
|
+
"persons"=>
|
44
|
+
{"person"=>
|
45
|
+
{"firstName"=>"Bob",
|
46
|
+
"middleNames"=>"Billy Joe"
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
@controller.parameters['persons']['person'].must_equal({'first_name' => 'Bob', 'middle_names' => 'Billy Joe'})
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'underscores keys nested in arrays' do
|
55
|
+
@controller.parameter_values = {'objName' => [{'firstName' => 'Bob'}] }
|
56
|
+
@controller.parameters.must_equal({'obj_name' => [{'first_name' => 'Bob'}]})
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'underscore_params/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "underscore_params"
|
8
|
+
spec.version = UnderscoreParams::VERSION
|
9
|
+
spec.authors = ["Anson Kelly"]
|
10
|
+
spec.email = ["ansonkelly@gmail.com"]
|
11
|
+
spec.summary = %q{Forces all rails request params to be underscored.}
|
12
|
+
spec.description = %q{Forces all rails request params (both GET and POST) to be underscored.}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency "activesupport", '>= 3'
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: underscore_params
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Anson Kelly
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-06-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3'
|
27
|
+
description: Forces all rails request params (both GET and POST) to be underscored.
|
28
|
+
email:
|
29
|
+
- ansonkelly@gmail.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- ".gitignore"
|
35
|
+
- Gemfile
|
36
|
+
- README.md
|
37
|
+
- Rakefile
|
38
|
+
- lib/underscore_params.rb
|
39
|
+
- lib/underscore_params/action_dispatch/http/underscore_params.rb
|
40
|
+
- lib/underscore_params/railtie.rb
|
41
|
+
- lib/underscore_params/version.rb
|
42
|
+
- test/underscore_params_test.rb
|
43
|
+
- underscore_params.gemspec
|
44
|
+
homepage: ''
|
45
|
+
licenses:
|
46
|
+
- MIT
|
47
|
+
metadata: {}
|
48
|
+
post_install_message:
|
49
|
+
rdoc_options: []
|
50
|
+
require_paths:
|
51
|
+
- lib
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
requirements: []
|
63
|
+
rubyforge_project:
|
64
|
+
rubygems_version: 2.2.2
|
65
|
+
signing_key:
|
66
|
+
specification_version: 4
|
67
|
+
summary: Forces all rails request params to be underscored.
|
68
|
+
test_files:
|
69
|
+
- test/underscore_params_test.rb
|