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