doclinkts v0.0.1
doclinkts
A super light NodeJS CLI app to link and auto-copy doc comments within your code.
Install
npm i doclinkts -g for global installation or npm i doclinkts --save-dev as a local
dev dependency.
Run
To run it in a specified directory, just start node doclinkts ./dir.
The root directory can contain a docignore.json file (see Configuration).
How it Works
To enable doclinkts to link and copy your comments, you have to specify docroots and doctargets within your sourcode.
A root comment must always start with the docroot declaration and
a unique key:
/**[docroot key]
* comment text
* */
const x = () => {}A target comment must always contain the doctarget declaration
on the line where the root should be copied to. The declaration has the
options i and r. One of those options must be selected.
/**
* [doctarget key][i|r]
* additional comment text
* */
const x = () => {}If the i option is selected, the root text will be inserted in the target text (see Example 1).
If the r option is selected, the root text will replace the target text (see Example 2).
Example 1
// src/abstract/validator.ts
/**
* The Validator interface is the abstract representation to
* do some validation.
* This comment has no link or target, so it just stays in place.
* */
interface Validator {
/**[docroot validator#validate]
* Validates the given property.
* @param{data} the string property to validate
* */
validate: (data: string) => boolean
}// src/email/emailvalidator.ts
/**
* The EmailValidator class provides functionality to validate
* email format properties.
* This comment has no link or target, so it just stays in place.
* */
class EmailValidator implements Validator {
/**
* [doctarget validator#validate][i]
* Returns true, if the given property is a valid email adress.
* */
public validate(data: string): boolean {
//do some stuff here
return true;
}
}If you now run doclinkts in your src directory, all targets receive their root value.
The file emailvalidator.ts will now look like the following:
// src/email/emailvalidator.ts
/**
* The EmailValidator class provides functionality to validate
* email format properties.
* This comment has no link or target, so it just stays in place.
* */
class EmailValidator implements Validator {
/**
* [doctarget validator#validate][i]
* #from src/abstract/validator.ts
* Validates the given property.
* @param{data} the string property to validate
* #
* Returns true, if the given property is a valid email adress.
* */
public validate(data: string): boolean {
//do some stuff here
return true;
}
}Example 2
If in src/email/emailvalidator.ts the r option [doctarget validator#validate][r]
would be used, the resultion file will look like the following:
// src/email/emailvalidator.ts
/**
* The EmailValidator class provides functionality to validate
* email format properties.
* This comment has no link or target, so it just stays in place.
* */
class EmailValidator implements Validator {
/**
* [doctarget validator#validate][r]
* Validates the given property.
* @param{data} the string property to validate
* */
public validate(data: string): boolean {
//do some stuff here
return true;
}
}Configuration
A target directory can contain a docignore.json
file. All rules will be applied to the current and all child directories.
A docignore.json can include JS regular expressions. If one of the expressions
match on a file uri, the file or directory is ignored. Note, a directory path
does not include the trailing /.
Example
{
"ignore": [
"\\.test\\.",
"^(mock)(.*)\\.xml$"
]
}In this example, all files which contains .test. are ignored and
all XML files starting with mock are ignored.
Note: the ignore file does not support expression flags.
6 years ago