Skip to content

Instantly share code, notes, and snippets.

@iboying
Forked from chrisvfritz/currency-validator.js
Created July 20, 2017 00:56
Show Gist options
  • Select an option

  • Save iboying/404bc33820d8010af3d1ce23faec8dbf to your computer and use it in GitHub Desktop.

Select an option

Save iboying/404bc33820d8010af3d1ce23faec8dbf to your computer and use it in GitHub Desktop.

Revisions

  1. @chrisvfritz chrisvfritz revised this gist Jun 21, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion currency-validator.js
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    var currencyValidator = {
    format: function (number) {
    return (Math.trunc(number * 100) / 100).toFixed(2)
    return (Math.trunc(number * 1000000000000) / 1000000000000).toFixed(2)
    },
    parse: function (newString, oldNumber) {
    var CleanParse = function (value) {
  2. @chrisvfritz chrisvfritz revised this gist Oct 3, 2016. 1 changed file with 23 additions and 23 deletions.
    46 changes: 23 additions & 23 deletions currency-validator.js
    Original file line number Diff line number Diff line change
    @@ -1,54 +1,54 @@
    var currencyValidator = {
    format: function (number) {
    return (Math.trunc(number * 100) / 100).toFixed(2)
    format: function (number) {
    return (Math.trunc(number * 100) / 100).toFixed(2)
    },
    parse: function (newString, oldNumber) {
    var CleanParse = function (value) {
    return { value: value }
    parse: function (newString, oldNumber) {
    var CleanParse = function (value) {
    return { value: value }
    }
    var CurrencyWarning = function (warning, value) {
    return {
    warning: warning,
    var CurrencyWarning = function (warning, value) {
    return {
    warning: warning,
    value: value,
    attempt: newString
    attempt: newString
    }
    }
    var NotAValidDollarAmountWarning = function (value) {
    return new CurrencyWarning(newString + ' is not a valid dollar amount', value)
    return new CurrencyWarning(newString + ' is not a valid dollar amount', value)
    }
    var AutomaticConversionWarning = function (value) {
    return new CurrencyWarning(newString + ' was automatically converted to ' + value, value)
    return new CurrencyWarning(newString + ' was automatically converted to ' + value, value)
    }

    var newNumber = Number(newString)
    var newNumber = Number(newString)
    var indexOfDot = newString.indexOf('.')
    var indexOfE = newString.indexOf('e')

    if (isNaN(newNumber)) {
    if (
    indexOfDot === -1 &&
    if (isNaN(newNumber)) {
    if (
    indexOfDot === -1 &&
    indexOfE > 0 &&
    indexOfE === newString.length - 1 &&
    indexOfE === newString.length - 1 &&
    Number(newString.slice(0, indexOfE)) !== 0
    ) {
    return new CleanParse(oldNumber)
    return new CleanParse(oldNumber)
    } else {
    return new NotAValidDollarAmountWarning(oldNumber)
    }
    }
    }

    var newCurrencyString = currencyValidator.format(newNumber)
    var newCurrencyNumber = Number(newCurrencyString)

    if (newCurrencyNumber === newNumber) {
    if (indexOfE !== -1 && indexOfE === newString.length - 2) {
    return new AutomaticConversionWarning(newNumber)
    if (indexOfE !== -1 && indexOfE === newString.length - 2) {
    return new AutomaticConversionWarning(newNumber)
    } else {
    return new CleanParse(newNumber)
    return new CleanParse(newNumber)
    }
    } else {
    return new NotAValidDollarAmountWarning(
    newNumber > newCurrencyNumber
    return new NotAValidDollarAmountWarning(
    newNumber > newCurrencyNumber
    ? newCurrencyNumber
    : oldNumber
    )
  3. @chrisvfritz chrisvfritz revised this gist Oct 3, 2016. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion currency-validator.js
    Original file line number Diff line number Diff line change
    @@ -54,4 +54,4 @@ var currencyValidator = {
    )
    }
    }
    }
    }
  4. @chrisvfritz chrisvfritz created this gist Oct 3, 2016.
    57 changes: 57 additions & 0 deletions currency-validator.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,57 @@
    var currencyValidator = {
    format: function (number) {
    return (Math.trunc(number * 100) / 100).toFixed(2)
    },
    parse: function (newString, oldNumber) {
    var CleanParse = function (value) {
    return { value: value }
    }
    var CurrencyWarning = function (warning, value) {
    return {
    warning: warning,
    value: value,
    attempt: newString
    }
    }
    var NotAValidDollarAmountWarning = function (value) {
    return new CurrencyWarning(newString + ' is not a valid dollar amount', value)
    }
    var AutomaticConversionWarning = function (value) {
    return new CurrencyWarning(newString + ' was automatically converted to ' + value, value)
    }

    var newNumber = Number(newString)
    var indexOfDot = newString.indexOf('.')
    var indexOfE = newString.indexOf('e')

    if (isNaN(newNumber)) {
    if (
    indexOfDot === -1 &&
    indexOfE > 0 &&
    indexOfE === newString.length - 1 &&
    Number(newString.slice(0, indexOfE)) !== 0
    ) {
    return new CleanParse(oldNumber)
    } else {
    return new NotAValidDollarAmountWarning(oldNumber)
    }
    }

    var newCurrencyString = currencyValidator.format(newNumber)
    var newCurrencyNumber = Number(newCurrencyString)

    if (newCurrencyNumber === newNumber) {
    if (indexOfE !== -1 && indexOfE === newString.length - 2) {
    return new AutomaticConversionWarning(newNumber)
    } else {
    return new CleanParse(newNumber)
    }
    } else {
    return new NotAValidDollarAmountWarning(
    newNumber > newCurrencyNumber
    ? newCurrencyNumber
    : oldNumber
    )
    }
    }
    }