opal-jquery 0.0.7 → 0.0.8
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/CHANGELOG.md +6 -0
- data/Gemfile +0 -1
- data/config.ru +5 -6
- data/lib/opal-jquery.rb +4 -1
- data/lib/{opal/jquery → opal-jquery}/version.rb +1 -1
- data/opal-jquery.gemspec +3 -2
- data/opal/opal-jquery.rb +5 -0
- data/opal/opal-jquery/document.rb +28 -0
- data/{lib/assets/javascripts/opal/jquery → opal/opal-jquery}/element.rb +66 -12
- data/{lib/assets/javascripts/opal/jquery → opal/opal-jquery}/event.rb +3 -1
- data/{lib/assets/javascripts/opal/jquery → opal/opal-jquery}/http.rb +23 -6
- data/{lib/assets/javascripts/opal/jquery → opal/opal-jquery}/kernel.rb +0 -0
- data/spec/document_spec.rb +5 -5
- data/spec/http_spec.rb +6 -6
- metadata +30 -19
- data/lib/assets/javascripts/opal-jquery.rb +0 -1
- data/lib/assets/javascripts/opal/jquery.rb +0 -6
- data/lib/assets/javascripts/opal/jquery/document.rb +0 -20
- data/lib/assets/javascripts/opal/jquery/local_storage.rb +0 -25
- data/lib/opal/jquery.rb +0 -5
- data/spec/local_storage_spec.rb +0 -53
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/config.ru
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
require 'bundler'
|
2
2
|
Bundler.require
|
3
3
|
|
4
|
-
|
4
|
+
run Opal::Server.new { |s|
|
5
|
+
s.main = 'opal/spec/sprockets_runner'
|
6
|
+
s.append_path 'spec'
|
7
|
+
s.debug = false
|
8
|
+
}
|
5
9
|
|
6
|
-
# Run in non-debug mode (faster, all files concatenated into 1 file)
|
7
|
-
run Opal::Spec::Server.new(false)
|
8
|
-
|
9
|
-
# Run in debug mode - all files loaded seperately, but slower
|
10
|
-
# run Opal::Spec::Server.new
|
data/lib/opal-jquery.rb
CHANGED
data/opal-jquery.gemspec
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
require File.expand_path('../lib/opal
|
2
|
+
require File.expand_path('../lib/opal-jquery/version', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = 'opal-jquery'
|
@@ -15,5 +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', '
|
18
|
+
s.add_runtime_dependency 'opal', '>= 0.3.43'
|
19
|
+
s.add_development_dependency 'opal-spec', '>= 0.2.15'
|
19
20
|
end
|
data/opal/opal-jquery.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'opal-jquery/element'
|
2
|
+
|
3
|
+
$document = Element.find(`document`)
|
4
|
+
|
5
|
+
class << $document
|
6
|
+
def ready?(&block)
|
7
|
+
%x{
|
8
|
+
if (block === nil) {
|
9
|
+
return nil;
|
10
|
+
}
|
11
|
+
|
12
|
+
$(block);
|
13
|
+
return nil;
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
def title
|
18
|
+
`document.title`
|
19
|
+
end
|
20
|
+
|
21
|
+
def title=(title)
|
22
|
+
`document.title = title`
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Document is depreceated, use $document instead.
|
27
|
+
Document = $document
|
28
|
+
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# Instances of Element are just jquery instances, and wrap 1 or more
|
2
2
|
# native dom elements.
|
3
3
|
class Element < `jQuery`
|
4
|
+
include Enumerable
|
5
|
+
|
4
6
|
def self.find(selector)
|
5
7
|
`$(#{selector})`
|
6
8
|
end
|
@@ -39,6 +41,10 @@ class Element < `jQuery`
|
|
39
41
|
expose :after, :before, :parent, :parents, :prepend, :prev, :remove
|
40
42
|
expose :hide, :show, :toggle, :children, :blur, :closest, :data
|
41
43
|
expose :focus, :find, :next, :siblings, :text, :trigger, :append
|
44
|
+
expose :height, :width, :serialize, :is, :filter, :last, :first
|
45
|
+
expose :wrap, :stop, :clone
|
46
|
+
|
47
|
+
attr_reader :selector
|
42
48
|
|
43
49
|
alias_native :[]=, :attr
|
44
50
|
alias_native :add_class, :addClass
|
@@ -50,6 +56,14 @@ class Element < `jQuery`
|
|
50
56
|
alias_native :text=, :text
|
51
57
|
alias_native :toggle_class, :toggleClass
|
52
58
|
alias_native :value=, :val
|
59
|
+
alias_native :scroll_left=, :scrollLeft
|
60
|
+
alias_native :scroll_left, :scrollLeft
|
61
|
+
alias_native :remove_attribute, :removeAttr
|
62
|
+
alias_native :slide_down, :slideDown
|
63
|
+
alias_native :slide_up, :slideUp
|
64
|
+
alias_native :slide_toggle, :slideToggle
|
65
|
+
alias_native :fade_toggle, :fadeToggle
|
66
|
+
|
53
67
|
|
54
68
|
# Missing methods are assumed to be jquery plugins. These are called by
|
55
69
|
# the given symbol name.
|
@@ -59,7 +73,7 @@ class Element < `jQuery`
|
|
59
73
|
return #{self}[#{symbol}].apply(#{self}, args);
|
60
74
|
}
|
61
75
|
}
|
62
|
-
|
76
|
+
|
63
77
|
super
|
64
78
|
end
|
65
79
|
|
@@ -67,8 +81,16 @@ class Element < `jQuery`
|
|
67
81
|
`#{self}.attr(name) || ""`
|
68
82
|
end
|
69
83
|
|
84
|
+
def add_attribute name
|
85
|
+
self[name] = ''
|
86
|
+
end
|
87
|
+
|
88
|
+
def has_attribute? name
|
89
|
+
`!!#{self}.attr(name)`
|
90
|
+
end
|
91
|
+
|
70
92
|
alias << append
|
71
|
-
|
93
|
+
|
72
94
|
def append_to_body
|
73
95
|
`#{self}.appendTo(document.body)`
|
74
96
|
end
|
@@ -162,13 +184,13 @@ class Element < `jQuery`
|
|
162
184
|
# @return [String, DOM] returns css value or the receiver
|
163
185
|
def css(name, value=nil)
|
164
186
|
if value.nil? && name.is_a?(String)
|
165
|
-
return
|
187
|
+
return `#{self}.css(name)`
|
166
188
|
else
|
167
|
-
name.is_a?(Hash) ?
|
189
|
+
name.is_a?(Hash) ? `#{self}.css(#{name.to_native})` : `#{self}.css(name, value)`
|
168
190
|
end
|
169
191
|
self
|
170
192
|
end
|
171
|
-
|
193
|
+
|
172
194
|
# Set css values over time to create animations. The first parameter is a
|
173
195
|
# set of css properties and values to animate to. The first parameter
|
174
196
|
# also accepts a special :speed value to set animation speed. If a block
|
@@ -181,16 +203,34 @@ class Element < `jQuery`
|
|
181
203
|
# bar.animate :top => "30px", :speed => 100 do
|
182
204
|
# bar.add_class "finished"
|
183
205
|
# end
|
184
|
-
#
|
206
|
+
#
|
185
207
|
# @param [Hash] css properties and and values. Also accepts speed param.
|
186
208
|
# @return [DOM] receiver
|
187
209
|
def animate(params, &block)
|
188
210
|
speed = params.has_key?(:speed) ? params.delete(:speed) : 400
|
189
211
|
%x{
|
190
|
-
|
212
|
+
#{self}.animate(#{params.to_native}, #{speed}, function() {
|
191
213
|
#{block.call if block_given?}
|
192
214
|
})
|
193
|
-
}
|
215
|
+
}
|
216
|
+
end
|
217
|
+
|
218
|
+
# Start a visual effect (e.g. fadeIn, fadeOut, …) passing its name.
|
219
|
+
# Underscored style is automatically converted (e.g. `effect(:fade_in)`).
|
220
|
+
# Also accepts additional arguments and a block for the finished callback.
|
221
|
+
def effect(name, *args, &block)
|
222
|
+
name = name.gsub(/_\w/) { |match| match[1].upcase }
|
223
|
+
args = args.map { |a| a.to_native if a.respond_to? :to_native }.compact
|
224
|
+
args << `function() { #{block.call if block_given?} }`
|
225
|
+
`#{self}[#{name}].apply(#{self}, #{args})`
|
226
|
+
end
|
227
|
+
|
228
|
+
def visible?
|
229
|
+
`#{self}.is(':visible')`
|
230
|
+
end
|
231
|
+
|
232
|
+
def offset
|
233
|
+
Hash.from_native(`#{self}.offset()`)
|
194
234
|
end
|
195
235
|
|
196
236
|
# Yields each element in #{self} collection in turn. The yielded element
|
@@ -208,11 +248,11 @@ class Element < `jQuery`
|
|
208
248
|
self
|
209
249
|
end
|
210
250
|
|
211
|
-
# return an opal array mapped with block yielded for any element
|
251
|
+
# return an opal array mapped with block yielded for any element
|
212
252
|
#
|
213
253
|
# @example
|
214
254
|
#
|
215
|
-
# list = Document.find('table.players td.surname').map {|el| el.html }
|
255
|
+
# list = Document.find('table.players td.surname').map {|el| el.html }
|
216
256
|
#
|
217
257
|
# @return an Array
|
218
258
|
def map
|
@@ -259,6 +299,10 @@ class Element < `jQuery`
|
|
259
299
|
}
|
260
300
|
end
|
261
301
|
|
302
|
+
def tag_name
|
303
|
+
`#{self}.length > 0 ? #{self}[0].tagName.toLowerCase() : #{nil}`
|
304
|
+
end
|
305
|
+
|
262
306
|
def inspect
|
263
307
|
%x{
|
264
308
|
var val, el, str, result = [];
|
@@ -281,13 +325,23 @@ class Element < `jQuery`
|
|
281
325
|
`#{self}.length`
|
282
326
|
end
|
283
327
|
|
328
|
+
def any?
|
329
|
+
`#{self}.length > 0`
|
330
|
+
end
|
331
|
+
|
332
|
+
def empty?
|
333
|
+
`#{self}.length === 0`
|
334
|
+
end
|
335
|
+
|
336
|
+
alias empty? none?
|
337
|
+
|
284
338
|
def on(name, sel = nil, &block)
|
285
339
|
`sel === nil ? #{self}.on(name, block) : #{self}.on(name, sel, block)`
|
286
340
|
block
|
287
341
|
end
|
288
342
|
|
289
|
-
def off(name, sel = nil
|
290
|
-
`
|
343
|
+
def off(name, sel, block = nil)
|
344
|
+
`block === nil ? #{self}.off(name, sel) : #{self}.off(name, sel, block)`
|
291
345
|
end
|
292
346
|
|
293
347
|
alias size length
|
@@ -5,7 +5,7 @@
|
|
5
5
|
# end
|
6
6
|
#
|
7
7
|
class HTTP
|
8
|
-
attr_reader :body, :error_message, :method, :status_code, :url
|
8
|
+
attr_reader :body, :error_message, :method, :status_code, :url, :xhr
|
9
9
|
|
10
10
|
def self.get(url, opts={}, &block)
|
11
11
|
self.new(url, :GET, opts, block).send!
|
@@ -19,10 +19,15 @@ class HTTP
|
|
19
19
|
self.new(url, :PUT, opts, block).send!
|
20
20
|
end
|
21
21
|
|
22
|
+
def self.delete(url, opts={}, &block)
|
23
|
+
self.new(url, :DELETE, opts, block).send!
|
24
|
+
end
|
25
|
+
|
22
26
|
def initialize(url, method, options, handler=nil)
|
23
27
|
@url = url
|
24
28
|
@method = method
|
25
29
|
@ok = true
|
30
|
+
@xhr = nil
|
26
31
|
http = self
|
27
32
|
payload = options.delete :payload
|
28
33
|
settings = options.to_native
|
@@ -43,17 +48,21 @@ class HTTP
|
|
43
48
|
settings.url = url;
|
44
49
|
settings.type = method;
|
45
50
|
|
46
|
-
settings.success = function(
|
47
|
-
http.body =
|
51
|
+
settings.success = function(data, status, xhr) {
|
52
|
+
http.body = data;
|
53
|
+
http.xhr = xhr;
|
48
54
|
|
49
|
-
if (typeof(
|
50
|
-
http.json = #{ JSON.from_object `
|
55
|
+
if (typeof(data) === 'object') {
|
56
|
+
http.json = #{ JSON.from_object `data` };
|
51
57
|
}
|
52
58
|
|
53
59
|
return #{ http.succeed };
|
54
60
|
};
|
55
61
|
|
56
|
-
settings.error = function(xhr,
|
62
|
+
settings.error = function(xhr, status, error) {
|
63
|
+
http.body = xhr.responseText;
|
64
|
+
http.xhr = xhr;
|
65
|
+
|
57
66
|
return #{ http.fail };
|
58
67
|
};
|
59
68
|
}
|
@@ -118,4 +127,12 @@ class HTTP
|
|
118
127
|
def succeed
|
119
128
|
@callback.call self if @callback
|
120
129
|
end
|
130
|
+
|
131
|
+
# Returns the value of the specified response header.
|
132
|
+
#
|
133
|
+
# @param [String] name of the header to get
|
134
|
+
# @return [String] value of the header
|
135
|
+
def get_header(key)
|
136
|
+
`#{xhr}.getResponseHeader(#{key});`
|
137
|
+
end
|
121
138
|
end
|
File without changes
|
data/spec/document_spec.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe $document do
|
4
4
|
describe '.title and .title=' do
|
5
5
|
it 'sets/gets the page title' do
|
6
|
-
current =
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
current = $document.title
|
7
|
+
$document.title = 'hello from opal'
|
8
|
+
$document.title.should == 'hello from opal'
|
9
|
+
$document.title = current
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
data/spec/http_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require "spec_helper"
|
|
3
3
|
describe HTTP do
|
4
4
|
describe '#body' do
|
5
5
|
async 'returns the response body as a string' do
|
6
|
-
HTTP.get('data/simple.txt') do |response|
|
6
|
+
HTTP.get('spec/data/simple.txt') do |response|
|
7
7
|
run_async { response.body.should == "hey" }
|
8
8
|
end
|
9
9
|
end
|
@@ -11,7 +11,7 @@ describe HTTP do
|
|
11
11
|
|
12
12
|
describe '#callback' do
|
13
13
|
async 'can add a success callback after the request is sent' do
|
14
|
-
http = HTTP.get('data/simple.txt')
|
14
|
+
http = HTTP.get('spec/data/simple.txt')
|
15
15
|
http.callback do |response|
|
16
16
|
run_async { response.ok?.should be_true }
|
17
17
|
end
|
@@ -20,7 +20,7 @@ describe HTTP do
|
|
20
20
|
|
21
21
|
describe '#callback' do
|
22
22
|
async 'can add a failure callback after the request is sent' do
|
23
|
-
http = HTTP.get('data/bad_url.txt')
|
23
|
+
http = HTTP.get('spec/data/bad_url.txt')
|
24
24
|
http.errback do |response|
|
25
25
|
run_async { response.ok?.should be_false }
|
26
26
|
end
|
@@ -29,7 +29,7 @@ describe HTTP do
|
|
29
29
|
|
30
30
|
describe '#json' do
|
31
31
|
async 'returns the json converted into native ruby objects' do
|
32
|
-
HTTP.get('data/user.json') do |response|
|
32
|
+
HTTP.get('spec/data/user.json') do |response|
|
33
33
|
run_async { response.json.should == { 'name' => 'Adam', 'age' => 26 } }
|
34
34
|
end
|
35
35
|
end
|
@@ -37,13 +37,13 @@ describe HTTP do
|
|
37
37
|
|
38
38
|
describe '#ok?' do
|
39
39
|
async 'returns true when the request was a sucess' do
|
40
|
-
HTTP.get('data/simple.txt') do |response|
|
40
|
+
HTTP.get('spec/data/simple.txt') do |response|
|
41
41
|
run_async { response.ok?.should be_true }
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
45
|
async 'returns false when the request failed' do
|
46
|
-
HTTP.get('data/non_existant.txt') do |response|
|
46
|
+
HTTP.get('spec/data/non_existant.txt') do |response|
|
47
47
|
run_async { response.ok?.should be_false }
|
48
48
|
end
|
49
49
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opal-jquery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,24 +9,40 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02
|
12
|
+
date: 2013-05-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: opal
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.3.
|
21
|
+
version: 0.3.43
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.3.
|
29
|
+
version: 0.3.43
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: opal-spec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.2.15
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.2.15
|
30
46
|
description: Opal DOM library for jquery
|
31
47
|
email: adam.beynon@gmail.com
|
32
48
|
executables: []
|
@@ -41,18 +57,15 @@ files:
|
|
41
57
|
- README.md
|
42
58
|
- Rakefile
|
43
59
|
- config.ru
|
44
|
-
- lib/assets/javascripts/opal-jquery.rb
|
45
|
-
- lib/assets/javascripts/opal/jquery.rb
|
46
|
-
- lib/assets/javascripts/opal/jquery/document.rb
|
47
|
-
- lib/assets/javascripts/opal/jquery/element.rb
|
48
|
-
- lib/assets/javascripts/opal/jquery/event.rb
|
49
|
-
- lib/assets/javascripts/opal/jquery/http.rb
|
50
|
-
- lib/assets/javascripts/opal/jquery/kernel.rb
|
51
|
-
- lib/assets/javascripts/opal/jquery/local_storage.rb
|
52
60
|
- lib/opal-jquery.rb
|
53
|
-
- lib/opal/
|
54
|
-
- lib/opal/jquery/version.rb
|
61
|
+
- lib/opal-jquery/version.rb
|
55
62
|
- opal-jquery.gemspec
|
63
|
+
- opal/opal-jquery.rb
|
64
|
+
- opal/opal-jquery/document.rb
|
65
|
+
- opal/opal-jquery/element.rb
|
66
|
+
- opal/opal-jquery/event.rb
|
67
|
+
- opal/opal-jquery/http.rb
|
68
|
+
- opal/opal-jquery/kernel.rb
|
56
69
|
- spec/data/simple.txt
|
57
70
|
- spec/data/user.json
|
58
71
|
- spec/document_spec.rb
|
@@ -75,7 +88,6 @@ files:
|
|
75
88
|
- spec/event_spec.rb
|
76
89
|
- spec/http_spec.rb
|
77
90
|
- spec/jquery.js
|
78
|
-
- spec/local_storage_spec.rb
|
79
91
|
- spec/spec_helper.rb
|
80
92
|
homepage: http://opalrb.org
|
81
93
|
licenses: []
|
@@ -97,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
109
|
version: '0'
|
98
110
|
requirements: []
|
99
111
|
rubyforge_project:
|
100
|
-
rubygems_version: 1.8.
|
112
|
+
rubygems_version: 1.8.24
|
101
113
|
signing_key:
|
102
114
|
specification_version: 3
|
103
115
|
summary: Opal access to jquery
|
@@ -124,5 +136,4 @@ test_files:
|
|
124
136
|
- spec/event_spec.rb
|
125
137
|
- spec/http_spec.rb
|
126
138
|
- spec/jquery.js
|
127
|
-
- spec/local_storage_spec.rb
|
128
139
|
- spec/spec_helper.rb
|
@@ -1 +0,0 @@
|
|
1
|
-
require 'opal/jquery'
|
@@ -1,20 +0,0 @@
|
|
1
|
-
module Document
|
2
|
-
def self.ready?(&block)
|
3
|
-
%x{
|
4
|
-
if (block === nil) {
|
5
|
-
return nil;
|
6
|
-
}
|
7
|
-
|
8
|
-
$(block);
|
9
|
-
return nil;
|
10
|
-
}
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.title
|
14
|
-
`document.title`
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.title=(title)
|
18
|
-
`document.title = title`
|
19
|
-
end
|
20
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module LocalStorage
|
2
|
-
def self.[](key)
|
3
|
-
%x{
|
4
|
-
var val = localStorage.getItem(key);
|
5
|
-
return val === null ? nil : val;
|
6
|
-
}
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.[]=(key, value)
|
10
|
-
`localStorage.setItem(key, value)`
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.clear
|
14
|
-
`localStorage.clear()`
|
15
|
-
self
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.delete(key)
|
19
|
-
%x{
|
20
|
-
var val = localStorage.getItem(key);
|
21
|
-
localStorage.removeItem(key);
|
22
|
-
return val === null ? nil : val;
|
23
|
-
}
|
24
|
-
end
|
25
|
-
end
|
data/lib/opal/jquery.rb
DELETED
data/spec/local_storage_spec.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe LocalStorage do
|
4
|
-
before do
|
5
|
-
LocalStorage.clear
|
6
|
-
end
|
7
|
-
|
8
|
-
describe '.[]' do
|
9
|
-
it 'returns nil when accessing an undefined value' do
|
10
|
-
LocalStorage['woosh'].should be_nil
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'returns an empty string when set value was also ""' do
|
14
|
-
LocalStorage['empty'] = ''
|
15
|
-
LocalStorage['empty'].should == ''
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
describe '.[]=' do
|
20
|
-
it 'sets values in the localstorage' do
|
21
|
-
LocalStorage['foo'] = 'Hello World'
|
22
|
-
LocalStorage['foo'].should == 'Hello World'
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'stores all values as strings' do
|
26
|
-
LocalStorage['foo'] = 3.142
|
27
|
-
LocalStorage['foo'].should be_kind_of(String)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe '.clear' do
|
32
|
-
it 'removes all values from the store' do
|
33
|
-
LocalStorage['foo'] = 'wow'
|
34
|
-
LocalStorage['bar'] = 'pow'
|
35
|
-
LocalStorage.clear
|
36
|
-
LocalStorage['foo'].should be_nil
|
37
|
-
LocalStorage['bar'].should be_nil
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
describe '.delete' do
|
42
|
-
it 'deletes the given key from localstorage' do
|
43
|
-
LocalStorage['deletable'] = 'Hey there'
|
44
|
-
LocalStorage.delete 'deletable'
|
45
|
-
LocalStorage['deletable'].should be_nil
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'returns the deleted value' do
|
49
|
-
LocalStorage['deletable'] = 'Hey there'
|
50
|
-
LocalStorage.delete('deletable').should == 'Hey there'
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|