annotation-parser

a easy to use annotation parser

Usage no npm install needed!

<script type="module">
  import annotationParser from 'https://cdn.skypack.dev/annotation-parser';
</script>

README

node-annotation-parser Build Status Coverage Status

Presentation

Unlike many other languages (C#, Java, PHP...), JavaScript doesn't handle annotation. This module is here to help you correcting that.

Install

$ npm install --save annotation-parser

Usage

annotationParser(filePath, callback)

Exemple

given this file (witch contains annotations) controller.js

/*
    @routePrefix('api')
*/
module.exports = {

    // @route('collection', 'GET')
    collection: function(){

    },

    // @route('collection/{id}', 'GET')
    index: function(){

    },
> };

You can then simply retrieve those annotations by doing so:


var parser = require('annotation-parser');

parser('controller.js', function(err, annotations){
    console.log(annotations);

    /*
        {
            module: {
                name: 'controller',
                annotations: {
                    routePrefix: [
                        ['api'],
                    ],
                },
                ref: /* module reference */
            },
            functions: {
                collection: {
                    annotations: {
                        route: [
                            ['collection', 'GET']
                        ],
                    },
                    ref: /* the collection function */
                },
                index: {
                    annotations: {
                        route: [
                            ['collection/{id}', 'GET']
                        ],
                    },
                    ref: /* the index function */
                },
            },
        }
    */
})

Inspiration

My first goal was to create an MVC like router for Node.js, but I found it would be better to split this up.

There is already an annotation parser for node but it didn't suit my needs.

Licence

MIT © Thomas Sileghem