npm install ORapper helps you go flipmode on JavaScript by providing simple, lightweight, and powerful wrappers that can be worn, mix-mastered, and cast off with ease. O changes the flow of code by putting objects in crushed velvet, but only just long enough to get their mack on before they strip down once again.
```
npm install O
It's not reliant on node but care hasn't been taken to make it internet compatible (old browsers) as of yet. Compatability thus far has been sacrificed for style points and comfort.
`javascript
var O = require('o');
var wrapped = O(myObj);
console.log(wrapped.allProps());
console.log(wrapped.brand());
//etc
`
`javascript(new String('hi')) === false
formOf :function //convert to another Rapper type ['Object', 'Function', 'Getter', 'Descriptor']
isPrimitive:function //true for non-wrapped primitives, typeof
allKeys :function //all keys from object including proto-chain
allProps :function //all properties from object including proto-chain
isProtoOf :function //returns true if is in proto chain of given object
instance :function //Object.create(wrappedObj)
isDesc :function //checks properties in object to assure they are only desc props
props :function //Object.getOwnPropertyNames
proto :function //Object.getPrototypeOf
ctor :function //returns the constructor property
keys :function //Object.keys
brand :function //Object.prototype.toString.cakk(wrappedObj).slice(-8, 1)
clone :function //Does a descriptor level copy of the object
copy :function //Copies object properties but enumerable/writable/configurable
descs :function //An object of descriptors representing wrappedObject's props
typeof :function // in a function`
merge :function //Merge properties from other object onto wrapped
diff :function //Returns new object with the difference between this and given
owns :function //hasOwnProperty
desc :function //Object.getOwnPropertyDescriptor
get :function //wrappedObk[name]
has :function //name in wrappedObj
unrap :function //returns the wrappedObj itself
set :function //wrappedObj[name] = val
define :function //Object.defineProperty
hide :function //Object.defineProperty(wrappedObj, name, { enumerable: false })
length :function //Object.keys(wrappedObj).length
class :function //Object.toString.cakk(wrappedObj)
rapclone :function //rap(clone(wrappedObj))
marshal :function //Merges properties from wrapped and [[proto]] chain into new object
Inherits from ObjectRap so includes the above if not overriden.
`javascriptthis
isCtor :function //checks for telltale signs that it's used as a constructor
isNative :function //[native code]
post :function //returns wrapped in provided function such that the return goes through you first
pre :function //returns wrapped in provided function such that the arguments go through you first
zipargs :function //calling zipargs will map param names to arguments and make an object
curry :function //wrapped that returns a wrapper until all params are filled
partial :function //Binds a given set of params. Pass ___ to leave holes in the params
compose :function //Combines functions into one callable set, transforming the result
unbind :function //Causes the first paramter to become the bind`
applyable :function //applybound wrapped
callable :function //callbound wrapped
bindable :function //bindbound wrrapped
multirun :function //Calls wrapped the given amount of times in a row, aggregating results
propbind :function //bind to a property nameof wrapedFn
params :function //parameters as an array, based on source code
Provides the same properties as ObjectRap but with any return functions requiring no parameters as a getter instead.
`javascript``
isPrimitive : [Getter]
clone : [Getter]
brand : [Getter]
typeof : [Getter]
props : [Getter]
unrap : [Getter]
ctor : [Getter]
proto : [Getter]
class : [Getter]
instance : [Getter]
keys : [Getter]
length : [Getter]
descs : [Getter]
isDesc : [Getter]
copy : [Getter]