angular_sprinkles 0.2.4 → 0.2.5

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: 9df904526cea92e002bf76f1e6181fc97c7e70d1
4
- data.tar.gz: 6e26a5106fd937e8be03cf942add2250a2d2a628
3
+ metadata.gz: af0082e8d01fae6f825eee0706dbe3f167f37e2b
4
+ data.tar.gz: f7c17e63a24e05ab47dfe98a9383bfde59afe6dc
5
5
  SHA512:
6
- metadata.gz: c0f02d612b34ef0bd7c720724d4a19dda5dd9cdffef1ca284741adcd6733467c50ade19d48f78ed6595d2b1f383483616225bc38885f21277e0e76c9d8c057e6
7
- data.tar.gz: d6282655d155e855887d24dbd8c6f1667ca481ccef25275d988d66c901532d814185dea98798f25f5cfdac21bb5169e9ee63362efd0025cde77e452b9c5f27e3
6
+ metadata.gz: d14174b5411a86e594999018de7031e87d018c9987b16891866d32d1fa61c8937aadac274d556217140af4f87a8825e3727b940a1a5fb74b7f7c6cac50265bad
7
+ data.tar.gz: a34110ecbe68be5321eb7c3f8b8b44e4f7361f1c3df6330e8357ba8180ebaf609fe838ce72707c8dccd958b1efc4d48500cc3433c84d098ac20adb721806ba23
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.4
1
+ 0.2.5
@@ -2,16 +2,16 @@
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.4 ruby lib
5
+ # stub: angular_sprinkles 0.2.5 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "angular_sprinkles"
9
- s.version = "0.2.4"
9
+ s.version = "0.2.5"
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"]
13
13
  s.authors = ["Gabe Scholz"]
14
- s.date = "2014-10-10"
14
+ s.date = "2014-10-13"
15
15
  s.description = "Add a few sprinkles of AngularJS to your Rails App"
16
16
  s.email = "gabe@brewhouse.io"
17
17
  s.extra_rdoc_files = [
@@ -44,6 +44,7 @@ Gem::Specification.new do |s|
44
44
  "lib/angular_sprinkles/form_binder/check_box.rb",
45
45
  "lib/angular_sprinkles/form_binder/default.rb",
46
46
  "lib/angular_sprinkles/helpers.rb",
47
+ "lib/angular_sprinkles/helpers/bind_form_for_helper.rb",
47
48
  "lib/angular_sprinkles/helpers/bind_helper.rb",
48
49
  "lib/angular_sprinkles/helpers/directive_helper.rb",
49
50
  "lib/angular_sprinkles/helpers/service_helper.rb",
@@ -86,6 +87,7 @@ Gem::Specification.new do |s|
86
87
  "spec/dummy/app/models/concerns/.keep",
87
88
  "spec/dummy/app/models/test_model.rb",
88
89
  "spec/dummy/app/views/layouts/application.html.erb",
90
+ "spec/dummy/app/views/test/bind_form_for_helper.html.erb",
89
91
  "spec/dummy/app/views/test/form_helpers.html.erb",
90
92
  "spec/dummy/app/views/test/javascript_bindings.html.erb",
91
93
  "spec/dummy/bin/bundle",
@@ -118,6 +120,7 @@ Gem::Specification.new do |s|
118
120
  "spec/dummy/public/422.html",
119
121
  "spec/dummy/public/500.html",
120
122
  "spec/dummy/public/favicon.ico",
123
+ "spec/features/bind_form_for_helper_spec.rb",
121
124
  "spec/features/form_helpers_spec.rb",
122
125
  "spec/features/javascript_bindings_spec.rb",
123
126
  "spec/rails_helper.rb",
@@ -12,6 +12,7 @@ require "angular_sprinkles/engine"
12
12
  require "angular_sprinkles/form_binder/base"
13
13
  require "angular_sprinkles/form_binder/check_box"
14
14
  require "angular_sprinkles/form_binder/default"
15
+ require "angular_sprinkles/helpers/bind_form_for_helper"
15
16
  require "angular_sprinkles/helpers/bind_helper"
16
17
  require "angular_sprinkles/helpers/directive_helper"
17
18
  require "angular_sprinkles/helpers/service_helper"
@@ -1,5 +1,6 @@
1
1
  module AngularSprinkles
2
2
  module Helpers
3
+ include BindFormForHelper
3
4
  include BindHelper
4
5
  include DirectiveHelper
5
6
  include ServiceHelper
@@ -0,0 +1,38 @@
1
+ module AngularSprinkles
2
+ module Helpers
3
+ module BindFormForHelper
4
+
5
+ ##
6
+ # bind_form_for
7
+ #
8
+ # Wraps the form_for helper so that form submission can be bound
9
+ # an Angular service function. Accepts an additional argument which
10
+ # is the name of a service. Two arguments are passed to the service:
11
+ # the object and the Angular representation of the form.
12
+ def bind_form_for(record, submit_callback, options = {}, &block)
13
+ form_name = ObjectKeyWrapper.new(
14
+ @_sprinkles.key_generator.call(AngularSprinkles::Form.new),
15
+ JavaScript::NoOp
16
+ )
17
+
18
+ html_options = {
19
+ 'name' => form_name,
20
+ 'ng-submit' => service(submit_callback, record.bind, form_name)
21
+ }.merge(options[:html] || {})
22
+
23
+ augmented_options = options.merge(url: "", method: "", html: html_options)
24
+
25
+ form_for(record, augmented_options, &block)
26
+ end
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ ##
33
+ # AngularSprinkles::Form
34
+ #
35
+ # An empty placeholder class to be used by KeyGenerator when adding
36
+ # the form_name attribute in AngularSprinkles::Helpers::BindFormForHelper
37
+ class Form; end
38
+ end
@@ -73,5 +73,9 @@ module AngularSprinkles
73
73
  BindVariable = ->(*args) do
74
74
  [CONTROLLER_NAME, *args].flatten.compact.join('.')
75
75
  end
76
+
77
+ NoOp = ->(*args) do
78
+ args.join('.')
79
+ end
76
80
  end
77
81
  end
@@ -5,7 +5,7 @@ module AngularSprinkles
5
5
  end
6
6
 
7
7
  def call(object)
8
- klass = object.class
8
+ klass = "#{object.class}".gsub("::", "__")
9
9
  count = @counter.inc(klass)
10
10
 
11
11
  "#{klass}_#{count}"
@@ -3,11 +3,15 @@ require 'spec_helper'
3
3
  describe AngularSprinkles::KeyGenerator do
4
4
  let(:counter) { double(inc: inc) }
5
5
  let(:inc) { 1 }
6
- let(:object) { double }
6
+ let(:object) { double(class: AngularSprinkles) }
7
7
 
8
8
  subject { described_class.new(counter: counter) }
9
9
 
10
- it 'returns a suitable variable name' do
10
+ it "returns a suitable variable name" do
11
11
  expect(subject.call(object)).to eq("#{object.class}_#{inc}")
12
12
  end
13
+
14
+ it "it substitutes :: for __ in nested classes" do
15
+ expect(subject.call(subject)).to eq("AngularSprinkles__KeyGenerator_#{inc}")
16
+ end
13
17
  end
@@ -19,6 +19,12 @@ sprinkles.service('helloWorld', function () {
19
19
  };
20
20
  });
