Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
cdocparser
Advanced tools
CDocParser is a language agnostic C and ///
-Style comments parser that uses block and line comments to make it easier to generate documentation.
$ npm install --save cdocparser
CDocParser consists of two parts the CommentExtractor
and a CommentParser
.
var CDocParser = require('cdocparser');
var extractor = new CDocParser.CommentExtractor(/* contextParser */ );
var parser = new CDocParser.CommentParser(/* Annotations */);
var comments = extractor.extract(/* code */);
var parsedComments = parser.parse(comments);
console.log(parsedComments);
The ComemntExtractor is used to extract C and ///
-Style comments from source and attach context information to it.
new CommentExtractor(contextParser)
Create a CommentExtractor to extract block comment like:
/**
*
* CDocComment
*
*/
You need to pass in a function that is used to generate a context
object used to specify the context of the comment.
A context obj:
{
type : 'contextType'
}
The type
attribute is mandatory, you can add as much attributes as you would like.
#extract(code)
This method will return an Array of all comments in the form of
[
{
lines: {},
context: [context object generated by contextParser]
}
]
new CommentParser(annotations, config)
Create a new CommentParser
where annotaions
is an object like:
{
_: {
alias: {
'aliasName': 'aRealAnnotation'
}
},
aRealAnnotation: {
parse : function (annotationLine) {
},
default : function(){
return 5;
}
}
}
This object is used to provide parser for various types of annotations. It also includes tha ability to include aliases.
#parse ( comments )
This methods takes a comments array provided by CommentExtractor#extract
and parses all annotations. The resulting
object will look like:
{
"[context.type]" : [
{
description : "[Contains all comment lines without an annotation]",
[annotationName] : [resultOfAnnotationParser]
}
]
}
The annotations object is build up from two different kind of object. A annotation
object and a
alias
.
The global strutucture looks like:
{
_ : {
[alias object]
},
[annotation object],
[annotation object]
}
annotation
objectname : {
parse : function(line){
},
extend : function(comment){
},
default : function(comment){
}
}
Each annotation must have a parse
method, optionnally you can have a default
and extend
methods.
parse
methodThe parse
method is used to parse the actuall string
after the @name
. All values returned from that method
will be wrapped in an array.
Implementing a name
annotation:
/**
* @name Fabrice Weinberg
*/
function(line){
return {
name : line
}
}
default
methodThe default
method is used to add a default value.
function(comment){
return [{
name : 'Default Name'
}]
}
Note: Please keep in mind that you need to wrap values in an Array to align with hand written annotations
extend
methodThe extend
method is used to extend hand written annotations by autofilled ones.
function(comment){
// Access the parsed comment here.
}
Note: Extended annotations can be disabled by using the
@allowExtend
annotation.
Use mocha test
to run the unit tests.
extend
as an annotation feature.default
values.0.3.5
and 0.3.6
default
as value.default
functionallowedOn
key to annotations to only apply them to comments from a specifc type///
commentslineNumber
function as a second parameter that will convert char indices to line numbersposter comment
to apply annotations to all items in the file that are documented.warning
if you use more than on poster comment
per file. Only the first one will be used.warning
if a annotation was not found instead of throwing an exception.undefined
.default
value and parse
function.FAQs
Extract C style comments and extract context from source
The npm package cdocparser receives a total of 6,459 weekly downloads. As such, cdocparser popularity was classified as popular.
We found that cdocparser demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.