'use strict'
/**
* Module Dependencies
*/
var split = require('split-string')
/**
* Export `Tree`
*/
module.exports = Tree
/**
* Create a tree of references
*
* @return {Function}
*/
function Tree () {
var data = {}
function tree (key, value) {
return arguments.length === 2
? set(key, value)
: get(key)
}
function set (key, value) {
data[key] = value
}
function get (key) {
return data[key]
}
tree.up = function up (key) {
var parts = split(key, ':')
var parent = key
var keys = []
while (parts.length) {
data[parent] && keys.push(data[parent])
parts.pop()
parent = parts.join(':')
}
return keys.reverse()
}
tree.data = data
return tree
}
|