simple-annotation

0.1.6 • Public • Published

Build Status Coverage Status npm version npm

Simple Annotation

Simple Annotation is a module for nodejs. With this module you can easily add annotation to nodejs. This module is customizable. The module will search for comments in files and after this it search for your registered annotations.

Installation

npm i simple-annotation

Example

Example file with annotation.

/**
 * @AnnotationClassString AnnotationClassString
 * @AnnotationClassObject {"hello": 123}
 * @AnnotationClassArray [1234]
 * @AnnotationClassInt 12345
 */
class test{
 
    /**
     * @AnnotationES6Function AnnotationES6Function
     */
    myTestFunction1(str){
        return str;
 
    }
}
module.exports = test;

In this example we try to get the annotation with name AnnotationES6Function.

 
var Annotation = require('simple-annotation');
 
Annotation.registerAnnotation(
    'AnnotationES6Function', // Annotation Name
    'string', // Annotation Value Type   {string, int, array, object, empty}
    'ES6function' // Annotation Return Type   {ES6class, ES6function, var, function}
);
 
var obj = new Annotation();
 
// Important !! Add only absolute paths, relative paths will be ignored.
obj.setPaths([
    __dirname+'/*/es6TestClass.js',
    __dirname+'/*/test.js',
    __dirname+'/*/function*.js',
    __dirname+'/*/var.js'
]);
 
var all = obj.findAll();
var one = obj.find('AnnotationES6Function');
 
for(var i in all){
    console.log(all[i]);
}
 

Create Annotation

Annotation.registerAnnotation(
    'AnnotationES6Function', // Annotation Name
    'string', // Annotation Value Type   {string, int, array, object, empty}
    'ES6function' // Annotation Return Type   {ES6class, ES6function, var, function}
);

Value/Return Types

What are value or return types? A value type is the right hand of a annotation and a return type is the function/class/variable under the annotation.

/**
* @AnnotationName ValueType
*/
module.exports = function ReturnType(str){
    return str;
};

All Preconfigured Types are overridable.

Return Types

Name Type
ES6class ECMA Script 6 Class
ES6function ECMA Script 6 Function
function <= ES5 Functions
var <= ES5 Functions Variable

Annotation Value Types

Name Type
string string
array array
object object
int integer
empty empty string

Preconfigured return types pattern

<= ES5 function

 
//Function 1
module.exports = function myTestFunction1(str){
    return str;
};
 
//Function 2
var myTestFunction2 = (str) => {
    return str;
};
exports.myTestFunction2 = myTestFunction2;
 
//Function 3
const myTestFunction3 = (str) => {
    return str;
};
exports.myTestFunction3 = myTestFunction3;
 
//Function 4
let myTestFunction5 = (str) => {
    return str;
};
exports.myTestFunction5 = myTestFunction5;
 
//Function 5
exports.myTestFunction7 = (str) => {
    return str;
};
 

<= ES5 variable

var testVar = "test123Variable";
exports.testVar = testVar;

Create a Type

Value Type

var Annotation = require('simple-annotation');
Annotation.registerAnnotationValueType(
    'array',
    function(attr){
        return JSON.parse(attr);
    }
);

Return Type

var Annotation = require('simple-annotation');
Annotation.registerAnnotationReturnType(
    'ES6class',
    function(attr){
 
        const regex = /^.*class (.*?)$/;
        let a = attr.str.match(regex);
 
        if(!== null){
            var s = require(attr.file);
            return new s();
        }
 
        return null;
    }
);

To Do

  • Add findBy() function
  • Refactoring (DRY, KISS, more Comments)

Package Sidebar

Install

npm i simple-annotation

Weekly Downloads

4,438

Version

0.1.6

License

MIT

Unpacked Size

26.2 kB

Total Files

16

Last publish

Collaborators

  • am2808