square
A (cryptically-named) component that exposes the ability to serialize a JS object from a series of key/value pairs where the keys use square-bracket notation. (with some limited dot notation support)
I'll be following this spec, and if we start seeing browser support this library will follow that direction.
user: name: "testuser" password: "123456" tags: "a" "b" contacts: first: "test1" last: "test2" first: "test3" last: "test4"
This API is really low-level, and is meant to be plugged into some other library that determines what elements need to be serialized. (see dominicbarnes/form-serialize)
API
square.parse(name)
Parses a key name and splits it into the various layers of the key name. The result is
an Array
of either String
names or false
which indicates an array.
Examples:
user[name]
=>[ "user", "name" ]
user.password
=>[ "user", "password" ]
tags[]
=>[ "tags", false ]
contacts[][first]
=>[ "contacts", false, "first" ]
contacts[].last
=>[ "contacts", false, "last" ]
square.get(obj, key)
Get the value at key
from obj
.
// get the value in a nested objectvar o = user: name: 'Matt' ;var ret = square;; // get a specific value from an array of objectsvar o = tags: name: 'a' name: 'b' name: 'c' ;var ret = square;assert; // get an array of values from an array of objectsvar o = tags: name: 'a' name: 'b' name: 'c' ;var ret = square;assert;
square.set(obj, key, value)
Takes a source obj
and augments it by setting the given value
at the given key
.
Examples: (it's long, but meant to illustrate the process)
var o = {}; square;// => {// user: {// name: "testuser"// }// } square;// => {// user: {// name: "testuser",// password: "123456"// }// } square;// => {// user: {// name: "testuser",// password: "123456"// },// tags: [// "a"// ]// } square;// => {// user: {// name: "testuser",// password: "123456"// },// tags: [// "a", "b"// ]// } square;// => {// user: {// name: "testuser",// password: "123456"// },// tags: [// "a", "b"// ],// contacts: [// { first: "test1" }// ]// } square;// => {// user: {// name: "testuser",// password: "123456"// },// tags: [// "a", "b"// ],// contacts: [// { first: "test1", last: "test2" }// ]// } square;// => {// user: {// name: "testuser",// password: "123456"// },// tags: [// "a", "b"// ],// contacts: [// { first: "test1", last: "test2" },// { first: "test3" }// ]// } square;// => {// user: {// name: "testuser",// password: "123456"// },// tags: [// "a", "b"// ],// contacts: [// { first: "test1", last: "test2" },// { first: "test3", last: "test4" }// ]// }