opal-jquery 0.1.2 → 0.2.0

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.
data/.gitignore CHANGED
@@ -3,3 +3,4 @@
3
3
  Gemfile.lock
4
4
  build
5
5
  gh-pages
6
+ /.bundle
data/.travis.yml CHANGED
@@ -3,3 +3,5 @@ language: ruby
3
3
  rvm:
4
4
  - 1.8.7
5
5
  - 1.9.3
6
+ - 2.0.0
7
+ - 2.1.0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,38 @@
1
+ ## edge
2
+
3
+ ## 0.2.0 2014-03-12
4
+
5
+ * Add `Document.body` and `Document.head` shortcut to element instances.
6
+
7
+ * Add `Event` methods: `prevented?`, `prevent`, `stopped?` and `stop` to
8
+ replace longer javascript names.
9
+
10
+ * Add `LocalStorage` implementation.
11
+
12
+ * Fix `Element#data()` to return `nil` for an undefined data attribute
13
+ instead of null.
14
+
15
+ * Expose `#detach` method on `Element`.
16
+
17
+ ## 0.1.2 2013-12-01
18
+
19
+ * Support setting html content through `Element#html()`.
20
+
21
+ * Add `Element` methods: `#get`, `#attr` and `#prop` by aliasing them to
22
+ jquery implementations.
23
+
24
+ ## 0.1.1 2013-11-11
25
+
26
+ * Require `native` from stdlib for `HTTP` to use.
27
+
28
+ ## 0.1.0 2013-11-03
29
+
30
+ * Add `Window` and `$window` alias.
31
+
32
+ * Support `Zepto` as well as `jQuery`.
33
+
34
+ * `Event` is now a wrapper around native event from dom listeners.
35
+
1
36
  ## 0.0.9 2013-06-15
2
37
 
3
38
  * Revert earlier commit, and use `$document` as reference to jquery
data/Gemfile CHANGED
@@ -1,4 +1,7 @@
1
1
  source "https://rubygems.org"
2
2
  gemspec
3
3
 
4
+ gem 'opal'
5
+ gem 'opal-rspec', '0.3.0.beta2'
6
+
4
7
  gem 'rake'
data/Rakefile CHANGED
@@ -4,11 +4,11 @@ Bundler::GemHelper.install_tasks
4
4
 
5
5
  require 'opal/rspec/rake_task'
6
6
  Opal::RSpec::RakeTask.new(:default) do |s|
7
- s.index_path = 'spec/jquery/index.html'
7
+ s.index_path = 'spec/jquery/index.html.erb'
8
8
  end
9
9
 
10
10
  Opal::RSpec::RakeTask.new(:zepto) do |s|
11
- s.index_path = 'spec/zepto/index.html'
11
+ s.index_path = 'spec/zepto/index.html.erb'
12
12
  end
13
13
 
14
14
  desc "Build build/opal-jquery.js"
data/config.ru CHANGED
@@ -5,6 +5,6 @@ run Opal::Server.new { |s|
5
5
  s.main = 'opal/rspec/sprockets_runner'
6
6
  s.append_path 'spec'
7
7
  s.debug = false
8
- s.index_path = 'spec/jquery/index.html'
8
+ s.index_path = 'spec/jquery/index.html.erb'
9
9
  }
10
10
 
@@ -1,5 +1,5 @@
1
1
  module Opal
2
2
  module JQuery
3
- VERSION = '0.1.2'
3
+ VERSION = '0.2.0'
4
4
  end
5
5
  end
data/opal-jquery.gemspec CHANGED
@@ -15,6 +15,6 @@ Gem::Specification.new do |s|
15
15
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
16
  s.require_paths = ['lib']
17
17
 
18
- s.add_runtime_dependency 'opal', '~> 0.5.0'
19
- s.add_development_dependency 'opal-rspec'
18
+ s.add_runtime_dependency 'opal', ['>= 0.5.0', '< 1.0.0']
19
+ s.add_development_dependency 'opal-rspec', '~> 0.3.0'
20
20
  end
@@ -14,6 +14,14 @@ class << Document
14
14
  def title=(title)
