blob: bee38582822103ebe794618791ed40be9c7353bb [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
var inherits = require('inherits');
var vanadium = require('vanadium');
module.exports = {
addNameProperties: addNameProperties,
InvalidNameError: InvalidNameError
};
/**
* Creates the 'name' and 'fullName' properties on an object.
* @private
*/
function addNameProperties(self, parentFullName, relativeName) {
if (relativeName.indexOf('/') >= 0) {
throw new InvalidNameError(relativeName);
}
var fullName = vanadium.naming.join(parentFullName, relativeName);
/**
* @property name
* @type {string}
*/
Object.defineProperty(self, 'name', {
value: relativeName,
writable: false,
enumerable: true
});
/**
* @property name
* @type {string}
*/
Object.defineProperty(self, 'fullName', {
value: fullName,
writable: false,
enumerable: true
});
}
function InvalidNameError(name) {
Error.call(this);
this.message = 'Invalid name "' + name + '". ' +
' Use vanadium.naming.encodeAsNamePart() to escape.';
}
inherits(InvalidNameError, Error);