all files / montage/core/converter/ currency-converter.js

100% Statements 9/9
100% Branches 6/6
100% Functions 1/1
100% Lines 9/9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73                                                                                                            12× 12×     12×   10×   12×            
/**
 * @module montage/core/converter/currency-converter
 * @requires montage/core/converter/number-converter
 */
var NumberConverter = require("./number-converter").NumberConverter;
 
/**
 * @class CurrencyConverter
 * @classdesc Formats a value as a currency.
 * @extends NumberConverter
 */
exports.CurrencyConverter = NumberConverter.specialize( /** @lends CurrencyConverter# */ {
 
    /**
     * @type {string}
     * @default {string} '$'
     */
    currency: {
        value: '$'
    },
 
    /**
     * @type {number}
     * @default {number} 2
     */
    decimals: {
        value: 2
    },
 
    /**
     * @type {boolean}
     * @default {boolean} false
     */
    useParensForNegative: {
        value: false
    },
 
    /**
     * @type {boolean}
     * @default {boolean} false
     */
    showCurrencyBeforeNumber: {
        value: false
    },
 
    forceDecimals: {
        value: true
    },
 
    /**
     * @function
     * @param {number} amount
     * @returns {string} The formatted currency value.
     */
    convert: {
        value: function (amount) {
            var stringValue = this.super(amount);
            if ((amount < 0) && this.useParensForNegative) {
                stringValue = '(' + stringValue.substring(1, stringValue.length) + ')';
            }
 
            if(this.showCurrencyBeforeNumber) {
                stringValue = this.currency + ' ' + stringValue;
            } else {
                stringValue = stringValue + ' ' + this.currency;
            }
            return stringValue;
        }
    }
 
});