15
15
  `document.title = #{title}`
16
16
  end
17
+
18
+ def head
19
+ Element.find(`document.head`)
20
+ end
21
+
22
+ def body
23
+ Element.find(`document.body`)
24
+ end
17
25
  end
18
26
 
19
27
  # TODO: this will be removed soon (here for compatibility)
@@ -1,3 +1,5 @@
1
+ require 'native'
2
+
1
3
  %x{
2
4
  var root = $opal.global, dom_class;
3
5
 
@@ -59,7 +61,7 @@ class Element < `dom_class`
59
61
  # Bridged functions - we just expose all core jquery functions as ruby
60
62
  # methods on this class.
61
63
  expose :after, :before, :parent, :parents, :prepend, :prev, :remove
62
- expose :hide, :show, :toggle, :children, :blur, :closest, :data
64
+ expose :hide, :show, :toggle, :children, :blur, :closest, :detach
63
65
  expose :focus, :find, :next, :siblings, :text, :trigger, :append
64
66
  expose :height, :width, :serialize, :is, :filter, :last, :first
65
67
  expose :wrap, :stop, :clone, :empty
@@ -92,7 +94,7 @@ class Element < `dom_class`
92
94
  def to_n
93
95
  self
94
96
  end
95
-
97
+
96
98
  def [](name)
97
99
  `self.attr(name) || ""`
98
100
  end
@@ -182,6 +184,13 @@ class Element < `dom_class`
182
184
  }
183
185
  end
184
186
 
187
+ def data(*args)
188
+ %x{
189
+ var result = self.data.apply(self, args);
190
+ return result == null ? nil : result;
191
+ }
192
+ end
193
+
185
194
  # Start a visual effect (e.g. fadeIn, fadeOut, …) passing its name.
186
195
  # Underscored style is automatically converted (e.g. `effect(:fade_in)`).
187
196
  # Also accepts additional arguments and a block for the finished callback.
@@ -197,7 +206,7 @@ class Element < `dom_class`
197
206
  end
198
207
 
199
208
  def offset
200
- Hash.from_native(`self.offset()`)
209
+ Native(`self.offset()`)
201
210
  end
202
211
 
203
212
  def each
@@ -26,32 +26,39 @@ class Event
26
26
  ##
27
27
  # Propagation
28
28
 
29
- def default_prevented?
29
+ def prevented?
30
30
  `#@native.isDefaultPrevented()`
31
31
  end
32
32
 
33
- def prevent_default
33
+ def prevent
34
34
  `#@native.preventDefault()`
35
35
  end
36
36
 
37
- def propagation_stopped?
37
+ def stopped?
38
38
  `#@native.propagationStopped()`
39
39
  end
40
40
 
41
- def stop_propagation
41
+ def stop
42
42
  `#@native.stopPropagation()`
43
43
  end
44
44
 
45
- def stop_immediate_propagation
45
+ def stop_immediate
46
46
  `#@native.stopImmediatePropagation()`
47
47
  end
48
48
 
49
49
  # Stops propagation and prevents default action.
50
50
  def kill
51
- stop_propagation
52
- prevent_default
51
+ stop
52
+ prevent
53
53
  end
54
54
 
55
+ # to be removed?
56
+ alias default_prevented? prevented?
57
+ alias prevent_default prevent
58
+ alias propagation_stopped? stopped?
59
+ alias stop_propagation stop
60
+ alias stop_immediate_propagation stop_immediate
61
+
55
62
  ##
56
63
  # Keyboard/Mouse/Touch
57
64
 
