Skip to content
forked from 418sec/mosc

A simple inline javascript object model builder

Notifications You must be signed in to change notification settings

Asjidkalam/mosc

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

Mosc.js (A simple inline object model builder)

Mosc.js is a simple inline object model builder for NodeJS (A small port exists for client-side javascript). It can be used to build ORM schemas, app configurations and a host of other valid object usecases.

Don't like those pesky curly braces? Just:

npm install Mosc --save

var Mosc = require('mosc');
var mosc = new Mosc({});
var SimpleORMUserModel = mosc.build('title:string')
							 .build('name:string')
                             .build('age:integer')
                             .end();

SimpleORMUserModel above becomes:

{
	title:"string",
    name:"string",
    age:"integer"
}

Pass in a context dictionary

You can pass a context dictionary argument for Mosc to use when evaluating certain placeholders in your build arguments

var context_dictionary = {'SEQ':{string:'SEQUELIZE_STRING'}};
var result = new mosc(context_dictionary)
                 .build('id', 'type:*SEQ*.string')
                 .end();
/*
*SEQ*.string is evaluated using the context dictionary passed
Mosc looks for the property SEQ in the context dictionary, 
it then checks if there is a corresponding string property
if there is, Mosq evaluates SEQ.string and returns the result hence:
result = {
   id: {
     type:'SEQUELIZE_STRING'
   }
}
if there isn't MOSC throws a context not found in eval dict error
*/

With Mosc, it is also possible to do depth builds i.e object in object in object:

var obj = mosc.buildIn('attributes.id'); 
/*
obj = {
		attributes:
        {
        	id:
            {
            
            }
        }
      }
*/
var obj = mosc.buildIn('attributes.id', 'type:String, primaryKey:true').end();
/*
obj = {
		attributes:
        {
        	id:
            {
              type:'String',
              primaryKey:true
            }
        }
      }
*/

(For depth builds, the final path in the depth must be a valid object i.e 'attributes.id', id, if it exists, must be an object otherwise Mosc throws a 'Path must be an object error')

About

A simple inline javascript object model builder

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • HTML 52.6%
  • JavaScript 32.4%
  • CSS 15.0%