/* <CoffeeScript>
_type = do -> # from http://arcturo.github.com/library/coffeescript/07_the_bad_parts.html
classToType = {}
for name in "Boolean Number String Function Array Date RegExp Undefined Null".split(" ")
classToType["[object " + name + "]"] = name.toLowerCase()
(obj) ->
strType = Object::toString.call(obj)
classToType[strType] or "object"
_getExportsAPI = (root, exportsAPI, currentPrefix = '') ->
for key, value of root
if currentPrefix.length > 0
fullName = currentPrefix + '.' + key
else
fullName = key
nameArray = fullName.split('.')
baseName = nameArray[nameArray.length - 1]
type = _type(value)
row = {fullName, baseName, type}
exportsAPI.push(row)
if type == 'object'
_getExportsAPI(value, exportsAPI, fullName)
</CoffeeScript> */
/**
* @method documentExportsAPI
* @member jsduckify
* @param {String} moduleDirectory
* @return {Array} {baseName, fullName, type}
*
* This function will `require` the CoffeeScript directory under the assumption that it's a package.
* That will reveal the published API (tree) of namespaces, classes, properties, functions, etc.
* This function crawls that tree extracting the namespace structure for the package's API. This is
* later used to make sure the jsduck documentation indicates the same namespace tree.
*/
/* <CoffeeScript>
exports.documentExportsAPI = (moduleDirectory) ->
exportsAPI = []
_getExportsAPI(require(moduleDirectory), exportsAPI)
return exportsAPI
</CoffeeScript> */