angular_sprinkles 0.2.0 → 0.2.1
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/VERSION +1 -1
- data/angular_sprinkles.gemspec +5 -3
- data/lib/angular_sprinkles/form_binder/base.rb +5 -3
- data/lib/angular_sprinkles/form_binder/check_box.rb +2 -8
- data/lib/angular_sprinkles/form_binder/default.rb +3 -3
- data/lib/angular_sprinkles/mixins/form_builder.rb +9 -3
- data/lib/angular_sprinkles.rb +0 -1
- data/spec/angular_sprinkles/form_binder/base_spec.rb +38 -0
- data/spec/angular_sprinkles/form_binder/check_box_spec.rb +22 -0
- data/spec/angular_sprinkles/form_binder/default_spec.rb +19 -0
- metadata +4 -2
- data/lib/angular_sprinkles/form_binder.rb +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63255ac5499bbd7a2c8e7445bbd83abde35e2b9c
|
4
|
+
data.tar.gz: c094e71015dfec90b47ff9a84bad5002b6cb19b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c037097cb261fbac5ba6cc2c566a986ceaa03374fd3ab39a66771c26409ac98923662dfd84889e7e95ed01e8523e522ab3ff7c65457881632e032c1ad0bdcc1
|
7
|
+
data.tar.gz: 83a3d681ac5ec8b42059e25be8f58e543827a46b8bfce601152af50912f357e11a187584a661f069771d847627434e1da05941e4fe80b66182bddef8af8fb5e8
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.1
|
data/angular_sprinkles.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: angular_sprinkles 0.2.
|
5
|
+
# stub: angular_sprinkles 0.2.1 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "angular_sprinkles"
|
9
|
-
s.version = "0.2.
|
9
|
+
s.version = "0.2.1"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
@@ -40,7 +40,6 @@ Gem::Specification.new do |s|
|
|
40
40
|
"lib/angular_sprinkles/directive/input.rb",
|
41
41
|
"lib/angular_sprinkles/directive/name.rb",
|
42
42
|
"lib/angular_sprinkles/engine.rb",
|
43
|
-
"lib/angular_sprinkles/form_binder.rb",
|
44
43
|
"lib/angular_sprinkles/form_binder/base.rb",
|
45
44
|
"lib/angular_sprinkles/form_binder/check_box.rb",
|
46
45
|
"lib/angular_sprinkles/form_binder/default.rb",
|
@@ -65,6 +64,9 @@ Gem::Specification.new do |s|
|
|
65
64
|
"spec/angular_sprinkles/directive/html_spec.rb",
|
66
65
|
"spec/angular_sprinkles/directive/input_spec.rb",
|
67
66
|
"spec/angular_sprinkles/directive/name_spec.rb",
|
67
|
+
"spec/angular_sprinkles/form_binder/base_spec.rb",
|
68
|
+
"spec/angular_sprinkles/form_binder/check_box_spec.rb",
|
69
|
+
"spec/angular_sprinkles/form_binder/default_spec.rb",
|
68
70
|
"spec/angular_sprinkles/key_generator_spec.rb",
|
69
71
|
"spec/angular_sprinkles/model_decorator_spec.rb",
|
70
72
|
"spec/angular_sprinkles/object_key_wrapper_spec.rb",
|
@@ -13,14 +13,16 @@ module AngularSprinkles
|
|
13
13
|
|
14
14
|
def call
|
15
15
|
# Let the original form helper raise the exception
|
16
|
-
|
16
|
+
if helper_is_going_raise_argument_error?
|
17
|
+
return @args
|
18
|
+
end
|
17
19
|
|
18
|
-
|
20
|
+
augment_args
|
19
21
|
end
|
20
22
|
|
21
23
|
private
|
22
24
|
|
23
|
-
def
|
25
|
+
def augment_args; raise NotImplementedError; end
|
24
26
|
|
25
27
|
def helper_is_going_raise_argument_error?
|
26
28
|
@args.count < required_parameters.count
|
@@ -3,15 +3,9 @@ module AngularSprinkles
|
|
3
3
|
class CheckBox < Base
|
4
4
|
private
|
5
5
|
|
6
|
-
def
|
7
|
-
binding = { 'ng-model' => @attribute_binding }
|
8
|
-
|
6
|
+
def augment_args
|
9
7
|
@args.tap do |args|
|
10
|
-
|
11
|
-
args.second.reverse_merge!(binding)
|
12
|
-
else
|
13
|
-
args.push(binding)
|
14
|
-
end
|
8
|
+
args.second.reverse_merge!({ "ng-model" => @attribute_binding })
|
15
9
|
end
|
16
10
|
end
|
17
11
|
end
|
@@ -3,13 +3,13 @@ module AngularSprinkles
|
|
3
3
|
class Default < Base
|
4
4
|
private
|
5
5
|
|
6
|
-
def
|
7
|
-
binding = {
|
6
|
+
def augment_args
|
7
|
+
binding = { "ng-model" => @attribute_binding }
|
8
8
|
|
9
9
|
@args.tap do |args|
|
10
10
|
# Assume that optional params default to {}
|
11
11
|
# This is a safe assumption for all helpers except check_box
|
12
|
-
(@method.
|
12
|
+
(@method.parameters.count - args.count).times { args.push({}) }
|
13
13
|
|
14
14
|
# The last argument is always the one where ng-model should be appended
|
15
15
|
args.last.reverse_merge!(binding)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module AngularSprinkles
|
2
2
|
module Mixins
|
3
|
-
DEFAULT_HELPERS = ActionView::Helpers::FormBuilder.field_helpers - [:label, :fields_for]
|
3
|
+
DEFAULT_HELPERS = ActionView::Helpers::FormBuilder.field_helpers - [:label, :fields_for, :check_box]
|
4
4
|
# DATE_HELPERS = [:date_select, :time_select, :datetime_select]
|
5
5
|
# SELECT_HELPERS = [:select, :collection_select, :grouped_collection_select, :time_zone_select, :collection_check_boxes, :collection_radio_buttons]
|
6
6
|
# ALL_HELPERS = [*DATE_HELPERS, *SELECT_HELPERS, *DEFAULT_HELPERS]
|
@@ -9,12 +9,18 @@ module AngularSprinkles
|
|
9
9
|
DEFAULT_HELPERS.each do |helper|
|
10
10
|
class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
|
11
11
|
def bind_#{helper}(*args, &block)
|
12
|
-
params = {
|
13
|
-
args_with_binding = AngularSprinkles::FormBinder.new(params).call
|
12
|
+
params = { method: method(:#{helper}), args: args, object: @object }
|
13
|
+
args_with_binding = AngularSprinkles::FormBinder::Default.new(params).call
|
14
14
|
#{helper}(*args_with_binding, &block)
|
15
15
|
end
|
16
16
|
RUBY_EVAL
|
17
17
|
end
|
18
|
+
|
19
|
+
def bind_check_box(*args, &block)
|
20
|
+
params = { method: method(:check_box), args: args, object: @object }
|
21
|
+
args_with_binding = AngularSprinkles::FormBinder::CheckBox.new(params).call
|
22
|
+
check_box(*args_with_binding, &block)
|
23
|
+
end
|
18
24
|
end
|
19
25
|
end
|
20
26
|
end
|
data/lib/angular_sprinkles.rb
CHANGED
@@ -9,7 +9,6 @@ require "angular_sprinkles/directive/html"
|
|
9
9
|
require "angular_sprinkles/context"
|
10
10
|
require "angular_sprinkles/counter"
|
11
11
|
require "angular_sprinkles/engine"
|
12
|
-
require "angular_sprinkles/form_binder"
|
13
12
|
require "angular_sprinkles/form_binder/base"
|
14
13
|
require "angular_sprinkles/form_binder/check_box"
|
15
14
|
require "angular_sprinkles/form_binder/default"
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AngularSprinkles::FormBinder::Base do
|
4
|
+
let(:method) { ->(name, value, *opts) {} }
|
5
|
+
let(:args) { [:attribute, {}] }
|
6
|
+
let(:attribute_binding) { double }
|
7
|
+
let(:object) { double(bind: attribute_binding) }
|
8
|
+
let(:params) { { method: method, args: args, object: object } }
|
9
|
+
|
10
|
+
subject { described_class.new(params) }
|
11
|
+
|
12
|
+
it 'raises NotImplementedError for augment_args' do
|
13
|
+
expect { subject.call }.to raise_error(NotImplementedError)
|
14
|
+
end
|
15
|
+
|
16
|
+
context "when not enough arguments are given" do
|
17
|
+
let(:args) { [:attribute] }
|
18
|
+
|
19
|
+
it "returns the args so that the original method will raise an exception" do
|
20
|
+
expect(subject.call).to eq(args)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "when augment_args is implemented by a subclass" do
|
25
|
+
let!(:duped_args) { args.dup }
|
26
|
+
|
27
|
+
before do
|
28
|
+
subject.define_singleton_method(:augment_args, -> {})
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'does not modify the original params' do
|
32
|
+
augmented_args = subject.call
|
33
|
+
|
34
|
+
expect(args).to eq(duped_args)
|
35
|
+
expect(args).not_to eq(augmented_args)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AngularSprinkles::FormBinder::CheckBox do
|
4
|
+
let(:method) { ->(name, value, *opts) {} }
|
5
|
+
let(:args) { [:attribute, {}] }
|
6
|
+
let(:attribute_binding) { double }
|
7
|
+
let(:object) { double(bind: attribute_binding) }
|
8
|
+
let(:params) { { method: method, args: args, object: object } }
|
9
|
+
|
10
|
+
it 'returns the arguments with the second one augmented' do
|
11
|
+
augmented_args = described_class.new(params).call
|
12
|
+
expect(augmented_args.second["ng-model"]).to eq(attribute_binding)
|
13
|
+
|
14
|
+
args.push(1)
|
15
|
+
augmented_args = described_class.new(params).call
|
16
|
+
expect(augmented_args.second["ng-model"]).to eq(attribute_binding)
|
17
|
+
|
18
|
+
args.push(1, 0)
|
19
|
+
augmented_args = described_class.new(params).call
|
20
|
+
expect(augmented_args.second["ng-model"]).to eq(attribute_binding)
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AngularSprinkles::FormBinder::Default do
|
4
|
+
let(:method) { ->(arg1, arg2, arg3 = {}, arg4 = {}, arg5 = {}) {} }
|
5
|
+
let(:args) { [:attribute, :something_else] }
|
6
|
+
let(:attribute_binding) { double }
|
7
|
+
let(:object) { double(bind: attribute_binding) }
|
8
|
+
let(:params) { { method: method, args: args, object: object } }
|
9
|
+
|
10
|
+
it 'returns the arguments with the second one augmented' do
|
11
|
+
augmented_args = described_class.new(params).call
|
12
|
+
|
13
|
+
expect(augmented_args[0]).to eq(:attribute)
|
14
|
+
expect(augmented_args[1]).to eq(:something_else)
|
15
|
+
expect(augmented_args[2]).to eq({})
|
16
|
+
expect(augmented_args[3]).to eq({})
|
17
|
+
expect(augmented_args[4]).to eq({ "ng-model" => attribute_binding })
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: angular_sprinkles
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gabe Scholz
|
@@ -87,7 +87,6 @@ files:
|
|
87
87
|
- lib/angular_sprinkles/directive/input.rb
|
88
88
|
- lib/angular_sprinkles/directive/name.rb
|
89
89
|
- lib/angular_sprinkles/engine.rb
|
90
|
-
- lib/angular_sprinkles/form_binder.rb
|
91
90
|
- lib/angular_sprinkles/form_binder/base.rb
|
92
91
|
- lib/angular_sprinkles/form_binder/check_box.rb
|
93
92
|
- lib/angular_sprinkles/form_binder/default.rb
|
@@ -112,6 +111,9 @@ files:
|
|
112
111
|
- spec/angular_sprinkles/directive/html_spec.rb
|
113
112
|
- spec/angular_sprinkles/directive/input_spec.rb
|
114
113
|
- spec/angular_sprinkles/directive/name_spec.rb
|
114
|
+
- spec/angular_sprinkles/form_binder/base_spec.rb
|
115
|
+
- spec/angular_sprinkles/form_binder/check_box_spec.rb
|
116
|
+
- spec/angular_sprinkles/form_binder/default_spec.rb
|
115
117
|
- spec/angular_sprinkles/key_generator_spec.rb
|
116
118
|
- spec/angular_sprinkles/model_decorator_spec.rb
|
117
119
|
- spec/angular_sprinkles/object_key_wrapper_spec.rb
|