opal-jquery 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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