21
21
 
22
+ sprinkles.service('formSubmitted', function () {
23
+ return function (model, form) {
24
+ return model.life = '42';
25
+ };
26
+ });
27
+
22
28
  sprinkles.directive('nestedDirective', function () {
23
29
  return {
24
30
  scope: {
@@ -3,6 +3,7 @@ class TestController < ApplicationController
3
3
 
4
4
  def javascript_bindings; end
5
5
  def form_helpers; end
6
+ def bind_form_for_helper; end
6
7
 
7
8
  def set_model
8
9
  @model = bindable(TestModel.new(name: params[:name]))
@@ -0,0 +1,5 @@
1
+ <%= bind_form_for @model, :form_submitted do |f| %>
2
+ <%= f.submit 'Submit' %>
3
+ <% end %>
4
+
5
+ <div ng-bind="<%= @model.bind(:life) %>"></div>
@@ -3,6 +3,7 @@ Rails.application.routes.draw do
3
3
 
4
4
  get 'javascript_bindings', to: 'test#javascript_bindings'
5
5
  get 'form_helpers', to: 'test#form_helpers'
6
+ get 'bind_form_for_helper', to: 'test#bind_form_for_helper'
6
7
  # The priority is based upon order of creation: first created -> highest priority.
7
8
  # See how all your routes lay out with "rake routes".
8
9
 
@@ -0,0 +1,13 @@
1
+ require "rails_helper"
2
+
3
+ feature "bind_form_for_helper", js: true do
4
+ before do
5
+ visit bind_form_for_helper_path
6
+ end
7
+
8
+ it 'renders all of the helpers with ng-model' do
9
+ expect(page).not_to have_content(42)
10
+ click_button "Submit"
11
+ expect(page).to have_content(42)
12
+ end
13
+ end
@@ -1,8 +1,5 @@
1
1
  require "rails_helper"
2
2
 
3
- # javascript specs are slow, so test everything at
4
- # once on a single page
5
-
6
3
  feature "form_helpers", js: true do
7
4
  let(:name) { 'name' }
8
5
  let(:new_name) { 'namenamename?' }
@@ -1,8 +1,5 @@
1
1
  require "rails_helper"
2
2
 
3
- # javascript specs are slow, so test everything at
4
- # once on a single page
5
-
6
3
  feature "javascript_bindings", js: true do
7
4
  let(:name) { 'name' }
8
5
  let(:new_name) { 'namenamename?' }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: angular_sprinkles
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabe Scholz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-10 00:00:00.000000000 Z
11
+ date: 2014-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -91,6 +91,7 @@ files:
91
91
  - lib/angular_sprinkles/form_binder/check_box.rb
92
92
  - lib/angular_sprinkles/form_binder/default.rb
93
93
  - lib/angular_sprinkles/helpers.rb
94
+ - lib/angular_sprinkles/helpers/bind_form_for_helper.rb
94
95
  - lib/angular_sprinkles/helpers/bind_helper.rb
95
96
  - lib/angular_sprinkles/helpers/directive_helper.rb
96
97
  - lib/angular_sprinkles/helpers/service_helper.rb
@@ -133,6 +134,7 @@ files:
133
134
  - spec/dummy/app/models/concerns/.keep
134
135
  - spec/dummy/app/models/test_model.rb
135
136
  - spec/dummy/app/views/layouts/application.html.erb
137
+ - spec/dummy/app/views/test/bind_form_for_helper.html.erb
136
138
  - spec/dummy/app/views/test/form_helpers.html.erb
137
139
  - spec/dummy/app/views/test/javascript_bindings.html.erb
138
140
  - spec/dummy/bin/bundle
@@ -165,6 +167,7 @@ files:
165
167
  - spec/dummy/public/422.html
166
168
  - spec/dummy/public/500.html
167
169
  - spec/dummy/public/favicon.ico
170
+ - spec/features/bind_form_for_helper_spec.rb
168
171
  - spec/features/form_helpers_spec.rb
169
172
  - spec/features/javascript_bindings_spec.rb
170
173
  - spec/rails_helper.rb