nsdeclare
Safely declare a namespace using dot notation
Last updated 12 years ago by lazd .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install nsdeclare 
SYNC missed versions from official npm registry.

nsdeclare NPM version Build status

Safely declare a namespace using dot notation

Usage

var declare = require('nsdeclare');

var declaration = declare('MyApp.Templates');

Result:

this["MyApp"] = this["MyApp"] || {};
this["MyApp"]["Templates"] = this["MyApp"]["Templates"] || {};

Options

Options can be passed as the second argument to nsdeclare.

value

Type: String

By passing options.value, you can use nsdeclare to both declare and safely assign properties of a namespace:

var declare = require('nsdeclare');

var declaration = declare('MyApp.Templates.Main', { value: 'function() { return "Main"; }' });

Result:

this["MyApp"] = this["MyApp"] || {};
this["MyApp"]["Templates"] = this["MyApp"]["Templates"] || {};
this["MyApp"]["Templates"]["Main"] = function() { return "Main"; };

declared

Type: Object

To avoid redeclaration, you can pass a list of already declared namespace parts as options.declared:

var declare = require('nsdeclare');

var options = {
  declared: {
    'MyApp': true
  }
};

var declaration = [
  declare('MyApp.Views', options),
  declare('MyApp.Templates', options),
  declare('MyApp.Models', options),
  declare('MyApp.Collections', options)
].join('\n');

Result:

this["MyApp"]["Views"] = this["MyApp"]["Views"] || {};
this["MyApp"]["Templates"] = this["MyApp"]["Templates"] || {};
this["MyApp"]["Models"] = this["MyApp"]["Models"] || {};
this["MyApp"]["Collections"] = this["MyApp"]["Collections"] || {};

Note that, if you don't pass options.declared and a namespace part is already declared, nsdeclare will not overwrite it.

separator

Type: String

Default: '\n'

If you would like to separate declaration parts with something other than \n, you can pass it as options.separator:

var declare = require('nsdeclare');

var declaration = declare('MyApp.Templates', { separator: '' });

Result:

this["MyApp"] = this["MyApp"] || {};this["MyApp"]["Templates"] = this["MyApp"]["Templates"] || {};

root

Type: String

Default: 'this'

By default, nsdeclare will declare namespaces within the this object (which defaults to window in browser environments). You can change this behavior with options.root:

var declare = require('nsdeclare');

var declaration = declare('MyApp.Templates', { root: 'global' });

Result:

global["MyApp"] = global["MyApp"] || {};
global["MyApp"]["Templates"] = global["MyApp"]["Templates"] || {};

response

Type: String
Default: declaration

By default, nsdeclare will return the declaration as a string. In some cases, you might want additional details such as a safe reference to the namespace itself. Passing response: 'details' will cause nsdeclare to return an object with the following properties:

  • namespace - The namespace itself as a String
  • declaration - The declaration of the namespace as a String
var declare = require('nsdeclare');

var declaration = declare('MyApp.Templates', { response: 'object' });

Result:

{
  namespace: 'this["MyApp"]["Templates"]',
  declaration: 'this["MyApp"] = this["MyApp"] || {};\nthis["MyApp"]["Templates"] = this["MyApp"]["Templates"] || {};'
}

Current Tags

  • 0.1.0                                ...           latest (12 years ago)

2 Versions

  • 0.1.0                                ...           12 years ago
  • 0.0.0                                ...           12 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 1
Last Day 0
Last Week 2
Last Month 1
Dependencies (0)
None
Dev Dependencies (2)
Dependents (1)

Copyright 2013 - present © cnpmjs.org | Home |