delayed_form_observer 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ .DS_Store
2
+ *.gem
data/.specification ADDED
@@ -0,0 +1,118 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: delayed_form_observer
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Coroutine
14
+ - Tim Lowrimore
15
+ - John Dugan
16
+ autorequire:
17
+ bindir: bin
18
+ cert_chain: []
19
+
20
+ date: 2010-07-29 00:00:00 -05:00
21
+ default_executable:
22
+ dependencies:
23
+ - !ruby/object:Gem::Dependency
24
+ name: actionpack
25
+ prerelease: false
26
+ requirement: &id001 !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ hash: 11
32
+ segments:
33
+ - 2
34
+ - 3
35
+ - 4
36
+ version: 2.3.4
37
+ type: :runtime
38
+ version_requirements: *id001
39
+ - !ruby/object:Gem::Dependency
40
+ name: activesupport
41
+ prerelease: false
42
+ requirement: &id002 !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ hash: 11
48
+ segments:
49
+ - 2
50
+ - 3
51
+ - 4
52
+ version: 2.3.4
53
+ type: :development
54
+ version_requirements: *id002
55
+ description: Delayed Form Observer provides Rails with timed form observers that do not create race conditions.
56
+ email: gems@coroutine.com
57
+ executables: []
58
+
59
+ extensions: []
60
+
61
+ extra_rdoc_files:
62
+ - README
63
+ files:
64
+ - .gitignore
65
+ - .specification
66
+ - MIT-LICENSE
67
+ - README
68
+ - Rakefile
69
+ - VERSION
70
+ - delayed_form_observer.gemspec
71
+ - generators/delayed_form_observer/delayed_form_observer_generator.rb
72
+ - generators/delayed_form_observer/templates/prototype_extension.js
73
+ - init.rb
74
+ - lib/delayed_form_observer.rb
75
+ - lib/delayed_form_observer/helpers.rb
76
+ - lib/generators/delayed_form_observer/delayed_form_observer_generator.rb
77
+ - lib/generators/delayed_form_observer/templates/prototype_extension.js
78
+ - rails/init.rb
79
+ - test/delayed_form_observer_test.rb
80
+ - test/test_helper.rb
81
+ has_rdoc: true
82
+ homepage: http://github.com/coroutine/delayed_form_observer
83
+ licenses: []
84
+
85
+ post_install_message:
86
+ rdoc_options:
87
+ - --charset=UTF-8
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ hash: 3
96
+ segments:
97
+ - 0
98
+ version: "0"
99
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ hash: 3
105
+ segments:
106
+ - 0
107
+ version: "0"
108
+ requirements: []
109
+
110
+ rubyforge_project:
111
+ rubygems_version: 1.3.7
112
+ signing_key:
113
+ specification_version: 3
114
+ summary: Delayed Form Observer provides Rails with timed form observers that do not create race conditions.
115
+ test_files:
116
+ - test/delayed_form_observer_test.rb
117
+ - test/test_helper.rb
118
+
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010 Coroutine LLC
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README ADDED
@@ -0,0 +1,13 @@
1
+ DelayedFormObserver
2
+ ===================
3
+
4
+ Introduction goes here.
5
+
6
+
7
+ Example
8
+ =======
9
+
10
+ Example goes here.
11
+
12
+
13
+ Copyright (c) 2010 [name of plugin creator], released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,50 @@
1
+ require "rake"
2
+ require "rake/testtask"
3
+ require "rake/rdoctask"
4
+ require "jeweler"
5
+
6
+
7
+ desc "Default: run tests."
8
+ task :default => [:test]
9
+
10
+
11
+ desc "Test the plugin."
12
+ Rake::TestTask.new(:test) do |t|
13
+ t.libs << "lib"
14
+ t.pattern = "test/**/*_test.rb"
15
+ t.verbose = true
16
+ end
17
+
18
+
19
+ desc "Generate documentation for the plugin."
20
+ Rake::RDocTask.new(:rdoc) do |rdoc|
21
+ rdoc.rdoc_dir = "rdoc"
22
+ rdoc.title = "delayed_form_observer"
23
+ rdoc.options << "--line-numbers --inline-source"
24
+ rdoc.rdoc_files.include("README")
25
+ rdoc.rdoc_files.include("lib/**/*.rb")
26
+ end
27
+
28
+
29
+ begin
30
+ Jeweler::Tasks.new do |gemspec|
31
+ gemspec.authors = ["Coroutine", "Tim Lowrimore", "John Dugan"]
32
+ gemspec.description = "Delayed Form Observer provides Rails with timed form observers that do not create race conditions."
33
+ gemspec.email = "gems@coroutine.com"
34
+ gemspec.homepage = "http://github.com/coroutine/delayed_form_observer"
35
+ gemspec.name = "delayed_form_observer"
36
+ gemspec.summary = "Delayed Form Observer provides Rails with timed form observers that do not create race conditions."
37
+
38
+ gemspec.add_dependency("actionpack", ">=2.3.4")
39
+ gemspec.add_development_dependency("activesupport", ">=2.3.4")
40
+
41
+ gemspec.files.include("generators/**/*", "lib/**/*")
42
+ gemspec.files.include("test/**/*.rb")
43
+ end
44
+ Jeweler::GemcutterTasks.new
45
+ rescue LoadError
46
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
47
+ end
48
+
49
+
50
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,61 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{delayed_form_observer}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Coroutine", "Tim Lowrimore", "John Dugan"]
12
+ s.date = %q{2010-07-29}
13
+ s.description = %q{Delayed Form Observer provides Rails with timed form observers that do not create race conditions.}
14
+ s.email = %q{gems@coroutine.com}
15
+ s.extra_rdoc_files = [
16
+ "README"
17
+ ]
18
+ s.files = [
19
+ ".gitignore",
20
+ ".specification",
21
+ "MIT-LICENSE",
22
+ "README",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "delayed_form_observer.gemspec",
26
+ "generators/delayed_form_observer/delayed_form_observer_generator.rb",
27
+ "generators/delayed_form_observer/templates/prototype_extension.js",
28
+ "init.rb",
29
+ "lib/delayed_form_observer.rb",
30
+ "lib/delayed_form_observer/helpers.rb",
31
+ "rails/init.rb",
32
+ "test/delayed_form_observer/helpers_test.rb",
33
+ "test/test_helper.rb"
34
+ ]
35
+ s.homepage = %q{http://github.com/coroutine/delayed_form_observer}
36
+ s.rdoc_options = ["--charset=UTF-8"]
37
+ s.require_paths = ["lib"]
38
+ s.rubygems_version = %q{1.3.7}
39
+ s.summary = %q{Delayed Form Observer provides Rails with timed form observers that do not create race conditions.}
40
+ s.test_files = [
41
+ "test/delayed_form_observer/helpers_test.rb",
42
+ "test/test_helper.rb"
43
+ ]
44
+
45
+ if s.respond_to? :specification_version then
46
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
47
+ s.specification_version = 3
48
+
49
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
+ s.add_runtime_dependency(%q<actionpack>, [">= 2.3.4"])
51
+ s.add_development_dependency(%q<activesupport>, [">= 2.3.4"])
52
+ else
53
+ s.add_dependency(%q<actionpack>, [">= 2.3.4"])
54
+ s.add_dependency(%q<activesupport>, [">= 2.3.4"])
55
+ end
56
+ else
57
+ s.add_dependency(%q<actionpack>, [">= 2.3.4"])
58
+ s.add_dependency(%q<activesupport>, [">= 2.3.4"])
59
+ end
60
+ end
61
+
@@ -0,0 +1,11 @@
1
+ class DelayedFormObserverGenerator < Rails::Generator::Base
2
+
3
+ # This method copies the Prototype extension to the public javascripts directory.
4
+ #
5
+ def manifest
6
+ record do |m|
7
+ m.file "prototype_extension.js", "public/javascripts/prototype_delayed_form_observer.js"
8
+ end
9
+ end
10
+
11
+ end
@@ -0,0 +1,20 @@
1
+ Form.DelayedObserver = Class.create(Form.Observer, {
2
+ initialize: function($super, element, frequency, callback) {
3
+ $super(element, frequency, callback);
4
+ this.invocationPending = false;
5
+ },
6
+
7
+ // Overrides Abstract.TimedObserver.execute
8
+ execute: function() {
9
+ var value = this.getValue();
10
+ if (Object.isString(this.lastValue) && Object.isString(value) ?
11
+ this.lastValue != value : String(this.lastValue) != String(value)) {
12
+ this.lastValue = value;
13
+ this.invocationPending = true;
14
+ } else if(this.invocationPending) {
15
+ this.invocationPending = false;
16
+ this.callback(this.element, value);
17
+ this.lastValue = value;
18
+ }
19
+ }
20
+ });
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require File.dirname(__FILE__) + "/rails/init.rb"
@@ -0,0 +1,16 @@
1
+ module Coroutine #:nodoc:
2
+ module ActionView #:nodoc:
3
+ module Helpers #:nodoc:
4
+ module PrototypeHelper #:nodoc:
5
+
6
+ # This method builds a delayed form observer using the exact same
7
+ # arguments as the built-in Rails helper <tt>observe_form</tt>.
8
+ #
9
+ def delayed_observe_form(form_id, options={})
10
+ build_observer "Form.DelayedObserver", form_id, options
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,10 @@
1
+ # require external gems
2
+ require "action_pack"
3
+
4
+
5
+ # require helpers
6
+ require File.dirname(__FILE__) + "/delayed_form_observer/helpers"
7
+
8
+
9
+ # add action view extensions
10
+ ActionView::Base.module_eval { include Coroutine::ActionView::Helpers::PrototypeHelper }
data/rails/init.rb ADDED
@@ -0,0 +1 @@
1
+ require "delayed_form_observer"
@@ -0,0 +1,8 @@
1
+ require "test_helper"
2
+
3
+ class HelpersTest < ActiveSupport::TestCase
4
+ # Replace this with your real tests.
5
+ test "the truth" do
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,16 @@
1
+ #----------------------------------------------------------
2
+ # Requirements
3
+ #----------------------------------------------------------
4
+
5
+ # rails stuff
6
+ require "rubygems"
7
+ require "active_support"
8
+ require "active_support/test_case"
9
+ require "action_controller"
10
+ require "action_controller/test_case"
11
+ require "action_view"
12
+ require "action_view/test_case"
13
+ require "test/unit"
14
+
15
+ # the plugin itself
16
+ require "#{File.dirname(__FILE__)}/../init"
metadata ADDED
@@ -0,0 +1,115 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: delayed_form_observer
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Coroutine
14
+ - Tim Lowrimore
15
+ - John Dugan
16
+ autorequire:
17
+ bindir: bin
18
+ cert_chain: []
19
+
20
+ date: 2010-07-29 00:00:00 -05:00
21
+ default_executable:
22
+ dependencies:
23
+ - !ruby/object:Gem::Dependency
24
+ name: actionpack
25
+ prerelease: false
26
+ requirement: &id001 !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ hash: 11
32
+ segments:
33
+ - 2
34
+ - 3
35
+ - 4
36
+ version: 2.3.4
37
+ type: :runtime
38
+ version_requirements: *id001
39
+ - !ruby/object:Gem::Dependency
40
+ name: activesupport
41
+ prerelease: false
42
+ requirement: &id002 !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ hash: 11
48
+ segments:
49
+ - 2
50
+ - 3
51
+ - 4
52
+ version: 2.3.4
53
+ type: :development
54
+ version_requirements: *id002
55
+ description: Delayed Form Observer provides Rails with timed form observers that do not create race conditions.
56
+ email: gems@coroutine.com
57
+ executables: []
58
+
59
+ extensions: []
60
+
61
+ extra_rdoc_files:
62
+ - README
63
+ files:
64
+ - .gitignore
65
+ - .specification
66
+ - MIT-LICENSE
67
+ - README
68
+ - Rakefile
69
+ - VERSION
70
+ - delayed_form_observer.gemspec
71
+ - generators/delayed_form_observer/delayed_form_observer_generator.rb
72
+ - generators/delayed_form_observer/templates/prototype_extension.js
73
+ - init.rb
74
+ - lib/delayed_form_observer.rb
75
+ - lib/delayed_form_observer/helpers.rb
76
+ - rails/init.rb
77
+ - test/delayed_form_observer/helpers_test.rb
78
+ - test/test_helper.rb
79
+ has_rdoc: true
80
+ homepage: http://github.com/coroutine/delayed_form_observer
81
+ licenses: []
82
+
83
+ post_install_message:
84
+ rdoc_options:
85
+ - --charset=UTF-8
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ hash: 3
94
+ segments:
95
+ - 0
96
+ version: "0"
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ hash: 3
103
+ segments:
104
+ - 0
105
+ version: "0"
106
+ requirements: []
107
+
108
+ rubyforge_project:
109
+ rubygems_version: 1.3.7
110
+ signing_key:
111
+ specification_version: 3
112
+ summary: Delayed Form Observer provides Rails with timed form observers that do not create race conditions.
113
+ test_files:
114
+ - test/delayed_form_observer/helpers_test.rb
115
+ - test/test_helper.rb