Nurturing Pluto's Martians
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    jsondompublic

    build status

    JSON DOM

    A DOM-like interface for querying complex Javascript objects. (Also a very light wrapper around js-traverse).

    Installation

    npm install jsondom
    

    Usage

    > var jsd = require('jsondom');
    > var complex = {
      title: "this is a test",
      articles: [
        {
          title: "sub title",
          articles: "this is an article"
        },
        {
          hello: "it is me you're looking for"
        }
      ]
    };
     
    > jsd.getValuesByKeyName(complex, 'title');
    ["this is a test", "sub title"]
     
    > jsd.getValuesByKeyName(complex, 'title', 1);
    ["this is a test"]
     
    > jsd.getNodesMatching(complex, 'articles');
    [
      [
        {
          title: 'sub title',
          articles: 'this is an article'
        },
        {
          hello: 'it is me you\'re looking for'
        }
      ],
      'this is an article'
    ]
     
    > js.getNodesMatching(complex, 'articles', true);
    [ { title: 'this is a test',
        articles: [ [Object], [Object] ] },
      { title: 'sub title',
        articles: 'this is an article' } ]

    Methods

    getValuesFromPartialPath(tree, key)

    /**
     * Gets an array of values from a path which ends with the given path fragment.
     * This method optionally takes an array to generate the path end data from
     * @param  {Object} tree Object graph
     * @param  {Mixed}  key  String or Array
     * @return {Array}       Array of values matching partial path
     */
    

    valueFromPath(tree, key_array, getParent)

    /**
     * Takes an array of nodes to the content location and returns the value located
     * at that point. Can we used to return the parent node as well.
     * @param  {Object}   tree        Object graph
     * @param  {Array}    key_array   An array of keys, traversable from the left
     * @param  {Boolean}  (getParent) Flag to return parent or element. Default: element
     * @return {Mixed}                The content located at that point in the tree
     */
    

    getPathToKey(tree, key)

    /**
     * Gets the path to a particular key in the Object
     * @param  {Object} tree Object graph
     * @param  {Mixed}  key  String or RegExp
     * @return {Array}       Array of decimal separated paths to object suitable to
     *                       use with valueFromKeyPath
     */
    

    getNodesMatching(tree, needle, parent)

    /**
     * Returns a node of the tree if any of the keys or values in the node match the
     * provided criteria
     * @param  {Object}   tree      Object graph
     * @param  {Mixed}    needle    A string or RegExp describing what to find
     * @param  {Boolean}  (parents) Should it return the parent of the matching element
     * @return {Array}              An array of parent nodes which have matching children
     */
    };
    

    getValuesByKey(tree, key, maxDepth)

    /**
     * Gets all values from object graph that exist at the specified key name
     * @param  {Object}   tree       Object graph
     * @param  {Mixed}    key        A RegExp or string for the key you're trying to find
     * @param  {Integer}  (maxDepth) Max recursion depth
     * @return {Array}               Array of values from matching keys
     */
    

    License

    Copyright 2013 Condé Nast. Licensed under the MIT License.

    install

    npm i jsondom

    Downloadsweekly downloads

    9

    version

    0.4.1

    license

    MIT

    repository

    githubwww

    last publish

    collaborators

    • avatar