Skip to content

Commit 6c53f8d

Browse files
committedAug 23, 2014
storage: slightly refactor the API
1 parent a0b9bcc commit 6c53f8d

File tree

1 file changed

+21
-27
lines changed

1 file changed

+21
-27
lines changed
 

‎opal/browser/storage.rb

+21-27
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,7 @@ def initialize(window, name)
4343
@data = {}
4444

4545
autosave!
46-
init
47-
end
48-
49-
# @!attribute [r] encoded_name
50-
# @return [String] the generated name
51-
def encoded_name
52-
"opal.storage.#@name"
46+
reload
5347
end
5448

5549
# Check if autosaving is enabled.
@@ -123,57 +117,57 @@ def to_h
123117
@data
124118
end
125119

126-
# @!method init
127-
# @private
120+
# @!method reload
121+
# Load the storage.
128122

129123
# @!method save
130124
# Persist the current state to the storage.
131125

132126
if Browser.supports? 'Storage.local'
133-
def init
134-
replace `#@window.localStorage[#{encoded_name}] || '{}'`
127+
def reload
128+
replace `#@window.localStorage[#@name] || '{}'`
135129
end
136130

137131
def save
138-
`#@window.localStorage[#{encoded_name}] = #{JSON.dump(self)}`
132+
`#@window.localStorage[#@name] = #{JSON.dump(self)}`
139133
end
140134
elsif Browser.supports? 'Storage.global'
141-
def init
142-
replace `#@window.globalStorage[#@window.location.hostname][#{encoded_name}] || '{}'`
135+
def reload
136+
replace `#@window.globalStorage[#@window.location.hostname][#@name] || '{}'`
143137
end
144138

145139
def save
146-
`#@window.globalStorage[#@window.location.hostname][#{encoded_name}] = #{JSON.dump(self)}`
140+
`#@window.globalStorage[#@window.location.hostname][#@name] = #{JSON.dump(self)}`
147141
end
148142
elsif Browser.supports? 'Element.addBehavior'
149-
def init
143+
def reload
150144
%x{
151145
#@element = #@window.document.createElement('link');
152146
#@element.addBehavior('#default#userData');
153147
154148
#@window.document.getElementsByTagName('head')[0].appendChild(#@element);
155149
156-
#@element.load(#{encoded_name});
150+
#@element.load(#@name);
157151
}
158152

159-
replace `#@element.getAttribute(#{encoded_name}) || '{}'`
153+
replace `#@element.getAttribute(#@name) || '{}'`
160154
end
161155

162156
def save
163157
%x{
164-
#@element.setAttribute(#{encoded_name}, #{JSON.dump(self)});
165-
#@element.save(#{encoded_name});
158+
#@element.setAttribute(#@name, #{JSON.dump(self)});
159+
#@element.save(#@name);
166160
}
167161
end
168162
else
169-
def init
163+
def reload
170164
$document.cookies.options expires: 60 * 60 * 24 * 365
171165

172-
replace $document.cookies[encoded_name]
166+
replace $document.cookies[@name]
173167
end
174168

175169
def save
176-
$document.cookies[encoded_name] = JSON.dump(self)
170+
$document.cookies[@name] = JSON.dump(self)
177171
end
178172
end
179173

@@ -185,7 +179,7 @@ def to_json
185179

186180
io << JSON.create_id.to_json << ":" << self.class.name.to_json << ","
187181

188-
each {|key, value|
182+
@data.each {|key, value|
189183
io << key.to_json.to_json << ":" << value.to_json << ","
190184
}
191185

@@ -205,12 +199,12 @@ def self.supported?
205199
Browser.supports? 'Storage.session'
206200
end
207201

208-
def init
209-
replace `#@window.sessionStorage[#{encoded_name}] || '{}'`
202+
def reload
203+
replace `#@window.sessionStorage[#@name] || '{}'`
210204
end
211205

212206
def save
213-
`#@window.sessionStorage[#{encoded_name}] = #{JSON.dump(self)}`
207+
`#@window.sessionStorage[#@name] = #{JSON.dump(self)}`
214208
end
215209
end
216210

0 commit comments

Comments
 (0)