Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2e4745b189 | |||
| 21098984f1 | |||
| b2fdf0aba2 | |||
| 7b459f1f87 |
37
README.md
37
README.md
@ -11,7 +11,7 @@ Bower (Browser)
|
|||||||
```bash
|
```bash
|
||||||
bower install json-storage
|
bower install json-storage
|
||||||
# or
|
# or
|
||||||
wget https://raw2.github.com/coolaj86/json-storage-js/master/json-storage.js
|
wget https://git.coolaj86.com/coolaj86/json-storage.js/raw/branch/master/json-storage.js
|
||||||
```
|
```
|
||||||
|
|
||||||
Node.JS (Server)
|
Node.JS (Server)
|
||||||
@ -25,7 +25,8 @@ Usage
|
|||||||
|
|
||||||
Made for Node.js and Bower (browser-side).
|
Made for Node.js and Bower (browser-side).
|
||||||
|
|
||||||
var localStorage = require('localStorage')
|
```javascript
|
||||||
|
var localStorage = require('localStorage')
|
||||||
, JsonStorage = require('json-storage').JsonStorage
|
, JsonStorage = require('json-storage').JsonStorage
|
||||||
, store = JsonStorage.create(localStorage, 'my-widget-namespace', { stringify: true })
|
, store = JsonStorage.create(localStorage, 'my-widget-namespace', { stringify: true })
|
||||||
, myValue = {
|
, myValue = {
|
||||||
@ -34,8 +35,9 @@ Made for Node.js and Bower (browser-side).
|
|||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
store.set('myKey', myValue);
|
store.set('myKey', myValue);
|
||||||
myValue = store.get('myKey');
|
myValue = store.get('myKey');
|
||||||
|
```
|
||||||
|
|
||||||
NOTE: When using with Node and the `localStorage` module,
|
NOTE: When using with Node and the `localStorage` module,
|
||||||
you may wish to pass the `{ stringify: false }` option to prevent double stringification.
|
you may wish to pass the `{ stringify: false }` option to prevent double stringification.
|
||||||
@ -48,6 +50,8 @@ API
|
|||||||
* `namespace` is optional string which allows multiple non-conflicting storage containers. For example you could pass two widgets different storage containers and not worry about naming conflicts:
|
* `namespace` is optional string which allows multiple non-conflicting storage containers. For example you could pass two widgets different storage containers and not worry about naming conflicts:
|
||||||
* `Gizmos.create(JsonStorage.create(null, 'my-gizmos'))`
|
* `Gizmos.create(JsonStorage.create(null, 'my-gizmos'))`
|
||||||
* `Gadgets.create(JsonStorage.create(null, 'my-gadgets'))`
|
* `Gadgets.create(JsonStorage.create(null, 'my-gadgets'))`
|
||||||
|
* Namespacing can be turned off by explicitly setting `false`
|
||||||
|
* `Gadgets.create(JsonStorage.create(null, false))`
|
||||||
* `opts`
|
* `opts`
|
||||||
* `stringify` set to `false` in `node` to avoid double stringifying
|
* `stringify` set to `false` in `node` to avoid double stringifying
|
||||||
* `store.get(key)`
|
* `store.get(key)`
|
||||||
@ -82,15 +86,34 @@ To save `undefined`, use `null` instead.
|
|||||||
|
|
||||||
Note that both values that exist as `null` and values that don't exist at all will return `null`.
|
Note that both values that exist as `null` and values that don't exist at all will return `null`.
|
||||||
|
|
||||||
store.set('existing-key', null);
|
```javascript
|
||||||
null === store.get('existing-key');
|
store.set('existing-key', null);
|
||||||
null === store.get('non-existant-key');
|
null === store.get('existing-key');
|
||||||
|
null === store.get('non-existant-key');
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### `null` vs `"null"`
|
### `null` vs `"null"`
|
||||||
|
|
||||||
The special case of `null` as `"null"`, aka `"\"null\""`:
|
The special case of `null` as `"null"`, aka `"\"null\""`:
|
||||||
|
|
||||||
|
```
|
||||||
|
typeof null // object
|
||||||
|
typeof "null" // string
|
||||||
|
typeof "\"null\"" // string
|
||||||
|
```
|
||||||
|
|
||||||
`null`, and `"null"` both parse as `null` the "object", instead of one being the string (which would be `"\"null\""`).
|
`null`, and `"null"` both parse as `null` the "object", instead of one being the string (which would be `"\"null\""`).
|
||||||
|
|
||||||
|
```
|
||||||
|
JSON.parse(null) // null (object)
|
||||||
|
JSON.parse("null") // null (object)
|
||||||
|
JSON.parse("\"null\"") // 'null' (string)
|
||||||
|
```
|
||||||
|
|
||||||
Objects containing `null`, however, parse as expected `{ "foo": null, "bar": "null" }` will parse as `foo` being `null` but `bar` being `"null"`, much unlike the value `"null"` being parsed on its own.
|
Objects containing `null`, however, parse as expected `{ "foo": null, "bar": "null" }` will parse as `foo` being `null` but `bar` being `"null"`, much unlike the value `"null"` being parsed on its own.
|
||||||
|
|
||||||
|
```
|
||||||
|
JSON.parse('{ "foo": null }') // { foo: null }
|
||||||
|
JSON.parse('{ "foo": "null" }') // { foo: 'null' }
|
||||||
|
```
|
||||||
@ -52,6 +52,9 @@
|
|||||||
// complicated to figure it out
|
// complicated to figure it out
|
||||||
this._namespace = delim;
|
this._namespace = delim;
|
||||||
this._namespace += (namespace || 'jss');
|
this._namespace += (namespace || 'jss');
|
||||||
|
if (false === namespace) {
|
||||||
|
this._namespace = '';
|
||||||
|
}
|
||||||
|
|
||||||
this._store = w3cStorage;
|
this._store = w3cStorage;
|
||||||
this._keysAreDirty = true;
|
this._keysAreDirty = true;
|
||||||
@ -107,7 +110,7 @@
|
|||||||
|
|
||||||
delimAt = key.lastIndexOf(this._namespace);
|
delimAt = key.lastIndexOf(this._namespace);
|
||||||
// test if this key belongs to this widget
|
// test if this key belongs to this widget
|
||||||
if (-1 !== delimAt) {
|
if (!this._namespace || (-1 !== delimAt)) {
|
||||||
this._keys.push(key.substr(0, delimAt));
|
this._keys.push(key.substr(0, delimAt));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,10 +3,10 @@
|
|||||||
"name": "json-storage",
|
"name": "json-storage",
|
||||||
"description": "A wrapper for storage engines which use the W3C Storage API",
|
"description": "A wrapper for storage engines which use the W3C Storage API",
|
||||||
"keywords": ["dom", "storage", "json", "w3c", "localStorage", "sessionStorage", "globalStorage", "Storage"],
|
"keywords": ["dom", "storage", "json", "w3c", "localStorage", "sessionStorage", "globalStorage", "Storage"],
|
||||||
"version": "2.0.1",
|
"version": "2.1.2",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/coolaj86/json-storage-js.git"
|
"url": "git://git.coolaj86.com/coolaj86/json-storage.js.git"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= v0.2.0"
|
"node": ">= v0.2.0"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user