Source: core/converter/trim-converter.js

/**
 * @module montage/core/converter/trim-converter
 * @requires montage/core/converter/converter
 */
var Converter = require("./converter").Converter,
    trim = require('lodash.trim'),
    deprecate = require("../deprecate"),
    shouldMuteWarning = false,
    singleton;

/**
 * @class TrimConverter
 * @classdesc Trims a string of white space.
 * @example
 * <caption>Removes leading and trailing white space from a string.</caption>
 * var Converter= require("./converter").Converter,
 * TrimConverter = require("./converter").TrimConverter;
 * var str = "      Hello World     ";
 * var trimConverter = new TrimConverter();
 * console.log("After trim: " + trimConverter.convert(str));
 * // After trim: Hello World
 */
var TrimConverter = exports.TrimConverter = Converter.specialize({

    constructor: {
        value: function () {
            if (this.constructor === TrimConverter) {
                if (!singleton) {
                    singleton = this;
                }

                if (!shouldMuteWarning) {
                    deprecate.deprecationWarning(
                        "Instantiating TrimConverter is deprecated," +
                        " use its singleton instead"
                    );
                }

                return singleton;
            }

            return this;
        }
    },

    _convert: {
        value: function (v) {
            if (v && typeof v === 'string') {
                return trim(v);
            }
        }
    },

    /**
     * Trims the provided string and returns the new string.
     * @function
     * @param {string} v The string to trim.
     * @returns this._convert(v)
     */
    convert: {value: function (v) {
        return this._convert(v);
    }},

    /**
     * Reverts the conversion.
     * @function
     * @param {string} v The string to revert.
     * @returns this._convert(v)
     */
    revert: {value: function (v) {
        return this._convert(v);
    }}

});

Object.defineProperty(exports, 'singleton', {
    get: function () {
        if (!singleton) {
            shouldMuteWarning = true;
            singleton = new TrimConverter();
            shouldMuteWarning = false;
        }

        return singleton;
    }
});