simphi 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 47ccaa122b630ee4c29c01ecd3b1baf1df028deb
4
- data.tar.gz: 3146a14863707612fd3d74974a7499cd121e9340
3
+ metadata.gz: 9a1799995a0418694980372ae82a18e3323d165a
4
+ data.tar.gz: b8ae84379e727ed40a3682c4e664a57353b22a92
5
5
  SHA512:
6
- metadata.gz: bc3363aa6a10b3dd8e195c62647813d88ae8bce18a8b1c711691c02ce24cbdba20e900fff3f38df96a3561003b4f5967a5ddb4c7225bdfa9b8444e7368ce999a
7
- data.tar.gz: 910a3e760d507753cfd0c90ffa39a61818dc079b3bf3a65e7f24b64cd1fde473f410cbf91dac4647ceb68c6f71640cefe7985ae10f71b018b500a03511000b38
6
+ metadata.gz: 58ffc898a6c3372b1383c9d1f65dc90e057aeb8704119a376cd7c6b961e516482748cbff570bf9a949cc7332378e34419a302a8a52888059953d927fdd89768d
7
+ data.tar.gz: 19283f96b2e418323c79c823d1b106cc339912721983bb304b935c5b33cd2af0cfbc21eed293612d9d0af2c4bf43d6c06255f6412a58cd76ad961b72a0eb7ebb
data/Gemfile CHANGED
@@ -2,3 +2,8 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in simphi.gemspec
4
4
  gemspec
5
+
6
+ group :development, :test do
7
+ gem 'rspec-rails', '~> 2.14.0'
8
+ gem 'activerecord-nulldb-adapter'
9
+ end
data/README.md CHANGED
@@ -1,6 +1,52 @@
1
1
  # Simphi
2
2
 
