agson
Version:
Querying and manipulating JSON graphs
31 lines (22 loc) • 703 B
text/coffeescript
lenses = require './agson/lenses'
traversals = require './agson/traversals'
combinators = require './agson/combinators'
liftL = (lensf) -> (args...) ->
new AgsonQuery .then lensf args...
class AgsonQuery
constructor: () ->
toString: ->
"agson(#{@lens.toString()})"
list: liftL -> traversals.list
object: liftL -> traversals.object
property: liftL lenses.property
index: liftL lenses.property
where: liftL (predicate) ->
combinators.where (ma) ->
ma.map(predicate).getOrElse false
recurse: ->
lens = .then combinators.recurse -> lens
new AgsonQuery lens
run: (data) -> .run data
module.exports = new AgsonQuery
then: (lens) -> lens