apidoc-core
Advanced tools
Comparing version 0.2.1 to 0.2.2
126
lib/index.js
@@ -19,3 +19,3 @@ var _ = require('lodash'); | ||
excludeFilters: [], | ||
includeFilters: [ '.*\\.(coffee|cs|dart|erl|go|java|js|php?|py|rb|ts|pm)$' ], | ||
includeFilters: [ '.*\\.(clj|coffee|cs|dart|erl|go|java|js|php?|py|rb|ts|pm)$' ], | ||
@@ -25,2 +25,3 @@ src: path.join(__dirname, '../example/'), | ||
filters: {}, | ||
languages: {}, | ||
parsers: {}, | ||
@@ -32,3 +33,3 @@ workers: {} | ||
options : {}, | ||
log : {}, | ||
log : logger, | ||
generator : {}, | ||
@@ -43,2 +44,11 @@ packageInfos: {}, | ||
}, | ||
languages: { | ||
'.clj' : './languages/clj.js', | ||
'.coffee' : './languages/coffee.js', | ||
'.erl' : './languages/erl.js', | ||
'.pm' : './languages/pm.js', | ||
'.py' : './languages/py.js', | ||
'.rb' : './languages/rb.js', | ||
'default' : './languages/default.js' | ||
}, | ||
parsers: { | ||
@@ -101,6 +111,6 @@ api : './parsers/api.js', | ||
var defaultGenerator = { | ||
version: '0.0.0', | ||
name : 'apidoc', | ||
time : new Date(), | ||
name : 'apidoc', | ||
url : 'http://apidocjs.com' | ||
url : 'http://apidocjs.com', | ||
version: '0.0.0' | ||
}; | ||
@@ -110,9 +120,27 @@ | ||
var defaultPackageInfos = { | ||
description: '', | ||
name : '', | ||
version : '0.0.0', | ||
description: '', | ||
sampleUrl : false | ||
sampleUrl : false, | ||
version : '0.0.0' | ||
}; | ||
// Simple logger interace | ||
var logger = { | ||
debug : function() { console.log(arguments); }, | ||
verbose: function() { console.log(arguments); }, | ||
info : function() { console.log(arguments); }, | ||
warn : function() { console.log(arguments); }, | ||
error : function() { console.log(arguments); } | ||
}; | ||
/** | ||
* Return the used specification version | ||
* | ||
* @returns {String} | ||
*/ | ||
function getSpecificationVersion() { | ||
return SPECIFICATION_VERSION; | ||
} | ||
/** | ||
* Parser | ||
@@ -122,8 +150,3 @@ * | ||
* @param {Object} logger Logger (with methods: debug, verbose, info, warn and error is necessary). | ||
* @param {Object} [packageInfos] Collected from apidoc.json / package.json. | ||
* @param {String} [packageInfos.name] Project name. | ||
* @param {String} [packageInfos.version] Version (semver) of the project, e.g. 1.0.27 | ||
* @param {String} [packageInfos.description] A short description. | ||
* @param {String} [packageInfos.sampleUrl] @see http://apidocjs.com/#param-api-sample-request | ||
* @param {Object} [markdown] Markdown parser. | ||
* @returns {Mixed} true = ok, but nothing todo | false = error | Object with parsed data and project-informations. | ||
@@ -135,9 +158,10 @@ * { | ||
*/ | ||
function parse(options, logger, generator, packageInfos, markdown) { | ||
function parse(options) { | ||
_.defaults(options, defaults); | ||
// extend with custom functions | ||
app.filters = _.defaults(options.filters, app.filters); | ||
app.parsers = _.defaults(options.parsers, app.parsers); | ||
app.workers = _.defaults(options.workers, app.workers); | ||
app.filters = _.defaults(options.filters, app.filters); | ||
app.languages = _.defaults(options.languages, app.languages); | ||
app.parsers = _.defaults(options.parsers, app.parsers); | ||
app.workers = _.defaults(options.workers, app.workers); | ||
@@ -147,16 +171,8 @@ // options | ||
// logger | ||
app.log = logger; | ||
// generator | ||
app.generator = generator || {}; | ||
_.defaults(app.generator, defaultGenerator); | ||
// packageInfos | ||
app.packageInfos = packageInfos || {}; | ||
_.defaults(app.packageInfos, defaultPackageInfos); | ||
// markdown parser | ||
app.markdown = markdown; | ||
var parsedFiles = []; | ||
@@ -277,5 +293,59 @@ var parsedFilenames = []; | ||
/** | ||
* Set generator informations. | ||
* | ||
* @param {Object} [generator] Generator informations. | ||
* @param {String} [generator.name] Generator name (UI-Name). | ||
* @param {String} [generator.time] Time for the generated doc | ||
* @param {String} [generator.version] Version (semver) of the generator, e.g. 1.2.3 | ||
* @param {String} [generator.url] Url to the generators homepage | ||
*/ | ||
function setGeneratorInfos(generator) { | ||
app.generator = generator; | ||
} | ||
/** | ||
* Set a logger. | ||
* | ||
* @param {Object} logger A Logger (@see https://github.com/flatiron/winston for details) | ||
* Interface: | ||
* debug(msg, meta) | ||
* verbose(msg, meta) | ||
* info(msg, meta) | ||
* warn(msg, meta) | ||
* error(msg, meta) | ||
*/ | ||
function setLogger(logger) { | ||
app.log = logger; | ||
} | ||
/** | ||
* Set the markdown parser. | ||
* | ||
* @param {Object} [markdown] Markdown parser. | ||
*/ | ||
function setMarkdownParser(markdown) { | ||
app.markdown = markdown; | ||
} | ||
/** | ||
* Set package infos. | ||
* | ||
* @param {Object} [packageInfos] Collected from apidoc.json / package.json. | ||
* @param {String} [packageInfos.name] Project name. | ||
* @param {String} [packageInfos.version] Version (semver) of the project, e.g. 1.0.27 | ||
* @param {String} [packageInfos.description] A short description. | ||
* @param {String} [packageInfos.sampleUrl] @see http://apidocjs.com/#param-api-sample-request | ||
*/ | ||
function setPackageInfos(packageInfos) { | ||
app.packageInfos = packageInfos; | ||
} | ||
module.exports = { | ||
parse: parse, | ||
SPECIFICATION_VERSION: SPECIFICATION_VERSION | ||
getSpecificationVersion: getSpecificationVersion, | ||
parse : parse, | ||
setGeneratorInfos : setGeneratorInfos, | ||
setLogger : setLogger, | ||
setMarkdownParser : setMarkdownParser, | ||
setPackageInfos : setPackageInfos | ||
}; |
@@ -20,2 +20,3 @@ var _ = require('lodash'); | ||
// class variables | ||
self.languages = {}; | ||
self.parsers = {}; | ||
@@ -26,2 +27,10 @@ self.parsedFileElements = []; | ||
// load languages | ||
var languages = Object.keys(app.languages); | ||
languages.forEach(function(language) { | ||
var filename = app.languages[language]; | ||
app.log.debug('load parser language: ' + language + ', ' + filename); | ||
self.addLanguage(language, require(filename)); | ||
}); | ||
// load parser | ||
@@ -47,2 +56,9 @@ var parsers = Object.keys(app.parsers); | ||
/** | ||
* Add a Language | ||
*/ | ||
Parser.prototype.addLanguage = function(name, language) { | ||
this.languages[name] = language; | ||
}; | ||
/** | ||
* Add a Parser | ||
@@ -343,49 +359,3 @@ */ | ||
var regexs = { | ||
'.coffee': { | ||
// find document blocks between '###' and '###' | ||
// docBlocksRegExp: /###\uffff?(.+?)###/g, | ||
docBlocksRegExp: /###\uffff?(.+?)\uffff(?:\s*)?###/g, | ||
// remove not needed tabs at the beginning | ||
inlineRegExp: /^(\t*)?/gm | ||
}, | ||
'.erl': { | ||
// Find document blocks between '%{' and '%}' | ||
// docBlocksRegExp: /\%*\{\uffff?(.+?)\%+\}/g, | ||
docBlocksRegExp: /\%*\{\uffff?(.+?)\uffff(?:\s*)?\%+\}/g, | ||
// remove not needed ' % ' and tabs at the beginning | ||
// HINT: Not sure if erlang developer use the %, but i think it should be no problem | ||
inlineRegExp: /^(\s*)?(\%*)[ ]?/gm | ||
}, | ||
'.py': { | ||
// find document blocks between """ and """ | ||
// docBlocksRegExp: /\"\"\"\uffff?(.+?)\"\"\"/g, | ||
docBlocksRegExp: /\"\"\"\uffff?(.+?)\uffff(?:\s*)?\"\"\"/g, | ||
// remove not needed tabs at the beginning | ||
inlineRegExp: /^(\t*)?/gm | ||
}, | ||
'.rb': { | ||
// find document blocks between '=begin' and '=end' | ||
// docBlocksRegExp: /\=begin\uffff?(.+?)\=end/g, | ||
docBlocksRegExp: /\=begin\uffff?(.+?)\uffff(?:\s*)?\=end/g, | ||
// remove not needed tabs at the beginning | ||
inlineRegExp: /^(\t*)?/gm | ||
}, | ||
'.pm': { | ||
// find document blocks between '#**' and '#*' | ||
// or between '=pod' and '=cut' | ||
// docBlocksRegExp: /#\*\*\uffff?(.+?)#\*|=pod\uffff?(.+?)=cut/g, | ||
docBlocksRegExp: /#\*\*\uffff?(.+?)\uffff(?:\s*)?#\*|=pod\uffff?(.+?)\uffff(?:\s*)?=cut/g, | ||
// remove not needed ' # ' and tabs at the beginning | ||
inlineRegExp: /^(\s*)?(#)[ ]?/gm | ||
}, | ||
'default': { | ||
// find document blocks between '#**' and '#*' | ||
// docBlocksRegExp: /\/\*\*\uffff?(.+?)\*\//g, | ||
docBlocksRegExp: /\/\*\*\uffff?(.+?)\uffff(?:\s*)?\*\//g, | ||
// remove not needed ' * ' and tabs at the beginning | ||
inlineRegExp: /^(\s*)?(\*)[ ]?/gm | ||
} | ||
}; | ||
var regexForFile = regexs[self.extension] || regexs['default']; | ||
var regexForFile = this.languages[self.extension] || this.languages['default']; | ||
var matches = regexForFile.docBlocksRegExp.exec(src); | ||
@@ -392,0 +362,0 @@ while (matches) { |
{ | ||
"name": "apidoc-core", | ||
"version": "0.2.1", | ||
"version": "0.2.2", | ||
"description": "Core parser library to generate apidoc result following the apidoc-spec", | ||
@@ -21,3 +21,3 @@ "author": "Peter Rottmann <rottmann@inveris.de>", | ||
"test": "npm run jshint && mocha test/", | ||
"jshint": "jshint lib/ test/ --exclude test/fixtures/" | ||
"jshint": "jshint lib/ test/" | ||
}, | ||
@@ -24,0 +24,0 @@ "keywords": [ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
102416
72
2936
6