A RAML parser based on PyYAML written in CoffeScript and available for use as NodeJs module or in-browser.
npm install raml-parser

This is a JavaScript parser for RAML version 0.8 as defined in the 0.8 RAML specification
A newer version is now available as a beta. It supports RAML 1.0 as well as RAML 0.8.
To discuss this project, please use its github issues or the RAML forum.
Loading a RAML file is as easy as follows:
``javascript
var raml = require('raml-parser');
raml.loadFile('myAPI.raml').then( function(data) {
console.log(data);
}, function(error) {
console.log('Error parsing: ' + error);
});
`
You can alternatively load from a string containing the api definition:
`javascript
var raml = require('raml-parser');
var definition = [
'#%RAML 0.8',
'---',
'title: MyApi',
'baseUri: http://myapi.com',
'/Root:'
].join('\n');
raml.load(definition).then( function(data) {
console.log(data);
}, function(error) {
console.log('Error parsing: ' + error);
});
`
The shape of the returned object is (unofficially) documented in this Typescript interface.
Generating an AST from a RAML file is as easy as follows:
`javascript
var raml = require('raml-parser');
var myAPI;
raml.composeFile('myAPI.raml').then( function(rootNode) {
console.log('Root Node: ' + rootNode)
}, function(error) {
console.log('Error parsing: ' + error);
});
`
you can also alternatively generate an AST from a string containing the api definition:
`javascript
var raml = require('raml-parser');
var definition = [
'#%RAML 0.8',
'---',
'title: MyApi',
'baseUri: http://myapi.com',
'/Root:'
].join('\n');
raml.compose(definition).then( function(rootNode) {
console.log('Root Node: ' + rootNode)
}, function(error) {
console.log('Error parsing: ' + error);
});
`
Using the RAML parser from inside the browser requires the user to actually
include the RAML javascript file in a script tag as follows:
`html`
from there on the usage is pretty much the same as NodeJS, the script
defines a RAML.Parser object globally which can be used as follows:
`javascript``
RAML.Parser.loadFile('http://localhost:9001/myAPI.raml').then( function(data) {
console.log(data)
}, function(error) {
console.log('Error parsing: ' + error);
});
Notice that the in-browser version can fetch remote API definitions via XHR.