@@ -48,6 +48,7 @@ class HTTP
48
48
  settings.success = function(data, status, xhr) {
49
49
  http.body = data;
50
50
  http.xhr = xhr;
51
+ http.status_code = xhr.status;
51
52
 
52
53
  if (typeof(data) === 'object') {
53
54
  http.json = #{ JSON.from_object `data` };
@@ -59,6 +60,7 @@ class HTTP
59
60
  settings.error = function(xhr, status, error) {
60
61
  http.body = xhr.responseText;
61
62
  http.xhr = xhr;
63
+ http.status_code = xhr.status;
62
64
 
63
65
  return #{ http.fail };
64
66
  };
@@ -0,0 +1,31 @@
1
+ module DOM
2
+ class LocalStorage
3
+ def initialize(storage)
4
+ @storage = storage
5
+ end
6
+
7
+ def []=(key, value)
8
+ %x{
9
+ #@storage.setItem(key, value);
10
+ return value;
11
+ }
12
+ end
13
+
14
+ def [](key)
15
+ %x{
16
+ var value = #@storage.getItem(key);
17
+ return value == null ? nil : value;
18
+ }
19
+ end
20
+
21
+ def delete(key)
22
+ `#@storage.removeItem(key)`
23
+ end
24
+
25
+ def clear
26
+ `#@storage.clear()`
27
+ end
28
+ end
29
+ end
30
+
31
+ LocalStorage = DOM::LocalStorage.new(`window.localStorage`)
@@ -1,6 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Document do
4
+ subject { Document }
5
+
4
6
  describe "ready?" do
5
7
  it "accepts a block" do
6
8
  Document.ready? { }
@@ -21,4 +23,18 @@ describe Document do
21
23
  Document.title = old
22
24
  end
23
25
  end
26
+
27
+ describe "head" do
28
+ it "returns the head element as an Element instance" do
29
+ expect(subject.head).to be_kind_of(Element)
30
+ expect(subject.head.tag_name).to eq('head')
31
+ end
32
+ end
33
+
34
+ describe "body" do
35
+ it "returns the body element as an Element instance" do
36
+ expect(subject.body).to be_kind_of(Element)
37
+ expect(subject.body.tag_name).to eq('body')
38
+ end
39
+ end
24
40
  end
data/spec/element_spec.rb CHANGED
@@ -183,6 +183,28 @@ describe Element do
183
183
  foo.class_name.should == 'bar'
184
184
  end
185
185
  end
186
+
187
+ end
188
+
189
+ describe "Element#data" do
190
+ html <<-HTML
191
+ <div id="data-foo"></div>
192
+ <div id="data-ford" data-authur="dent"></div>
193
+ HTML
194
+
195
+ it "sets a data attribute" do
196
+ foo = Element.id('data-foo')
197
+ foo.data 'bar', 'baz'
198
+ expect(foo.data('bar')).to eq('baz')
199
+ end
200
+
201
+ it "can retrieve a data attribute" do
202
+ expect(Element.id('data-ford').data('authur')).to eq('dent')
203
+ end
204
+
205
+ it "returns nil for an undefined data attribute" do
206
+ expect(Element.id('data-ford').data('not-here')).to be_nil
207
+ end
186
208
  end
187
209
 
188
210
  describe "Element#html" do
File without changes
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+ require 'opal-jquery/local_storage'
3
+
4
+ describe LocalStorage do
5
+ before { subject.clear }
6
+
7
+ it "returns nil for undefined values" do
8
+ expect(subject['foo']).to be_nil
9
+ end
10
+
11
+ it "should be able to create items" do
12
+ subject['foo'] = 'Ford Prefect'
13
+ expect(subject['foo']).to eq('Ford Prefect')
14
+ end
15
+
16
+ it "should be able to delete items" do
17
+ subject['name'] = 'Arthur'
18
+ subject.delete 'name'
19
+
20
+ expect(subject['name']).to be_nil
21
+ end
22
+ end
File without changes
metadata CHANGED
@@ -1,43 +1,54 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-jquery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Adam Beynon
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-12-01 00:00:00.000000000 Z
12
+ date: 2014-03-12 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: opal
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - ~>
19
+ - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: 0.5.0
22
+ - - <
23
+ - !ruby/object:Gem::Version
24
+ version: 1.0.0
20
25
  type: :runtime
21
26
  prerelease: false
22
27
  version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
23
29
  requirements:
24
- - - ~>
30
+ - - ! '>='
25
31
  - !ruby/object:Gem::Version
26
32
  version: 0.5.0
33
+ - - <
34
+ - !ruby/object:Gem::Version
35
+ version: 1.0.0
27
36
  - !ruby/object:Gem::Dependency
28
37
  name: opal-rspec
29
38
  requirement: !ruby/object:Gem::Requirement
39
+ none: false
30
40
  requirements:
31
- - - '>='
41
+ - - ~>
32
42
  - !ruby/object:Gem::Version
33
- version: '0'
43
+ version: 0.3.0
34
44
  type: :development
35
45
  prerelease: false
36
46
  version_requirements: !ruby/object:Gem::Requirement
47
+ none: false
37
48
  requirements:
38
- - - '>='
49
+ - - ~>
39
50
  - !ruby/object:Gem::Version
40
- version: '0'
51
+ version: 0.3.0
41
52
  description: Opal DOM library for jquery
42
53
  email: adam.beynon@gmail.com
43
54
  executables: []
@@ -68,6 +79,7 @@ files:
68
79
  - opal/opal-jquery/event.rb
69
80
  - opal/opal-jquery/http.rb
70
81
  - opal/opal-jquery/kernel.rb
82
+ - opal/opal-jquery/local_storage.rb
71
83
  - opal/opal-jquery/window.rb
72
84
  - spec/document_spec.rb
73
85
  - spec/element/after_spec.rb
@@ -90,34 +102,36 @@ files:
90
102
  - spec/fixtures/simple.txt
91
103
  - spec/fixtures/user.json
92
104
  - spec/http_spec.rb
93
- - spec/jquery/index.html
105
+ - spec/jquery/index.html.erb
94
106
  - spec/jquery/jquery.js
95
107
  - spec/kernel_spec.rb
108
+ - spec/local_storage_spec.rb
96
109
  - spec/spec_helper.rb
97
- - spec/zepto/index.html
110
+ - spec/zepto/index.html.erb
98
111
  - spec/zepto/zepto.js
99
112
  homepage: http://opalrb.org
100
113
  licenses: []
101
- metadata: {}
102
114
  post_install_message:
103
115
  rdoc_options: []
104
116
  require_paths:
105
117
  - lib
106
118
  required_ruby_version: !ruby/object:Gem::Requirement
119
+ none: false
107
120
  requirements:
108
- - - '>='
121
+ - - ! '>='
109
122
  - !ruby/object:Gem::Version
110
123
  version: '0'
111
124
  required_rubygems_version: !ruby/object:Gem::Requirement
125
+ none: false
112
126
  requirements:
113
- - - '>='
127
+ - - ! '>='
114
128
  - !ruby/object:Gem::Version
115
129
  version: '0'
116
130
  requirements: []
117
131
  rubyforge_project:
118
- rubygems_version: 2.0.3
132
+ rubygems_version: 1.8.23
119
133
  signing_key:
120
- specification_version: 4
134
+ specification_version: 3
121
135
  summary: Opal access to jquery
122
136
  test_files:
123
137
  - spec/document_spec.rb
@@ -141,9 +155,10 @@ test_files:
141
155
  - spec/fixtures/simple.txt
142
156
  - spec/fixtures/user.json
143
157
  - spec/http_spec.rb
144
- - spec/jquery/index.html
158
+ - spec/jquery/index.html.erb
145
159
  - spec/jquery/jquery.js
146
160
  - spec/kernel_spec.rb
161
+ - spec/local_storage_spec.rb
147
162
  - spec/spec_helper.rb
148
- - spec/zepto/index.html
163
+ - spec/zepto/index.html.erb
149
164
  - spec/zepto/zepto.js
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: da6d9c3e4bac1b9222cd796fef94c76415fdaaeb
4
- data.tar.gz: ef7adcd74505352c5efacaaef72a1ce5ff89033c
5
- SHA512:
6
- metadata.gz: 49b93286fe4af94808ce543a9cf4006bf7695277b524e569a147ada0569fa870d53f323176d0b78e65f1330e56fd3d9de31e02d275c2056c483eaee24db193df
7
- data.tar.gz: 73d24b3bd5d0a792d1c1c2c331c205c3d9b092868b1508b8a063d4b88314da7868f3821f9a4b4f720ccafdd4a7c4c24e9f4002ebaa28a6beb1f259b4123dc77d