3
- TODO: Write a gem description
3
+ ## Description
4
+
5
+ This gem were implemented for natural using hashes in web development.
6
+ The gem divided in two parts: middleware and simple_form custom input.
7
+ With *Simphi::Middleware* you can send params to server and they will be rebuilt to normal hash and with simple_form input the hash can be sended in proper format to server.
8
+
9
+ ### Middleware
10
+ The middleware relies to `-simphi` part of the hash key.
11
+ #### Example
12
+ ```ruby
13
+ "contacts-simphi": {
14
+ "don't matter what here": {
15
+ "key": "email",
16
+ "value": "beznosa@yahoo.com"
17
+ },
18
+ "don't matter what here too": {
19
+ "key": "skype",
20
+ "value": "mix_beznos"
21
+ }
22
+ }
23
+
24
+ # will be replaced with:
25
+
26
+ "contacts": {
27
+ "email": "beznosa@yahoo.com"
28
+ },
29
+ "skype": "mix_beznos"
30
+ }
31
+ }
32
+ ```
33
+
34
+ ### Hash Input
35
+ SimphiInput is a SimpleForm custom input which create a typical hash structure for input with key, value.
36
+
37
+ [Simphi Hash Input](http://gdurl.com/wTNH)
38
+
39
+ It can be used as usual custom input:
40
+ ```ruby
41
+ = simple_form_for do |f|
42
+ = f.input :contacts, as: :simphi
43
+ # Required fields can be passed as array of symbols or single symbol.
44
+ # It works as field which will be presetted even if 'contacts' will be empty.
45
+ = f.input :contacts, as: :simphi, required_fields: [:phone, :skype]
46
+ # Also it can be populated with options for key_input, value_input, remove_button, error, add_button
47
+ = f.input :contacts, as: :simphi, key_input: { class: 'shi_key' }, add_button: { id: 'custom_button_id' }
48
+ ```
49
+
4
50
 
5
51
  ## Installation
6
52
 
@@ -18,13 +64,21 @@ Or install it yourself as:
18
64
 
19
65
  $ gem install simphi
20
66
 
21
- ## Usage
67
+ To use middleware you need to add such lines to your `config/application.rb` file(in case of using rails):
68
+
69
+ ```ruby
70
+ require "simphi/middleware"
71
+
72
+ class Application < Rails::Application
73
+ config.middleware.use Simphi::Middleware
74
+ end
75
+ ```
22
76
 
23
- TODO: Write usage instructions here
77
+ To use hash input can be used `as: :simphi` option for simple form input.
24
78
 
25
79
  ## Contributing
26
80
 
27
- 1. Fork it ( https://github.com/[my-github-username]/simphi/fork )
81
+ 1. Fork it ( https://github.com/AlexBeznos/simphi/fork )
28
82
  2. Create your feature branch (`git checkout -b my-new-feature`)
29
83
  3. Commit your changes (`git commit -am 'Add some feature'`)
30
84
  4. Push to the branch (`git push origin my-new-feature`)
data/Rakefile CHANGED
@@ -1,5 +1,15 @@
1
- require "bundler/gem_tasks"
1
+ #!/usr/bin/env rake
2
2
 
3
- Dir.glob('tasks/**/*.rake').each(&method(:import))
3
+ begin
4
+ require 'bundler/setup'
5
+ rescue LoadError
6
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
7
+ end
4
8
 
5
- task default: :spec
9
+ require 'rspec/core'
10
+ require 'rspec/core/rake_task'
11
+
12
+ Bundler::GemHelper.install_tasks
13
+ RSpec::Core::RakeTask.new(:spec)
14
+
15
+ task :default => :spec
data/lib/simphi.rb CHANGED
@@ -1,2 +1,6 @@
1
+ require "simple_form"
2
+
1
3
  module Simphi
2
4
  end
5
+
6
+ SimpleForm::Inputs.send(:include, Simphi)
@@ -8,7 +8,7 @@ module Simphi
8
8
 
9
9
  if with_hash? key
10
10
  param = delete_param(key)
11
- update_param(key.gsub(/-shi_hash/, ''), normalized_hash(param))
11
+ update_param(key.gsub(/-simphi/, ''), normalized_hash(param))
12
12
  end
13
13
 
14
14
 
@@ -18,8 +18,8 @@ module Simphi
18
18
  private
19
19
 
20
20
  def with_hash?(param)
21
- return param =~ /-shi_hash/ if param.is_a? String
22
- return param.to_s =~ /-shi_hash/ if param.is_a? Hash
21
+ return param =~ /-simphi/ if param.is_a? String
22
+ return param.to_s =~ /-simphi/ if param.is_a? Hash
23
23
  end
24
24
 
25
25
  def normalized_hash(params)
@@ -43,7 +43,7 @@ module Simphi
43
43
  if with_hash? k
44
44
  {
45
45
  key: k,
46
- obj: { k.gsub(/-shi_hash/, '') => normalized_hash(v) }
46
+ obj: { k.gsub(/-simphi/, '') => normalized_hash(v) }
47
47
  }
48
48
  end
49
49
 
@@ -0,0 +1,167 @@
1
+ require 'simple_form'
2
+
3
+ ####
4
+ # Simple Hash extending for code minimization
5
+ class Hash
6
+ def exclude_keys(*keys)
7
+ self.reject { |e| keys.include? e }
8
+ end
9
+ end
10
+
11
+ module Simphi
12
+ class SimphiInput < SimpleForm::Inputs::Base
13
+ def input(wrapper_options)
14
+ @io = ActiveSupport::SafeBuffer.new
15
+
16
+ @builder.fields_for "#{attribute_name}-shi_hash" do |b|
17
+ @hash_builder = b
18
+
19
+ @io.tap do |sb|
20
+ get_fields_for(required_attributes, 1, true)
21
+ get_fields_for(not_required_attributes, required_attributes.count + 1)
22
+ add_button
23
+ end
24
+
25
+ end
26
+ end
27
+
28
+ private
29
+ def attribute_value
30
+ object.send(attribute_name)
31
+ end
32
+
33
+ def required_attributes
34
+ Array.new([ input_options.try(:[], :required_fields) ])
35
+ .flatten
36
+ .compact
37
+ .map(&:to_s)
38
+ end
39
+
40
+ def not_required_attributes
41
+ attribute_value.try(:keys).to_a - required_attributes + [:sample_shi_hash]
42
+ end
43
+
44
+ def get_fields_for(array, start, required = false)
45
+ array.each_with_index.each do |key, index|
46
+ @io << hash_pair(key, start + index, @hash_builder)
47
+ end
48
+ end
49
+
50
+ ####
51
+ # Button for adding new hash pairs
52
+ def add_button
53
+ @io << template.content_tag(:button, *add_button_options)
54
+ end
55
+
56
+ def add_button_options
57
+ opts = input_options_for(:add_button)
58
+ [
59
+ opts.fetch(:label, I18n.t('simple_hash_input.add_button', default: 'Add more')),
60
+ {
61
+ class: "#{opts.fetch(:class, 'btn btn-block btn-primary')} add_hash_pair"
62
+ }.merge(opts.exclude_keys(:label, :class))
63
+ ]
64
+ end
65
+
66
+ ####
67
+ # Hash pair is inputs for key, value of hash, also it is added remove button
68
+ # and block for errors handling
69
+ def hash_pair(key, index, builder)
70
+ template.content_tag(:div, hash_pair_options(key, index)) do
71
+ builder.fields_for "hash-#{index}" do |f|
72
+ template.concat( wrapped_input(key, f, 'key') )
73
+ template.concat( wrapped_input(key, f, 'value') )
74
+ template.concat( remove_button() )
75
+ template.concat( error_help_block(key) )
76
+ end
77
+ end
78
+ end
79
+
80
+ def hash_pair_options(key, index)
81
+ opts = input_options_for(:hash_pair)
82
+ klass = ["hash-#{index}"]
83
+ klass << opts.fetch(:class, 'row hash-pair')
84
+ klass << 'sample' if key == :sample_shi_hash
85
+ klass << 'has_error' if error(key)
86
+ klass * ' '
87
+
88
+ {
89
+ class: klass
90
+ }.merge(opts.exclude_keys(:class))
91
+ end
92
+
93
+ ####
94
+ # Input field, wrapped into block for better styling ability
95
+ def wrapped_input(key, builder, name)
96
+ opts = input_options_for("#{name}_input".to_sym).fetch(:wrapper, {})
97
+ wrapper_opts = { class: 'col-xs-5' }.merge(opts)
98
+
99
+ template.content_tag(:div, wrapper_opts) do
100
+ builder.text_field(name, self.send("#{name}_options", key))
101
+ end
102
+ end
103
+
104
+ def key_options(key)
105
+ extends = if key == :sample_shi_hash
106
+ { disabled: 'disabled' }
107
+ else
108
+ { value: key }
109
+ end
110
+
111
+ input_options_for(:key_input).merge(extends)
112
+ end
113
+
114
+ def value_options(key)
115
+ value = attribute_value.try(:[], key)
116
+ opts = {}
117
+ opts.merge!({ disabled: 'disabled' }) if key == :sample_shi_hash
118
+ opts.merge!(value ? { value: value } : {})
119
+ opts.merge( input_options_for(:value_input) )
120
+ end
121
+
122
+ ####
123
+ # Button for removing hash pair
124
+ def remove_button
125
+ opts = input_options_for(:remove_button).fetch(:wrapper, {})
126
+ wrapper_opts = { class: 'col-xs-2' }.merge(opts)
127
+
128
+ template.content_tag(:div, wrapper_opts) do
129
+ template.concat( template.content_tag(:button, *remove_button_options) )
130
+ end
131
+ end
132
+
133
+ def remove_button_options
134
+ opts = input_options_for(:remove_button)
135
+ [
136
+ opts.fetch(:label, 'x'),
137
+ {
138
+ class: "#{opts.fetch(:class, 'btn btn-default pull-right')} remove_hash_pair"
139
+ }.merge(opts.exclude_keys(:label, :class, :wrapper))
140
+ ]
141
+ end
142
+
143
+ ####
144
+ # Block for error handling
145
+ def error_help_block(key)
146
+ opts = { class: 'col-xs-12 help-block' }.merge(input_options_for(:error))
147
+ template.content_tag(:span, error(key), opts)
148
+ end
149
+
150
+ ####
151
+ # Error finder, which based on using store_accessor
152
+ # and setting validation on hash attributs
153
+ def error(key)
154
+ if key.is_a? String
155
+ k = key.to_sym
156
+ messages = object.errors.messages
157
+
158
+ messages.try(:[], k).try(:first)
159
+ end
160
+ end
161
+
162
+ def input_options_for(key)
163
+ opts = input_options.fetch(key, {})
164
+ opts.is_a?(Hash) ? opts : {}
165
+ end
166
+ end
167
+ end
data/simphi.gemspec CHANGED
@@ -4,22 +4,22 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "simphi"
7
- spec.version = "0.0.2"
7
+ spec.version = "0.0.3"
8
8
  spec.authors = ["Alex Beznos"]
9
9
  spec.email = ["beznosa@yahoo.com"]
10
10
  spec.summary = %q{Ability to deale with hash like inputs}
11
- spec.description = %q{The gem will be suetable if you want to make hash from input}
11
+ spec.description = %q{The gem for natural using of hashs in web dev}
12
12
  spec.homepage = "https://github.com/AlexBeznos/simphi"
13
13
  spec.license = "MIT"
14
14
 
15
15
  spec.files = `git ls-files -z`.split("\x0")
16
16
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
- spec.require_paths = ["lib"]
17
+ spec.require_paths = ["{lib,vendor}/**/*"]
18
18
 
19
19
  spec.add_dependency "simple_form", "> 2.0"
20
20
  spec.add_dependency "rack", "~> 1.6.4"
21
+ spec.add_dependency "coffee-rails"
21
22
 
22
23
  spec.add_development_dependency "bundler", "~> 1.7"
23
24
  spec.add_development_dependency "rake", "~> 10.0"
24
- spec.add_development_dependency "rspec"
25
25
  end
data/spec/request_spec.rb CHANGED
@@ -35,7 +35,7 @@ describe Simphi::Request do
35
35
  "one" => "one",
36
36
  "two" => {
37
37
  "more" => {
38
- "first-shi_hash" => {
38
+ "first-simphi" => {
39
39
  "first-pair" => {
40
40
  "key" => "first-key",
41
41
  "value" => "first-value"
@@ -47,7 +47,7 @@ describe Simphi::Request do
47
47
  }
48
48
  }
49
49
  },
50
- "three-shi_hash" => {
50
+ "three-simphi" => {
51
51
  "first-pair" => {
52
52
  "key" => "first-key",
53
53
  "value" => "first-value"
@@ -84,7 +84,7 @@ describe Simphi::Request do
84
84
  context "include only key" do
85
85
  let(:params_before) do
86
86
  {
87
- "first-shi_hash" => {
87
+ "first-simphi" => {
88
88
  "first-pair" => {
89
89
  "key" => "first-key"
90
90
  }
@@ -100,7 +100,7 @@ describe Simphi::Request do
100
100
  context "include key and value but with incorect names" do
101
101
  let(:params_before) do
102
102
  {
103
- "first-shi_hash" => {
103
+ "first-simphi" => {
104
104
  "first-pair" => {
105
105
  "k" => "first-key",
106
106
  "value" => "first-value"
@@ -0,0 +1,172 @@
1
+ require "spec_helper"
2
+ require "simphi"
3
+ require "simphi/simphi_input"
4
+
5
+ RSpec.shared_examples "with add more button" do
6
+ it "include add more button" do
7
+ assert_select ".add_hash_pair", 1
8
+ end
9
+ end
10
+
11
+ RSpec.shared_examples "errors block" do
12
+ it "include certain number of errors" do
13
+ assert_select ".help-block", count + 1
14
+ end
15
+ end
16
+
17
+ RSpec.shared_examples "include hash elements" do
18
+ it "include certain number of hash elements with certain number of inputs(key, value for each)" do
19
+ assert_select hash_element_class, elements_count + 1 do |hash_element|
20
+ hash_element.each do |element|
21
+ assert_select element, "input", 2
22
+ assert_select element, ".remove_hash_pair", 1
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ RSpec.shared_examples "include sample element" do
29
+ it "include certain number of hash elements with certain number of inputs(key, value for each)" do
30
+ assert_select "#{hash_element_class}.sample", 1 do |hash_element|
31
+ hash_element.each do |element|
32
+ assert_select element, "input", 2
33
+ assert_select element, ".remove_hash_pair", 1
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+
40
+ describe "Simphi::SimphiInput", type: :input do
41
+ let(:klass_name) { "RandomRecord" }
42
+ let(:attr) { :fake_attr }
43
+
44
+ let(:am) { double("ActiveModel", param_key: klass_name) }
45
+ let!(:record) { double(klass_name, model_name: am, to_key: [1]) }
46
+
47
+ let(:hash_element_class) { ".hash-pair" }
48
+
49
+ context "with empty hash" do
50
+ before do
51
+ allow(record).to receive(attr)
52
+ allow_any_instance_of(Simphi::SimphiInput).to receive(:error).and_return(nil)
53
+
54
+ concat input_for(record, attr, options)
55
+ end
56
+
57
+ context "and without options" do
58
+ let(:options) { { as: :simphi } }
59
+
60
+ it "not include hash elements" do
61
+ assert_select hash_element_class, 1
62
+ end
63
+
64
+ include_examples "with add more button"
65
+ include_examples "include sample element"
66
+ include_examples "errors block" do
67
+ let(:count) { 0 }
68
+ end
69
+ end
70
+
71
+ context "and with required fields" do
72
+ let(:req_fields) { [:param_1, :param_2] }
73
+ let(:options) do
74
+ {
75
+ as: :simphi,
76
+ required_fields: req_fields
77
+ }
78
+ end
79
+
80
+ include_examples "include hash elements" do
81
+ let(:elements_count) { 2 }
82
+ end
83
+
84
+ include_examples "with add more button"
85
+ include_examples "include sample element"
86
+ include_examples "errors block" do
87
+ let(:count) { 2 }
88
+ end
89
+ end
90
+ end
91
+
92
+ context "with full hash" do
93
+ before do
94
+ allow(record).to receive(attr) do
95
+ {
96
+ param_1: "first param",
97
+ param_2: "second param"
98
+ }
99
+ end
100
+ end
101
+
102
+ context "and without options" do
103
+ let(:options) { { as: :simphi } }
104
+
105
+ before do
106
+ allow_any_instance_of(Simphi::SimphiInput).to receive(:error).and_return(nil)
107
+ concat input_for(record, attr, options)
108
+ end
109
+
110
+ include_examples "with add more button"
111
+ include_examples "include sample element"
112
+ include_examples "include hash elements" do
113
+ let(:elements_count) { 2 }
114
+ end
115
+ include_examples "errors block" do
116
+ let(:count) { 2 }
117
+ end
118
+ end
119
+
120
+ context "and without options but with errors" do
121
+ let(:options) { { as: :simphi } }
122
+ let(:message) { "message" }
123
+
124
+ before do
125
+ allow(record).to receive(attr).and_return(param_1: "first param")
126
+ allow_any_instance_of(Simphi::SimphiInput).to receive(:error).and_return(message)
127
+ concat input_for(record, attr, options)
128
+ end
129
+
130
+ include_examples "include sample element"
131
+ include_examples "with add more button"
132
+ include_examples "errors block" do
133
+ let(:count) { 1 }
134
+ end
135
+ include_examples "include hash elements" do
136
+ let(:elements_count) { 1 }
137
+ end
138
+ end
139
+ end
140
+
141
+ context "with options" do
142
+ possible_attributes = %i( key_input value_input remove_button error )
143
+ let(:fake_attr_name) { "fake_attr_name" }
144
+
145
+ before do
146
+ allow(record).to receive(attr).and_return(param_2: "second param")
147
+ allow_any_instance_of(Simphi::SimphiInput).to receive(:error).and_return(nil)
148
+
149
+ concat input_for(record, attr, options)
150
+ end
151
+
152
+ context "class" do
153
+ possible_attributes.each do |attribute|
154
+ let(:options) { { as: :simphi, attribute => { class: fake_attr_name } } }
155
+
156
+ it "applies" do
157
+ assert_select [".", fake_attr_name].join, 2
158
+ end
159
+ end
160
+ end
161
+
162
+ context "id" do
163
+ possible_attributes.each do |attribute|
164
+ let(:options) { { as: :simphi, attribute => { id: fake_attr_name } } }
165
+
166
+ it "applies" do
167
+ assert_select ["#", fake_attr_name].join, 2
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,15 @@
1
- require "simphi/middleware"
2
- require "rack/test"
1
+ require "rails/all"
2
+ require "nulldb_rspec"
3
3
  require "active_support"
4
4
  require "active_support/core_ext"
5
- # Dir["spec/**/*.rb"].each { |f| require f }
5
+ require "rack/test"
6
+ require "rspec/rails"
7
+ # require "rails/test_help"
8
+
9
+ include NullDB::RSpec::NullifiedDatabase
10
+
11
+ ActiveRecord::Base.establish_connection :adapter => :nulldb
12
+ Dir["#{File.dirname(__FILE__)}/support/*.rb"].each { |f| require f }
6
13
 
7
14
  RSpec.configure do |config|
8
15
  config.order = "random"
@@ -0,0 +1,15 @@
1
+ module InputExampleGroup
2
+ extend ActiveSupport::Concern
3
+
4
+ include RSpec::Rails::HelperExampleGroup
5
+
6
+ def input_for(object, attribute_name, options = {})
7
+ helper.simple_form_for object, url: "" do |f|
8
+ f.input attribute_name, options
9
+ end
10
+ end
11
+ end
12
+
13
+ RSpec.configure do |config|
14
+ config.include InputExampleGroup, type: :input
15
+ end
@@ -0,0 +1,47 @@
1
+ class SimphiInput
2
+ HASH_ELEMENT_IDENTIFIER: '.hash-pair'
3
+
4
+ constructor: (target) ->
5
+ @target = $(target)
6
+ @index = @target.siblings(@HASH_ELEMENT_IDENTIFIER).length + 1
7
+
8
+ changedHashIndex: (original) ->
9
+ original.replace(/hash-\d+/, "hash-#{@index}")
10
+
11
+ newHashInput: ->
12
+ instance = this
13
+ sample = @target.siblings("#{@HASH_ELEMENT_IDENTIFIER}.sample").clone(true)
14
+ sample.removeClass('sample')
15
+ sample.attr('class': instance.changedHashIndex(sample.attr('class')))
16
+ sample.find('input').each ->
17
+ input = this
18
+ $(input).removeAttr('disabled')
19
+ $.each ['name', 'id'], ->
20
+ currentValue = $(input).attr(this)
21
+ $(input).attr(this, instance.changedHashIndex(currentValue))
22
+
23
+ return sample
24
+
25
+ addHashInput: ->
26
+ newHashInput = this.newHashInput()
27
+ $(newHashInput).insertBefore(@target)
28
+
29
+ removeHashInput: ->
30
+ @target.parents('.hash-pair').remove()
31
+
32
+ $(document).ready ->
33
+ ####
34
+ ## Add one more hash pair
35
+ $('button.add_hash_pair').click (e) ->
36
+ e.preventDefault()
37
+
38
+ he = new SimphiInput e.currentTarget
39
+ he.addHashInput()
40
+
41
+ ####
42
+ ## Remove hash pair
43
+ $('button.remove_hash_pair').click (e) ->
44
+ e.preventDefault()
45
+
46
+ he = new SimphiInput e.currentTarget
47
+ he.removeHashInput()
@@ -0,0 +1,3 @@
1
+ .hash .sample {
2
+ display: none;
3
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simphi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Beznos
@@ -14,81 +14,81 @@ dependencies:
14
14
  name: simple_form
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">"
17
+ - - '>'
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">"
24
+ - - '>'
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.6.4
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.6.4
41
41
  - !ruby/object:Gem::Dependency
42
- name: bundler
42
+ name: coffee-rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
- version: '1.7'
48
- type: :development
47
+ version: '0'
48
+ type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
- version: '1.7'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rake
56
+ name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '1.7'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: '1.7'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rspec
70
+ name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '10.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
83
- description: The gem will be suetable if you want to make hash from input
82
+ version: '10.0'
83
+ description: The gem for natural using of hashs in web dev
84
84
  email:
85
85
  - beznosa@yahoo.com
86
86
  executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
- - ".gitignore"
91
- - ".rspec"
90
+ - .gitignore
91
+ - .rspec
92
92
  - Gemfile
93
93
  - LICENSE.txt
94
94
  - README.md
@@ -96,11 +96,16 @@ files:
96
96
  - lib/simphi.rb
97
97
  - lib/simphi/middleware.rb
98
98
  - lib/simphi/request.rb
99
+ - lib/simphi/simphi_input.rb
99
100
  - simphi.gemspec
100
101
  - spec/middleware_spec.rb
101
102
  - spec/request_spec.rb
103
+ - spec/simphi_input_spec.rb
102
104
  - spec/spec_helper.rb
105
+ - spec/support/input.rb
103
106
  - tasks/rspec.rake
107
+ - vendor/assets/javascripts/simphi.js.coffee
108
+ - vendor/assets/stylesheets/simphi.css
104
109
  homepage: https://github.com/AlexBeznos/simphi
105
110
  licenses:
106
111
  - MIT
@@ -108,24 +113,26 @@ metadata: {}
108
113
  post_install_message:
109
114
  rdoc_options: []
110
115
  require_paths:
111
- - lib
116
+ - '{lib,vendor}/**/*'
112
117
  required_ruby_version: !ruby/object:Gem::Requirement
113
118
  requirements:
114
- - - ">="
119
+ - - '>='
115
120
  - !ruby/object:Gem::Version
116
121
  version: '0'
117
122
  required_rubygems_version: !ruby/object:Gem::Requirement
118
123
  requirements:
119
- - - ">="
124
+ - - '>='
120
125
  - !ruby/object:Gem::Version
121
126
  version: '0'
122
127
  requirements: []
123
128
  rubyforge_project:
124
- rubygems_version: 2.2.2
129
+ rubygems_version: 2.4.6
125
130
  signing_key:
126
131
  specification_version: 4
127
132
  summary: Ability to deale with hash like inputs
128
133
  test_files:
129
134
  - spec/middleware_spec.rb
130
135
  - spec/request_spec.rb
136
+ - spec/simphi_input_spec.rb
131
137
  - spec/spec_helper.rb
138
+ - spec/support/input.rb