jquery-rails-rails4 0.0.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 +7 -0
- data/.gitignore +18 -0
- data/CHANGELOG.md +276 -0
- data/CONTRIBUTING.md +36 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +47 -0
- data/LICENSE +21 -0
- data/README.md +2 -0
- data/Rakefile +48 -0
- data/app/assets/javascripts/jquery.js +9789 -0
- data/app/assets/javascripts/jquery.min.js +6 -0
- data/app/assets/javascripts/jquery.min.map +1 -0
- data/app/assets/javascripts/jquery_ujs.js +394 -0
- data/jquery-rails-rails4.gemspec +24 -0
- data/lib/generators/jquery/install/install_generator.rb +50 -0
- data/lib/jquery-rails.rb +1 -0
- data/lib/jquery/assert_select.rb +99 -0
- data/lib/jquery/rails.rb +10 -0
- data/lib/jquery/rails/engine.rb +6 -0
- data/lib/jquery/rails/railtie.rb +18 -0
- data/lib/jquery/rails/version.rb +8 -0
- metadata +98 -0
data/lib/jquery-rails.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'jquery/rails'
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
module ActionDispatch
|
|
2
|
+
module Assertions
|
|
3
|
+
module SelectorAssertions
|
|
4
|
+
# Selects content from a JQuery response. Patterned loosely on
|
|
5
|
+
# assert_select_rjs.
|
|
6
|
+
#
|
|
7
|
+
# === Narrowing down
|
|
8
|
+
#
|
|
9
|
+
# With no arguments, asserts that one or more method calls are made.
|
|
10
|
+
#
|
|
11
|
+
# Use the +method+ argument to narrow down the assertion to only
|
|
12
|
+
# statements that call that specific method.
|
|
13
|
+
#
|
|
14
|
+
# Use the +opt+ argument to narrow down the assertion to only statements
|
|
15
|
+
# that pass +opt+ as the first argument.
|
|
16
|
+
#
|
|
17
|
+
# Use the +id+ argument to narrow down the assertion to only statements
|
|
18
|
+
# that invoke methods on the result of using that identifier as a
|
|
19
|
+
# selector.
|
|
20
|
+
#
|
|
21
|
+
# === Using blocks
|
|
22
|
+
#
|
|
23
|
+
# Without a block, +assert_select_jquery_ merely asserts that the
|
|
24
|
+
# response contains one or more statements that match the conditions
|
|
25
|
+
# specified above
|
|
26
|
+
#
|
|
27
|
+
# With a block +assert_select_jquery_ also asserts that the method call
|
|
28
|
+
# passes a javascript escaped string containing HTML. All such HTML
|
|
29
|
+
# fragments are selected and passed to the block. Nested assertions are
|
|
30
|
+
# supported.
|
|
31
|
+
#
|
|
32
|
+
# === Examples
|
|
33
|
+
#
|
|
34
|
+
# # asserts that the #notice element is hidden
|
|
35
|
+
# assert_select :hide, '#notice'
|
|
36
|
+
#
|
|
37
|
+
# # asserts that the #cart element is shown with a blind parameter
|
|
38
|
+
# assert_select :show, :blind, '#cart'
|
|
39
|
+
#
|
|
40
|
+
# # asserts that #cart content contains a #current_item
|
|
41
|
+
# assert_select :html, '#cart' do
|
|
42
|
+
# assert_select '#current_item'
|
|
43
|
+
# end
|
|
44
|
+
|
|
45
|
+
PATTERN_HTML = "\"((\\\\\"|[^\"])*)\""
|
|
46
|
+
PATTERN_UNICODE_ESCAPED_CHAR = /\\u([0-9a-zA-Z]{4})/
|
|
47
|
+
|
|
48
|
+
def assert_select_jquery(*args, &block)
|
|
49
|
+
jquery_method = args.first.is_a?(Symbol) ? args.shift : nil
|
|
50
|
+
jquery_opt = args.first.is_a?(Symbol) ? args.shift : nil
|
|
51
|
+
id = args.first.is_a?(String) ? args.shift : nil
|
|
52
|
+
|
|
53
|
+
pattern = "\\.#{jquery_method || '\\w+'}\\("
|
|
54
|
+
pattern = "#{pattern}['\"]#{jquery_opt}['\"],?\\s*" if jquery_opt
|
|
55
|
+
pattern = "#{pattern}#{PATTERN_HTML}"
|
|
56
|
+
pattern = "(?:jQuery|\\$)\\(['\"]#{id}['\"]\\)#{pattern}" if id
|
|
57
|
+
|
|
58
|
+
fragments = []
|
|
59
|
+
response.body.scan(Regexp.new(pattern)).each do |match|
|
|
60
|
+
doc = HTML::Document.new(unescape_js(match.first))
|
|
61
|
+
doc.root.children.each do |child|
|
|
62
|
+
fragments.push child if child.tag?
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
if fragments.empty?
|
|
67
|
+
opts = [jquery_method, jquery_opt, id].compact
|
|
68
|
+
flunk "No JQuery call matches #{opts.inspect}"
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
if block
|
|
72
|
+
begin
|
|
73
|
+
in_scope, @selected = @selected, fragments
|
|
74
|
+
yield
|
|
75
|
+
ensure
|
|
76
|
+
@selected = in_scope
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
private
|
|
82
|
+
|
|
83
|
+
# Unescapes a JS string.
|
|
84
|
+
def unescape_js(js_string)
|
|
85
|
+
# js encodes double quotes and line breaks.
|
|
86
|
+
unescaped= js_string.gsub('\"', '"')
|
|
87
|
+
unescaped.gsub!('\\\'', "'")
|
|
88
|
+
unescaped.gsub!(/\\\//, '/')
|
|
89
|
+
unescaped.gsub!('\n', "\n")
|
|
90
|
+
unescaped.gsub!('\076', '>')
|
|
91
|
+
unescaped.gsub!('\074', '<')
|
|
92
|
+
# js encodes non-ascii characters.
|
|
93
|
+
unescaped.gsub!(PATTERN_UNICODE_ESCAPED_CHAR) {|u| [$1.hex].pack('U*')}
|
|
94
|
+
unescaped
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
data/lib/jquery/rails.rb
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
require 'jquery/assert_select' if ::Rails.env.test?
|
|
2
|
+
require 'jquery/rails/engine' if ::Rails.version >= '3.1'
|
|
3
|
+
require 'jquery/rails/railtie'
|
|
4
|
+
require 'jquery/rails/version'
|
|
5
|
+
|
|
6
|
+
module Jquery
|
|
7
|
+
module Rails4
|
|
8
|
+
PROTOTYPE_JS = %w{prototype effects dragdrop controls}
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Used to ensure that Rails 3.0.x, as well as Rails >= 3.1 with asset pipeline disabled
|
|
2
|
+
# get the minified version of the scripts included into the layout in production.
|
|
3
|
+
module Jquery
|
|
4
|
+
module Rails4
|
|
5
|
+
class Railtie < ::Rails::Railtie
|
|
6
|
+
config.before_configuration do
|
|
7
|
+
if config.action_view.javascript_expansions
|
|
8
|
+
jq_defaults = ::Rails.env.production? || ::Rails.env.test? ? %w(jquery.min) : %w(jquery)
|
|
9
|
+
|
|
10
|
+
# Merge the jQuery scripts, remove the Prototype defaults and finally add 'jquery_ujs'
|
|
11
|
+
# at the end, because load order is important
|
|
12
|
+
config.action_view.javascript_expansions[:defaults] -= PROTOTYPE_JS + ['rails']
|
|
13
|
+
config.action_view.javascript_expansions[:defaults] |= jq_defaults + ['jquery_ujs']
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: jquery-rails-rails4
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Dancy Dong
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2013-08-13 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: railties
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ~>
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 4.0.0
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ~>
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 4.0.0
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: thor
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - '>='
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0.14'
|
|
34
|
+
- - <
|
|
35
|
+
- !ruby/object:Gem::Version
|
|
36
|
+
version: '2.0'
|
|
37
|
+
type: :runtime
|
|
38
|
+
prerelease: false
|
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
40
|
+
requirements:
|
|
41
|
+
- - '>='
|
|
42
|
+
- !ruby/object:Gem::Version
|
|
43
|
+
version: '0.14'
|
|
44
|
+
- - <
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '2.0'
|
|
47
|
+
description: This gem integrates Juqery Rails 1.5.7 with the Rails 4.0 asset pipeline.
|
|
48
|
+
email:
|
|
49
|
+
- dancy@51shepherd.com
|
|
50
|
+
executables: []
|
|
51
|
+
extensions: []
|
|
52
|
+
extra_rdoc_files: []
|
|
53
|
+
files:
|
|
54
|
+
- .gitignore
|
|
55
|
+
- CHANGELOG.md
|
|
56
|
+
- CONTRIBUTING.md
|
|
57
|
+
- Gemfile
|
|
58
|
+
- Gemfile.lock
|
|
59
|
+
- LICENSE
|
|
60
|
+
- README.md
|
|
61
|
+
- Rakefile
|
|
62
|
+
- app/assets/javascripts/jquery.js
|
|
63
|
+
- app/assets/javascripts/jquery.min.js
|
|
64
|
+
- app/assets/javascripts/jquery.min.map
|
|
65
|
+
- app/assets/javascripts/jquery_ujs.js
|
|
66
|
+
- jquery-rails-rails4.gemspec
|
|
67
|
+
- lib/generators/jquery/install/install_generator.rb
|
|
68
|
+
- lib/jquery-rails.rb
|
|
69
|
+
- lib/jquery/assert_select.rb
|
|
70
|
+
- lib/jquery/rails.rb
|
|
71
|
+
- lib/jquery/rails/engine.rb
|
|
72
|
+
- lib/jquery/rails/railtie.rb
|
|
73
|
+
- lib/jquery/rails/version.rb
|
|
74
|
+
homepage: https://github.com/Dancydonbg/jquery-rails-rails4
|
|
75
|
+
licenses:
|
|
76
|
+
- MIT
|
|
77
|
+
metadata: {}
|
|
78
|
+
post_install_message:
|
|
79
|
+
rdoc_options: []
|
|
80
|
+
require_paths:
|
|
81
|
+
- lib
|
|
82
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
83
|
+
requirements:
|
|
84
|
+
- - '>='
|
|
85
|
+
- !ruby/object:Gem::Version
|
|
86
|
+
version: '0'
|
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
|
+
requirements:
|
|
89
|
+
- - '>='
|
|
90
|
+
- !ruby/object:Gem::Version
|
|
91
|
+
version: 1.3.6
|
|
92
|
+
requirements: []
|
|
93
|
+
rubyforge_project: jquery-rails-rails4
|
|
94
|
+
rubygems_version: 2.0.3
|
|
95
|
+
signing_key:
|
|
96
|
+
specification_version: 4
|
|
97
|
+
summary: Integration of Juqery Rails 1.5.7 with the Rails 4.0 asset pipeline
|
|
98
|
+
test_files: []
|