humanizer.node
Advanced tools
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const MetricNumerals_1 = require("./src/Humanizer/Numbers/MetricNumerals"); | ||
| Number.prototype.toMetric = function () { | ||
| return MetricNumerals_1.MetricNumerals.toMetric(this); | ||
| }; | ||
| String.prototype.fromMetric = function () { | ||
| return MetricNumerals_1.MetricNumerals.fromMetric(this); | ||
| }; | ||
| //# sourceMappingURL=metricNumerals.js.map |
| {"version":3,"file":"metricNumerals.js","sourceRoot":"","sources":["../metricNumerals.ts"],"names":[],"mappings":";;AAAA,2EAAuE;AAWvE,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG;IACzB,OAAO,+BAAc,CAAC,QAAQ,CAAC,IAAc,CAAC,CAAA;AACjD,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG;IAC1B,OAAO,+BAAc,CAAC,UAAU,CAAC,IAAc,CAAC,CAAA;AACpD,CAAC,CAAA"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| /** | ||
| * (5).Tens == 50 | ||
| */ | ||
| Number.prototype.tens = function () { | ||
| return this * 10; | ||
| }; | ||
| Number.prototype.hundreds = function () { | ||
| return this * 100; | ||
| }; | ||
| Number.prototype.thousands = function () { | ||
| return this * 1000; | ||
| }; | ||
| Number.prototype.millions = function () { | ||
| return this * 1000000; | ||
| }; | ||
| Number.prototype.billions = function () { | ||
| return this * 1000000000; | ||
| }; | ||
| //# sourceMappingURL=numberToNumbers.js.map |
| {"version":3,"file":"numberToNumbers.js","sourceRoot":"","sources":["../numberToNumbers.ts"],"names":[],"mappings":";;AAaA;;GAEG;AACH,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG;IACpB,OAAO,IAAc,GAAG,EAAE,CAAC;AAC/B,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG;IACxB,OAAO,IAAc,GAAG,GAAG,CAAC;AAChC,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG;IACzB,OAAO,IAAc,GAAG,IAAI,CAAC;AACjC,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG;IACxB,OAAO,IAAc,GAAG,OAAO,CAAC;AACpC,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG;IACxB,OAAO,IAAc,GAAG,UAAU,CAAC;AACvC,CAAC,CAAA"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const RomanNumerals_1 = require("./src/Humanizer/Numbers/RomanNumerals"); | ||
| Number.prototype.toRoman = function () { | ||
| return RomanNumerals_1.RomanNumerals.toRoman(this); | ||
| }; | ||
| String.prototype.fromRoman = function () { | ||
| return RomanNumerals_1.RomanNumerals.fromRoman(this); | ||
| }; | ||
| //# sourceMappingURL=romanNumerals.js.map |
| {"version":3,"file":"romanNumerals.js","sourceRoot":"","sources":["../romanNumerals.ts"],"names":[],"mappings":";;AACI,yEAAqE;AAYrE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG;IACvB,OAAO,6BAAa,CAAC,OAAO,CAAC,IAAc,CAAC,CAAA;AAChD,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG;IACzB,OAAO,6BAAa,CAAC,SAAS,CAAC,IAAc,CAAC,CAAA;AAClD,CAAC,CAAA"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| /// <summary> | ||
| /// Style for the cardinal direction humanization | ||
| /// </summary> | ||
| var HeadingStyle; | ||
| (function (HeadingStyle) { | ||
| /// <summary> | ||
| /// Returns an abbreviated format | ||
| /// </summary> | ||
| HeadingStyle[HeadingStyle["Abbreviated"] = 0] = "Abbreviated"; | ||
| /// <summary> | ||
| /// Returns the full format | ||
| /// </summary> | ||
| HeadingStyle[HeadingStyle["Full"] = 1] = "Full"; | ||
| })(HeadingStyle = exports.HeadingStyle || (exports.HeadingStyle = {})); | ||
| /// <summary> | ||
| /// Contains extensions to transform a number indicating a heading into the | ||
| /// textual representation of the heading. | ||
| /// </summary> | ||
| class Heading { | ||
| // https://stackoverflow.com/a/7490772/1720761 | ||
| /// <summary> | ||
| /// Returns a textual representation of the heading. | ||
| /// | ||
| /// This representation has a maximum deviation of 11.25 degrees. | ||
| /// </summary> | ||
| /// <returns>A textual representation of the heading</returns> | ||
| /// <param name="culture">The culture to return the textual representation in</param> | ||
| /// <param name="style">Whether to return a short result or not. <see cref="HeadingStyle"/></param> | ||
| static toHeading(heading, style = HeadingStyle.Abbreviated) { | ||
| const val = Math.floor((heading / 22.5) + .5); | ||
| const result = Heading.headings[val % 16]; | ||
| if (style === HeadingStyle.Abbreviated) { | ||
| return result.short; | ||
| } | ||
| return result.full; | ||
| } | ||
| /// <summary> | ||
| /// Returns a char arrow indicating the heading. | ||
| /// | ||
| /// This representation has a maximum deviation of 22.5 degrees. | ||
| /// </summary> | ||
| /// <returns>The heading arrow.</returns> | ||
| static toHeadingArrow(heading) { | ||
| const val = Math.floor((heading / 45) + .5); | ||
| return Heading.headingArrows[val % 8]; | ||
| } | ||
| /// <summary> | ||
| /// Returns a heading based on the short textual representation of the heading. | ||
| /// </summary> | ||
| /// <returns>The heading. -1 if the heading could not be parsed.</returns> | ||
| static fromAbbreviatedHeading(heading) { | ||
| const index = Heading.headings.findIndex((element) => { | ||
| return element.short.toUpperCase() === heading; | ||
| }); | ||
| if (index === -1) { | ||
| return -1; | ||
| } | ||
| return (index * 22.5); | ||
| } | ||
| } | ||
| exports.Heading = Heading; | ||
| Heading.headings = [ | ||
| { short: "N", full: "north" }, | ||
| { short: "NNE", full: "north-northeast" }, | ||
| { short: "NE", full: "northeast" }, | ||
| { short: "ENE", full: "east-northeast" }, | ||
| { short: "E", full: "east" }, | ||
| { short: "ESE", full: "east-southeast" }, | ||
| { short: "SE", full: "southeast" }, | ||
| { short: "SSE", full: "south-southeast" }, | ||
| { short: "S", full: "south" }, | ||
| { short: "SSW", full: "south-southwest" }, | ||
| { short: "SW", full: "southwest" }, | ||
| { short: "WSW", full: "west-southwest" }, | ||
| { short: "W", full: "west" }, | ||
| { short: "WNW", full: "west-northwest" }, | ||
| { short: "NW", full: "northwest" }, | ||
| { short: "NNW", full: "north-northwest" } | ||
| ]; | ||
| Heading.headingArrows = ["↑", "↗", "→", "↘", "↓", "↙", "←", "↖"]; | ||
| //# sourceMappingURL=Heading.js.map |
| {"version":3,"file":"Heading.js","sourceRoot":"","sources":["../../../../src/Humanizer/Numbers/Heading.ts"],"names":[],"mappings":"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"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| class MetricNumerals { | ||
| /// <summary> | ||
| /// Converts a Metric representation into a number. | ||
| /// </summary> | ||
| /// <remarks> | ||
| /// We don't support input in the format {number}{name} nor {number} {name}. | ||
| /// We only provide a solution for {number}{symbol} and {number} {symbol}. | ||
| /// </remarks> | ||
| /// <param name="input">Metric representation to convert to a number</param> | ||
| /// <example> | ||
| /// <code> | ||
| /// "1k".FromMetric() => 1000d | ||
| /// "123".FromMetric() => 123d | ||
| /// "100m".FromMetric() => 1E-1 | ||
| /// </code> | ||
| /// </example> | ||
| /// <returns>A number after a conversion from a Metric representation.</returns> | ||
| static fromMetric(input) { | ||
| input = MetricNumerals.cleanRepresentation(input); | ||
| return MetricNumerals.buildNumber(input, input[input.length - 1]); | ||
| } | ||
| /// <summary> | ||
| /// Converts a number into a valid and Human-readable Metric representation. | ||
| /// </summary> | ||
| /// <remarks> | ||
| /// Inspired by a snippet from Thom Smith. | ||
| /// See <a href="http://stackoverflow.com/questions/12181024/formatting-a-number-with-a-metric-prefix">this link</a> for more. | ||
| /// </remarks> | ||
| /// <param name="input">Number to convert to a Metric representation.</param> | ||
| /// <param name="hasSpace">True will split the number and the symbol with a whitespace.</param> | ||
| /// <param name="useSymbol">True will use symbol instead of name</param> | ||
| /// <param name="decimals">If not null it is the numbers of decimals to round the number to</param> | ||
| /// <example> | ||
| /// <code> | ||
| /// 1000d.ToMetric() => "1k" | ||
| /// 123d.ToMetric() => "123" | ||
| /// 1E-1.ToMetric() => "100m" | ||
| /// </code> | ||
| /// </example> | ||
| /// <returns>A valid Metric representation</returns> | ||
| static toMetric(input, hasSpace = false, useSymbol = true, decimals) { | ||
| if (input === 0) { | ||
| return input.toString(); | ||
| } | ||
| if (MetricNumerals.isOutOfRange(input)) { | ||
| throw new Error("ArgumentOutOfRangeException"); | ||
| } | ||
| return MetricNumerals.buildRepresentation(input, hasSpace, useSymbol, decimals); | ||
| } | ||
| /// <summary> | ||
| /// Clean or handle any wrong input | ||
| /// </summary> | ||
| /// <param name="input">Metric representation to clean</param> | ||
| /// <returns>A cleaned representation</returns> | ||
| static cleanRepresentation(input) { | ||
| if (input == null) { | ||
| throw new Error("ArgumentNullException"); | ||
| } | ||
| input = input.trim(); | ||
| input = MetricNumerals.replaceNameBySymbol(input); | ||
| if (input.length === 0 || MetricNumerals.isInvalidMetricNumeral(input)) { | ||
| throw new Error("Empty or invalid Metric string"); | ||
| } | ||
| return input.replace(" ", ""); | ||
| } | ||
| /// <summary> | ||
| /// Build a number from a metric representation or from a number | ||
| /// </summary> | ||
| /// <param name="input">A Metric representation to parse to a number</param> | ||
| /// <param name="last">The last character of input</param> | ||
| /// <returns>A number build from a Metric representation</returns> | ||
| static buildNumber(input, last) { | ||
| return MetricNumerals.isLetter(last) | ||
| ? MetricNumerals.buildMetricNumber(input, last) | ||
| : Number(input); | ||
| } | ||
| static isLetter(char) { | ||
| return char.length === 1 && (/[a-z]/i).test(char); | ||
| } | ||
| /// <summary> | ||
| /// Build a number from a metric representation | ||
| /// </summary> | ||
| /// <param name="input">A Metric representation to parse to a number</param> | ||
| /// <param name="last">The last character of input</param> | ||
| /// <returns>A number build from a Metric representation</returns> | ||
| static buildMetricNumber(input, last) { | ||
| const num = Number(input.substring(0, input.length - 1)); | ||
| const expo = MetricNumerals.Symbols[0].indexOf(last) >= 0 ? | ||
| MetricNumerals.getExponent(MetricNumerals.Symbols[0], last) : | ||
| -MetricNumerals.getExponent(MetricNumerals.Symbols[1], last); | ||
| return num * Math.pow(10, expo); | ||
| } | ||
| static getExponent(symbols, last) { | ||
| return (symbols.indexOf(last) + 1) * 3; | ||
| } | ||
| /// <summary> | ||
| /// Replace every symbol's name by its symbol representation. | ||
| /// </summary> | ||
| /// <param name="input">Metric representation with a name or a symbol</param> | ||
| /// <returns>A metric representation with a symbol</returns> | ||
| static replaceNameBySymbol(input) { | ||
| MetricNumerals.Names.map((item, index) => { | ||
| input = input.replace(item.value, item.key); | ||
| }); | ||
| return input; | ||
| } | ||
| /// <summary> | ||
| /// Build a Metric representation of the number. | ||
| /// </summary> | ||
| /// <param name="input">Number to convert to a Metric representation.</param> | ||
| /// <param name="hasSpace">True will split the number and the symbol with a whitespace.</param> | ||
| /// <param name="useSymbol">True will use symbol instead of name</param> | ||
| /// <param name="decimals">If not null it is the numbers of decimals to round the number to</param> | ||
| /// <returns>A number in a Metric representation</returns> | ||
| static buildRepresentation(input, hasSpace, useSymbol, decimals) { | ||
| const exponent = Math.floor(Math.log10(Math.abs(input)) / 3); | ||
| if (exponent !== 0) { | ||
| return MetricNumerals.buildMetricRepresentation(input, exponent, hasSpace, useSymbol, decimals); | ||
| } | ||
| let representation = decimals ? Math.round(input).toString() : input.toString(); | ||
| if (hasSpace) { | ||
| representation += " "; | ||
| } | ||
| return representation; | ||
| } | ||
| /// <summary> | ||
| /// Build a Metric representation of the number. | ||
| /// </summary> | ||
| /// <param name="input">Number to convert to a Metric representation.</param> | ||
| /// <param name="exponent">Exponent of the number in a scientific notation</param> | ||
| /// <param name="hasSpace">True will split the number and the symbol with a whitespace.</param> | ||
| /// <param name="useSymbol">True will use symbol instead of name</param> | ||
| /// <param name="decimals">If not null it is the numbers of decimals to round the number to</param> | ||
| /// <returns>A number in a Metric representation</returns> | ||
| static buildMetricRepresentation(input, exponent, hasSpace, useSymbol, decimals) { | ||
| let number = input * Math.pow(1000, -exponent); | ||
| if (decimals) { | ||
| number = Math.round(number); | ||
| } | ||
| const symbol = Math.sign(exponent) === 1 | ||
| ? MetricNumerals.Symbols[0][exponent - 1] | ||
| : MetricNumerals.Symbols[1][-exponent - 1]; | ||
| return number | ||
| + (hasSpace ? " " : "") | ||
| + MetricNumerals.getUnit(symbol, useSymbol); | ||
| } | ||
| /// <summary> | ||
| /// Get the unit from a symbol of from the symbol's name. | ||
| /// </summary> | ||
| /// <param name="symbol">The symbol linked to the unit</param> | ||
| /// <param name="useSymbol">True will use symbol instead of name</param> | ||
| /// <returns>A symbol or a symbol's name</returns> | ||
| static getUnit(symbol, useSymbol) { | ||
| // @ts-ignore | ||
| return useSymbol ? symbol.toString() : MetricNumerals.Names[symbol]; | ||
| } | ||
| /// <summary> | ||
| /// Check if a Metric representation is out of the valid range. | ||
| /// </summary> | ||
| /// <param name="input">A Metric representation who might be out of the valid range.</param> | ||
| /// <returns>True if input is out of the valid range.</returns> | ||
| static isOutOfRange(input) { | ||
| // bool outside(double min, double max) => !(max > input && input > min); | ||
| // return (Math.Sign(input) == 1 && outside(SmallLimit, BigLimit)) | ||
| // || (Math.Sign(input) == -1 && outside(-BigLimit, -SmallLimit)); | ||
| return false; | ||
| } | ||
| /// <summary> | ||
| /// Check if a string is not a valid Metric representation. | ||
| /// A valid representation is in the format "{0}{1}" or "{0} {1}" | ||
| /// where {0} is a number and {1} is an allowed symbol. | ||
| /// </summary> | ||
| /// <remarks> | ||
| /// ToDo: Performance: Use (string input, out number) to escape the double use of Parse() | ||
| /// </remarks> | ||
| /// <param name="input">A string who might contain a invalid Metric representation.</param> | ||
| /// <returns>True if input is not a valid Metric representation.</returns> | ||
| static isInvalidMetricNumeral(input) { | ||
| const index = input.length - 1; | ||
| const last = input[index]; | ||
| const isSymbol = MetricNumerals.Symbols[0].indexOf(last) >= 0 || MetricNumerals.Symbols[1].indexOf(last) >= 0; | ||
| if (!isSymbol) { | ||
| return true; | ||
| } | ||
| input = input.replace(last, ""); | ||
| return isNaN(Number(input)); | ||
| } | ||
| } | ||
| exports.MetricNumerals = MetricNumerals; | ||
| MetricNumerals.BigLimit = 1E+27; | ||
| MetricNumerals.SmallLimit = 1E-27; | ||
| /// <summary> | ||
| /// Symbols is a list of every symbols for the Metric system. | ||
| /// </summary> | ||
| MetricNumerals.Symbols = [ | ||
| ["k", "M", "G", "T", "P", "E", "Z", "Y"], | ||
| ["m", "μ", "n", "p", "f", "a", "z", "y"] | ||
| ]; | ||
| /// <summary> | ||
| /// Names link a Metric symbol (as key) to its name (as value). | ||
| /// </summary> | ||
| /// <remarks> | ||
| /// We dont support : | ||
| /// {'h', "hecto"}, | ||
| /// {'da', "deca" }, // !string | ||
| /// {'d', "deci" }, | ||
| /// {'c', "centi"}, | ||
| /// </remarks> | ||
| MetricNumerals.Names = [ | ||
| { key: "Y", value: "yotta" }, | ||
| { key: "Z", value: "zetta" }, | ||
| { key: "E", value: "exa" }, | ||
| { key: "P", value: "peta" }, | ||
| { key: "T", value: "tera" }, | ||
| { key: "G", value: "giga" }, | ||
| { key: "M", value: "mega" }, | ||
| { key: "k", value: "kilo" }, | ||
| { key: "m", value: "milli" }, | ||
| { key: "μ", value: "micro" }, | ||
| { key: "n", value: "nano" }, | ||
| { key: "p", value: "pico" }, | ||
| { key: "f", value: "femto" }, | ||
| { key: "a", value: "atto" }, | ||
| { key: "z", value: "zepto" }, | ||
| { key: "y", value: "yocto" } | ||
| ]; | ||
| //# sourceMappingURL=MetricNumerals.js.map |
| {"version":3,"file":"MetricNumerals.js","sourceRoot":"","sources":["../../../../src/Humanizer/Numbers/MetricNumerals.ts"],"names":[],"mappings":"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"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| /// <summary> | ||
| /// Contains extension methods for changing a number to Roman representation (ToRoman) and from Roman representation back | ||
| /// to the number (FromRoman) | ||
| /// </summary> | ||
| class RomanNumerals { | ||
| /// <summary> | ||
| /// Converts Roman numbers into integer | ||
| /// </summary> | ||
| /// <param name="input">Roman number</param> | ||
| /// <returns>Human-readable number</returns> | ||
| static fromRoman(input) { | ||
| if (input == null) { | ||
| throw new Error("input can't be null"); | ||
| } | ||
| input = input.trim().toUpperCase(); | ||
| const length = input.length; | ||
| if ((length === 0) || RomanNumerals.isInvalidRomanNumeral(input)) { | ||
| throw new Error("Empty or invalid Roman numeral string."); | ||
| } | ||
| let total = 0; | ||
| let i = length; | ||
| while (i > 0) { | ||
| let digit = RomanNumerals.romanToDigit(input[--i].toString()); | ||
| if (i > 0) { | ||
| const previousDigit = RomanNumerals.romanToDigit(input[i - 1].toString()); | ||
| if (previousDigit < digit) { | ||
| digit -= previousDigit; | ||
| i--; | ||
| } | ||
| } | ||
| total += digit; | ||
| } | ||
| return total; | ||
| } | ||
| static romanToDigit(char) { | ||
| let rtnVal = 0; | ||
| RomanNumerals.RomanNumerals.forEach(pair => { | ||
| if (pair.key === char) { | ||
| rtnVal = pair.value; | ||
| } | ||
| }); | ||
| return rtnVal; | ||
| } | ||
| /// <summary> | ||
| /// Converts the input to Roman number | ||
| /// </summary> | ||
| /// <param name="input">Integer input</param> | ||
| /// <returns>Roman number</returns> | ||
| /// <exception cref="ArgumentOutOfRangeException">Thrown when the input is smaller than 1 or larger than 3999</exception> | ||
| static toRoman(input) { | ||
| const minValue = 1; | ||
| const maxValue = 3999; | ||
| if ((input < minValue) || (input > maxValue)) { | ||
| throw new Error("ArgumentOutOfRangeException"); | ||
| } | ||
| let sb = ""; | ||
| RomanNumerals.RomanNumerals.forEach(pair => { | ||
| while (Math.floor(input / pair.value) > 0) { | ||
| sb += pair.key; | ||
| input -= pair.value; | ||
| } | ||
| }); | ||
| return sb; | ||
| } | ||
| static isInvalidRomanNumeral(input) { | ||
| return !RomanNumerals.ValidRomanNumeral.test(input); | ||
| } | ||
| } | ||
| exports.RomanNumerals = RomanNumerals; | ||
| RomanNumerals.RomanNumerals = [ | ||
| { key: "M", value: 1000 }, | ||
| { key: "CM", value: 900 }, | ||
| { key: "D", value: 500 }, | ||
| { key: "CD", value: 400 }, | ||
| { key: "C", value: 100 }, | ||
| { key: "XC", value: 90 }, | ||
| { key: "L", value: 50 }, | ||
| { key: "XL", value: 40 }, | ||
| { key: "X", value: 10 }, | ||
| { key: "IX", value: 9 }, | ||
| { key: "V", value: 5 }, | ||
| { key: "IV", value: 4 }, | ||
| { key: "I", value: 1 } | ||
| ]; | ||
| RomanNumerals.ValidRomanNumeral = /^(?:(?=[MDCLXVI])((M{0,3})((C[DM])|(D?C{0,3}))?((X[LC])|(L?XX{0,2})|L)?((I[VX])|(V?(II{0,2}))|V)?))$/i; | ||
| //# sourceMappingURL=RomanNumerals.js.map |
| {"version":3,"file":"RomanNumerals.js","sourceRoot":"","sources":["../../../../src/Humanizer/Numbers/RomanNumerals.ts"],"names":[],"mappings":"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"} |
| require('./dist') | ||
| // let fileSize = (10).kilobytes() | ||
| // console.log(fileSize.bits) // -> 81920 | ||
| // console.log(fileSize.bytes) // -> 10240 | ||
| // console.log(fileSize.kilobytes) // -> 10 | ||
| // console.log(fileSize.megabytes) // -> 0.009765625 | ||
| // console.log(fileSize.gigabytes) // -> 0.0000095367431640625 | ||
| // console.log(fileSize.terabytes) // -> 9.313225746154785e-9 | ||
| console.log("100m".fromMetric()) |
| import { MetricNumerals } from "./src/Humanizer/Numbers/MetricNumerals" | ||
| declare global { | ||
| interface Number { | ||
| toMetric(): string | ||
| } | ||
| interface String { | ||
| fromMetric(): number | ||
| } | ||
| } | ||
| Number.prototype.toMetric = function (): string { | ||
| return MetricNumerals.toMetric(this as number) | ||
| } | ||
| String.prototype.fromMetric = function (): number { | ||
| return MetricNumerals.fromMetric(this as string) | ||
| } | ||
| export {}; | ||
| declare global { | ||
| interface Number { | ||
| tens(): number | ||
| hundreds(): number | ||
| thousands(): number | ||
| millions(): number | ||
| billions(): number | ||
| } | ||
| } | ||
| /** | ||
| * (5).Tens == 50 | ||
| */ | ||
| Number.prototype.tens = function (): number { | ||
| return this as number * 10; | ||
| } | ||
| Number.prototype.hundreds = function (): number { | ||
| return this as number * 100; | ||
| } | ||
| Number.prototype.thousands = function (): number { | ||
| return this as number * 1000; | ||
| } | ||
| Number.prototype.millions = function (): number { | ||
| return this as number * 1000000; | ||
| } | ||
| Number.prototype.billions = function (): number { | ||
| return this as number * 1000000000; | ||
| } |
| import { RomanNumerals } from "./src/Humanizer/Numbers/RomanNumerals" | ||
| declare global { | ||
| interface Number { | ||
| toRoman(): string | ||
| } | ||
| interface String { | ||
| fromRoman(): number | ||
| } | ||
| } | ||
| Number.prototype.toRoman = function (): string { | ||
| return RomanNumerals.toRoman(this as number) | ||
| } | ||
| String.prototype.fromRoman = function (): number { | ||
| return RomanNumerals.fromRoman(this as string) | ||
| } | ||
| /// <summary> | ||
| /// Style for the cardinal direction humanization | ||
| /// </summary> | ||
| export enum HeadingStyle { | ||
| /// <summary> | ||
| /// Returns an abbreviated format | ||
| /// </summary> | ||
| Abbreviated, | ||
| /// <summary> | ||
| /// Returns the full format | ||
| /// </summary> | ||
| Full | ||
| } | ||
| /// <summary> | ||
| /// Contains extensions to transform a number indicating a heading into the | ||
| /// textual representation of the heading. | ||
| /// </summary> | ||
| export abstract class Heading { | ||
| static readonly headings = [ | ||
| { short: "N", full: "north"}, | ||
| { short: "NNE" , full: "north-northeast"}, | ||
| { short: "NE" , full: "northeast"}, | ||
| { short: "ENE" , full: "east-northeast"}, | ||
| { short: "E", full: "east"}, | ||
| { short: "ESE" , full: "east-southeast"}, | ||
| { short: "SE" , full: "southeast"}, | ||
| { short: "SSE" , full: "south-southeast"}, | ||
| { short: "S", full: "south"}, | ||
| { short: "SSW" , full: "south-southwest"}, | ||
| { short: "SW" , full: "southwest"}, | ||
| { short: "WSW" , full: "west-southwest"}, | ||
| { short: "W", full: "west"}, | ||
| { short: "WNW" , full: "west-northwest"}, | ||
| { short: "NW" , full: "northwest"}, | ||
| { short: "NNW" , full: "north-northwest"} | ||
| ]; | ||
| static readonly headingArrows = [ "↑", "↗", "→", "↘", "↓", "↙", "←", "↖" ]; | ||
| // https://stackoverflow.com/a/7490772/1720761 | ||
| /// <summary> | ||
| /// Returns a textual representation of the heading. | ||
| /// | ||
| /// This representation has a maximum deviation of 11.25 degrees. | ||
| /// </summary> | ||
| /// <returns>A textual representation of the heading</returns> | ||
| /// <param name="culture">The culture to return the textual representation in</param> | ||
| /// <param name="style">Whether to return a short result or not. <see cref="HeadingStyle"/></param> | ||
| public static toHeading(heading: number, style: HeadingStyle = HeadingStyle.Abbreviated): string { | ||
| const val = Math.floor((heading / 22.5) + .5); | ||
| const result = Heading.headings[val % 16]; | ||
| if (style === HeadingStyle.Abbreviated) { | ||
| return result.short; | ||
| } | ||
| return result.full; | ||
| } | ||
| /// <summary> | ||
| /// Returns a char arrow indicating the heading. | ||
| /// | ||
| /// This representation has a maximum deviation of 22.5 degrees. | ||
| /// </summary> | ||
| /// <returns>The heading arrow.</returns> | ||
| public static toHeadingArrow(heading: number): string { | ||
| const val = Math.floor((heading / 45) + .5); | ||
| return Heading.headingArrows[val % 8]; | ||
| } | ||
| /// <summary> | ||
| /// Returns a heading based on the short textual representation of the heading. | ||
| /// </summary> | ||
| /// <returns>The heading. -1 if the heading could not be parsed.</returns> | ||
| public static fromAbbreviatedHeading(heading: string): number { | ||
| const index = Heading.headings.findIndex((element) => { | ||
| return element.short.toUpperCase() === heading; | ||
| }) | ||
| if (index === -1) { | ||
| return -1; | ||
| } | ||
| return (index * 22.5); | ||
| } | ||
| } |
| export abstract class MetricNumerals { | ||
| private static readonly BigLimit = 1E+27; | ||
| private static readonly SmallLimit = 1E-27; | ||
| /// <summary> | ||
| /// Symbols is a list of every symbols for the Metric system. | ||
| /// </summary> | ||
| private static readonly Symbols = | ||
| [ | ||
| [ "k", "M", "G", "T", "P", "E", "Z", "Y" ], | ||
| [ "m", "μ", "n", "p", "f", "a", "z", "y" ] | ||
| ]; | ||
| /// <summary> | ||
| /// Names link a Metric symbol (as key) to its name (as value). | ||
| /// </summary> | ||
| /// <remarks> | ||
| /// We dont support : | ||
| /// {'h', "hecto"}, | ||
| /// {'da', "deca" }, // !string | ||
| /// {'d', "deci" }, | ||
| /// {'c', "centi"}, | ||
| /// </remarks> | ||
| private static readonly Names = | ||
| [ | ||
| {key: "Y", value: "yotta" }, | ||
| {key: "Z", value: "zetta" }, | ||
| {key: "E", value: "exa" }, | ||
| {key: "P", value: "peta" }, | ||
| {key: "T", value: "tera" }, | ||
| {key: "G", value: "giga" }, | ||
| {key: "M", value: "mega" }, | ||
| {key: "k", value: "kilo" }, | ||
| {key: "m", value: "milli" }, | ||
| {key: "μ", value: "micro" }, | ||
| {key: "n", value: "nano" }, | ||
| {key: "p", value: "pico" }, | ||
| {key: "f", value: "femto" }, | ||
| {key: "a", value: "atto" }, | ||
| {key: "z", value: "zepto" }, | ||
| {key: "y", value: "yocto" } | ||
| ]; | ||
| /// <summary> | ||
| /// Converts a Metric representation into a number. | ||
| /// </summary> | ||
| /// <remarks> | ||
| /// We don't support input in the format {number}{name} nor {number} {name}. | ||
| /// We only provide a solution for {number}{symbol} and {number} {symbol}. | ||
| /// </remarks> | ||
| /// <param name="input">Metric representation to convert to a number</param> | ||
| /// <example> | ||
| /// <code> | ||
| /// "1k".FromMetric() => 1000d | ||
| /// "123".FromMetric() => 123d | ||
| /// "100m".FromMetric() => 1E-1 | ||
| /// </code> | ||
| /// </example> | ||
| /// <returns>A number after a conversion from a Metric representation.</returns> | ||
| public static fromMetric(input: string): number { | ||
| input = MetricNumerals.cleanRepresentation(input); | ||
| return MetricNumerals.buildNumber(input, input[input.length - 1]); | ||
| } | ||
| /// <summary> | ||
| /// Converts a number into a valid and Human-readable Metric representation. | ||
| /// </summary> | ||
| /// <remarks> | ||
| /// Inspired by a snippet from Thom Smith. | ||
| /// See <a href="http://stackoverflow.com/questions/12181024/formatting-a-number-with-a-metric-prefix">this link</a> for more. | ||
| /// </remarks> | ||
| /// <param name="input">Number to convert to a Metric representation.</param> | ||
| /// <param name="hasSpace">True will split the number and the symbol with a whitespace.</param> | ||
| /// <param name="useSymbol">True will use symbol instead of name</param> | ||
| /// <param name="decimals">If not null it is the numbers of decimals to round the number to</param> | ||
| /// <example> | ||
| /// <code> | ||
| /// 1000d.ToMetric() => "1k" | ||
| /// 123d.ToMetric() => "123" | ||
| /// 1E-1.ToMetric() => "100m" | ||
| /// </code> | ||
| /// </example> | ||
| /// <returns>A valid Metric representation</returns> | ||
| public static toMetric(input: number, hasSpace: boolean = false, useSymbol: boolean = true, decimals?: number): string { | ||
| if (input === 0) { | ||
| return input.toString(); | ||
| } | ||
| if (MetricNumerals.isOutOfRange(input)) { | ||
| throw new Error("ArgumentOutOfRangeException") | ||
| } | ||
| return MetricNumerals.buildRepresentation(input, hasSpace, useSymbol, decimals); | ||
| } | ||
| /// <summary> | ||
| /// Clean or handle any wrong input | ||
| /// </summary> | ||
| /// <param name="input">Metric representation to clean</param> | ||
| /// <returns>A cleaned representation</returns> | ||
| private static cleanRepresentation(input: string): string { | ||
| if (input == null) { | ||
| throw new Error("ArgumentNullException") | ||
| } | ||
| input = input.trim(); | ||
| input = MetricNumerals.replaceNameBySymbol(input); | ||
| if (input.length === 0 || MetricNumerals.isInvalidMetricNumeral(input)) { | ||
| throw new Error("Empty or invalid Metric string") | ||
| } | ||
| return input.replace(" ", ""); | ||
| } | ||
| /// <summary> | ||
| /// Build a number from a metric representation or from a number | ||
| /// </summary> | ||
| /// <param name="input">A Metric representation to parse to a number</param> | ||
| /// <param name="last">The last character of input</param> | ||
| /// <returns>A number build from a Metric representation</returns> | ||
| private static buildNumber(input: string, last: string): number { | ||
| return MetricNumerals.isLetter(last) | ||
| ? MetricNumerals.buildMetricNumber(input, last) | ||
| : Number(input); | ||
| } | ||
| private static isLetter(char: string): boolean { | ||
| return char.length === 1 && (/[a-z]/i).test(char) | ||
| } | ||
| /// <summary> | ||
| /// Build a number from a metric representation | ||
| /// </summary> | ||
| /// <param name="input">A Metric representation to parse to a number</param> | ||
| /// <param name="last">The last character of input</param> | ||
| /// <returns>A number build from a Metric representation</returns> | ||
| private static buildMetricNumber(input: string, last: string): number { | ||
| const num = Number(input.substring(0, input.length - 1)) | ||
| const expo = MetricNumerals.Symbols[0].indexOf(last) >= 0 ? | ||
| MetricNumerals.getExponent(MetricNumerals.Symbols[0], last) : | ||
| -MetricNumerals.getExponent(MetricNumerals.Symbols[1], last); | ||
| return num * Math.pow(10, expo) | ||
| } | ||
| private static getExponent(symbols: Array<string>, last: string): number { | ||
| return (symbols.indexOf(last) + 1) * 3; | ||
| } | ||
| /// <summary> | ||
| /// Replace every symbol's name by its symbol representation. | ||
| /// </summary> | ||
| /// <param name="input">Metric representation with a name or a symbol</param> | ||
| /// <returns>A metric representation with a symbol</returns> | ||
| private static replaceNameBySymbol(input: string): string { | ||
| MetricNumerals.Names.map((item, index) => { | ||
| input = input.replace(item.value, item.key) | ||
| }) | ||
| return input; | ||
| } | ||
| /// <summary> | ||
| /// Build a Metric representation of the number. | ||
| /// </summary> | ||
| /// <param name="input">Number to convert to a Metric representation.</param> | ||
| /// <param name="hasSpace">True will split the number and the symbol with a whitespace.</param> | ||
| /// <param name="useSymbol">True will use symbol instead of name</param> | ||
| /// <param name="decimals">If not null it is the numbers of decimals to round the number to</param> | ||
| /// <returns>A number in a Metric representation</returns> | ||
| private static buildRepresentation(input: number, hasSpace: boolean, useSymbol: boolean, decimals?: number): string { | ||
| const exponent = Math.floor(Math.log10(Math.abs(input)) / 3); | ||
| if (exponent !== 0) { return MetricNumerals.buildMetricRepresentation(input, exponent, hasSpace, useSymbol, decimals); } | ||
| let representation = decimals ? Math.round(input).toString() : input.toString(); | ||
| if (hasSpace) { | ||
| representation += " "; | ||
| } | ||
| return representation; | ||
| } | ||
| /// <summary> | ||
| /// Build a Metric representation of the number. | ||
| /// </summary> | ||
| /// <param name="input">Number to convert to a Metric representation.</param> | ||
| /// <param name="exponent">Exponent of the number in a scientific notation</param> | ||
| /// <param name="hasSpace">True will split the number and the symbol with a whitespace.</param> | ||
| /// <param name="useSymbol">True will use symbol instead of name</param> | ||
| /// <param name="decimals">If not null it is the numbers of decimals to round the number to</param> | ||
| /// <returns>A number in a Metric representation</returns> | ||
| private static buildMetricRepresentation(input: number, | ||
| exponent: number, hasSpace: boolean, useSymbol: boolean, decimals?: number): string { | ||
| let number = input * Math.pow(1000, -exponent); | ||
| if (decimals) { | ||
| number = Math.round(number); | ||
| } | ||
| const symbol = Math.sign(exponent) === 1 | ||
| ? MetricNumerals.Symbols[0][exponent - 1] | ||
| : MetricNumerals.Symbols[1][-exponent - 1]; | ||
| return number | ||
| + (hasSpace ? " " : "") | ||
| + MetricNumerals.getUnit(symbol, useSymbol); | ||
| } | ||
| /// <summary> | ||
| /// Get the unit from a symbol of from the symbol's name. | ||
| /// </summary> | ||
| /// <param name="symbol">The symbol linked to the unit</param> | ||
| /// <param name="useSymbol">True will use symbol instead of name</param> | ||
| /// <returns>A symbol or a symbol's name</returns> | ||
| private static getUnit(symbol: string, useSymbol: boolean): number { | ||
| // @ts-ignore | ||
| return useSymbol ? symbol.toString() : MetricNumerals.Names[symbol]; | ||
| } | ||
| /// <summary> | ||
| /// Check if a Metric representation is out of the valid range. | ||
| /// </summary> | ||
| /// <param name="input">A Metric representation who might be out of the valid range.</param> | ||
| /// <returns>True if input is out of the valid range.</returns> | ||
| private static isOutOfRange(input: number): boolean { | ||
| // bool outside(double min, double max) => !(max > input && input > min); | ||
| // return (Math.Sign(input) == 1 && outside(SmallLimit, BigLimit)) | ||
| // || (Math.Sign(input) == -1 && outside(-BigLimit, -SmallLimit)); | ||
| return false; | ||
| } | ||
| /// <summary> | ||
| /// Check if a string is not a valid Metric representation. | ||
| /// A valid representation is in the format "{0}{1}" or "{0} {1}" | ||
| /// where {0} is a number and {1} is an allowed symbol. | ||
| /// </summary> | ||
| /// <remarks> | ||
| /// ToDo: Performance: Use (string input, out number) to escape the double use of Parse() | ||
| /// </remarks> | ||
| /// <param name="input">A string who might contain a invalid Metric representation.</param> | ||
| /// <returns>True if input is not a valid Metric representation.</returns> | ||
| private static isInvalidMetricNumeral(input: string): boolean { | ||
| const index = input.length - 1; | ||
| const last = input[index] | ||
| const isSymbol = MetricNumerals.Symbols[0].indexOf(last) >= 0 || MetricNumerals.Symbols[1].indexOf(last) >= 0; | ||
| if (!isSymbol) { | ||
| return true; | ||
| } | ||
| input = input.replace(last, "") | ||
| return isNaN(Number(input)) | ||
| } | ||
| } |
| /// <summary> | ||
| /// Contains extension methods for changing a number to Roman representation (ToRoman) and from Roman representation back | ||
| /// to the number (FromRoman) | ||
| /// </summary> | ||
| export abstract class RomanNumerals { | ||
| private static readonly RomanNumerals = | ||
| [ | ||
| { key: "M", value: 1000 }, | ||
| { key: "CM", value: 900 }, | ||
| { key: "D", value: 500 }, | ||
| { key: "CD", value: 400 }, | ||
| { key: "C", value: 100 }, | ||
| { key: "XC", value: 90 }, | ||
| { key: "L", value: 50 }, | ||
| { key: "XL", value: 40 }, | ||
| { key: "X", value: 10 }, | ||
| { key: "IX", value: 9 }, | ||
| { key: "V", value: 5 }, | ||
| { key: "IV", value: 4 }, | ||
| { key: "I", value: 1 } | ||
| ]; | ||
| private static readonly ValidRomanNumeral = /^(?:(?=[MDCLXVI])((M{0,3})((C[DM])|(D?C{0,3}))?((X[LC])|(L?XX{0,2})|L)?((I[VX])|(V?(II{0,2}))|V)?))$/i | ||
| /// <summary> | ||
| /// Converts Roman numbers into integer | ||
| /// </summary> | ||
| /// <param name="input">Roman number</param> | ||
| /// <returns>Human-readable number</returns> | ||
| public static fromRoman(input: string): number { | ||
| if (input == null) { | ||
| throw new Error("input can't be null"); | ||
| } | ||
| input = input.trim().toUpperCase() | ||
| const length = input.length; | ||
| if ((length === 0) || RomanNumerals.isInvalidRomanNumeral(input)) { | ||
| throw new Error("Empty or invalid Roman numeral string."); | ||
| } | ||
| let total = 0; | ||
| let i = length; | ||
| while (i > 0) { | ||
| let digit = RomanNumerals.romanToDigit(input[--i].toString()); | ||
| if (i > 0) { | ||
| const previousDigit = RomanNumerals.romanToDigit(input[i - 1].toString()); | ||
| if (previousDigit < digit) { | ||
| digit -= previousDigit; | ||
| i--; | ||
| } | ||
| } | ||
| total += digit; | ||
| } | ||
| return total; | ||
| } | ||
| private static romanToDigit(char: string): number { | ||
| let rtnVal = 0; | ||
| RomanNumerals.RomanNumerals.forEach(pair => { | ||
| if (pair.key === char) { | ||
| rtnVal = pair.value; | ||
| } | ||
| }); | ||
| return rtnVal; | ||
| } | ||
| /// <summary> | ||
| /// Converts the input to Roman number | ||
| /// </summary> | ||
| /// <param name="input">Integer input</param> | ||
| /// <returns>Roman number</returns> | ||
| /// <exception cref="ArgumentOutOfRangeException">Thrown when the input is smaller than 1 or larger than 3999</exception> | ||
| public static toRoman(input: number): string { | ||
| const minValue = 1; | ||
| const maxValue = 3999; | ||
| if ((input < minValue) || (input > maxValue)) { | ||
| throw new Error("ArgumentOutOfRangeException"); | ||
| } | ||
| let sb = ""; | ||
| RomanNumerals.RomanNumerals.forEach(pair => { | ||
| while (Math.floor(input / pair.value) > 0) { | ||
| sb += pair.key; | ||
| input -= pair.value; | ||
| } | ||
| }) | ||
| return sb | ||
| } | ||
| private static isInvalidRomanNumeral(input: string): boolean { | ||
| return !RomanNumerals.ValidRomanNumeral.test(input); | ||
| } | ||
| } |
+6
-7
@@ -1,2 +0,1 @@ | ||
| // @ts-ignore | ||
| import { ByteSize } from './src/Humanizer/Bytes/ByteSize' | ||
@@ -16,23 +15,23 @@ | ||
| Number.prototype.bits = function (): ByteSize { | ||
| return ByteSize.fromBits(this) | ||
| return ByteSize.fromBits(this as number) | ||
| } | ||
| Number.prototype.bytes = function (): ByteSize { | ||
| return ByteSize.fromBytes(this) | ||
| return ByteSize.fromBytes(this as number) | ||
| } | ||
| Number.prototype.kilobytes = function (): ByteSize { | ||
| return ByteSize.fromKilobytes(this) | ||
| return ByteSize.fromKilobytes(this as number) | ||
| } | ||
| Number.prototype.megabytes = function (): ByteSize { | ||
| return ByteSize.fromMegabytes(this) | ||
| return ByteSize.fromMegabytes(this as number) | ||
| } | ||
| Number.prototype.gigabytes = function (): ByteSize { | ||
| return ByteSize.fromGigabytes(this) | ||
| return ByteSize.fromGigabytes(this as number) | ||
| } | ||
| Number.prototype.terabytes = function (): ByteSize { | ||
| return ByteSize.fromTerabytes(this) | ||
| return ByteSize.fromTerabytes(this as number) | ||
| } |
+0
-1
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| // @ts-ignore | ||
| const ByteSize_1 = require("./src/Humanizer/Bytes/ByteSize"); | ||
@@ -5,0 +4,0 @@ Number.prototype.bits = function () { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"byteSize.js","sourceRoot":"","sources":["../byteSize.ts"],"names":[],"mappings":";;AAAA,aAAa;AACb,6DAAyD;AAazD,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG;IACpB,OAAO,mBAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAClC,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG;IACrB,OAAO,mBAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AACnC,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG;IACzB,OAAO,mBAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG;IACzB,OAAO,mBAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG;IACzB,OAAO,mBAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG;IACzB,OAAO,mBAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAA"} | ||
| {"version":3,"file":"byteSize.js","sourceRoot":"","sources":["../byteSize.ts"],"names":[],"mappings":";;AAAA,6DAAyD;AAazD,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG;IACpB,OAAO,mBAAQ,CAAC,QAAQ,CAAC,IAAc,CAAC,CAAA;AAC5C,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG;IACrB,OAAO,mBAAQ,CAAC,SAAS,CAAC,IAAc,CAAC,CAAA;AAC7C,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG;IACzB,OAAO,mBAAQ,CAAC,aAAa,CAAC,IAAc,CAAC,CAAA;AACjD,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG;IACzB,OAAO,mBAAQ,CAAC,aAAa,CAAC,IAAc,CAAC,CAAA;AACjD,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG;IACzB,OAAO,mBAAQ,CAAC,aAAa,CAAC,IAAc,CAAC,CAAA;AACjD,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG;IACzB,OAAO,mBAAQ,CAAC,aAAa,CAAC,IAAc,CAAC,CAAA;AACjD,CAAC,CAAA"} |
+8
-17
| "use strict"; | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
| Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
| }) : function(o, v) { | ||
| o["default"] = v; | ||
| }); | ||
| var __importStar = (this && this.__importStar) || function (mod) { | ||
| if (mod && mod.__esModule) return mod; | ||
| var result = {}; | ||
| if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
| __setModuleDefault(result, mod); | ||
| if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; | ||
| result["default"] = mod; | ||
| return result; | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.ordinalize = exports.byteSize = exports.vocabularies = exports.toQuantity = exports.romanNumeral = exports.numberToWords = void 0; | ||
| const numberToWords = __importStar(require("./numberToWords")); | ||
| exports.numberToWords = numberToWords; | ||
| const romanNumeral = __importStar(require("./romanNumeral")); | ||
| exports.romanNumeral = romanNumeral; | ||
| const romanNumerals = __importStar(require("./romanNumerals")); | ||
| exports.romanNumerals = romanNumerals; | ||
| const toQuantity = __importStar(require("./toQuantity")); | ||
@@ -35,2 +22,6 @@ exports.toQuantity = toQuantity; | ||
| exports.ordinalize = ordinalize; | ||
| const numberToNumbers = __importStar(require("./numberToNumbers")); | ||
| exports.numberToNumbers = numberToNumbers; | ||
| const metricNumerals = __importStar(require("./metricNumerals")); | ||
| exports.metricNumerals = metricNumerals; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,+DAAgD;AAQ5C,sCAAa;AAPjB,6DAA8C;AAQ1C,oCAAY;AAPhB,yDAA0C;AAQtC,gCAAU;AAPd,6DAA8C;AAQ1C,oCAAY;AAPhB,qDAAsC;AAQlC,4BAAQ;AAPZ,yDAA0C;AAQtC,gCAAU"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+DAAgD;AAiB5C,sCAAa;AAhBjB,+DAAgD;AAU5C,sCAAa;AATjB,yDAA0C;AAUtC,gCAAU;AATd,6DAA8C;AAU1C,oCAAY;AAThB,qDAAsC;AAUlC,4BAAQ;AATZ,yDAA0C;AAUtC,gCAAU;AATd,mEAAoD;AAIhD,0CAAe;AAHnB,iEAAkD;AAS9C,wCAAc"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"numberToWords.js","sourceRoot":"","sources":["../numberToWords.ts"],"names":[],"mappings":";;AAAA,aAAa;AACb,4HAAwH;AASxH;;;GAGG;AACH,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG;IACxB,OAAO,6DAA6B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACrD,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG;IAC9B,OAAO,6DAA6B,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAC5D,CAAC,CAAA"} | ||
| {"version":3,"file":"numberToWords.js","sourceRoot":"","sources":["../numberToWords.ts"],"names":[],"mappings":";;AAAA,aAAa;AACb,4HAAwH;AASxH;;;GAGG;AACH,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG;IACxB,OAAO,6DAA6B,CAAC,OAAO,CAAC,IAAc,CAAC,CAAA;AAC/D,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG;IAC9B,OAAO,6DAA6B,CAAC,OAAO,CAAC,IAAc,EAAE,IAAI,CAAC,CAAA;AACtE,CAAC,CAAA"} |
+2
-14
| "use strict"; | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
| Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
| }) : function(o, v) { | ||
| o["default"] = v; | ||
| }); | ||
| var __importStar = (this && this.__importStar) || function (mod) { | ||
| if (mod && mod.__esModule) return mod; | ||
| var result = {}; | ||
| if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
| __setModuleDefault(result, mod); | ||
| if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; | ||
| result["default"] = mod; | ||
| return result; | ||
@@ -20,0 +8,0 @@ }; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"ordinalize.js","sourceRoot":"","sources":["../ordinalize.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,YAAY;AACZ,4EAA6D;AAY7D,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG;IAC1B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;AAC7C,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG;IAC1B,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;AAC1C,CAAC,CAAA"} | ||
| {"version":3,"file":"ordinalize.js","sourceRoot":"","sources":["../ordinalize.ts"],"names":[],"mappings":";;;;;;;;;AAAA,YAAY;AACZ,4EAA6D;AAY7D,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG;IAC1B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;AACvD,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG;IAC1B,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAc,CAAC,CAAA;AACpD,CAAC,CAAA"} |
| "use strict"; | ||
| //The MIT License (MIT) | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.ByteSize = void 0; | ||
| //Copyright (c) 2013-2014 Omar Khudeira (http://omar.io) | ||
@@ -21,228 +20,224 @@ //Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| //THE SOFTWARE. | ||
| let ByteSize = /** @class */ (() => { | ||
| class ByteSize { | ||
| constructor(byteSize) { | ||
| // Get ceiling because bis are whole units | ||
| this.bits = Math.ceil(byteSize * ByteSize.BitsInByte); | ||
| this.bytes = byteSize; | ||
| this.kilobytes = byteSize / ByteSize.BytesInKilobyte; | ||
| this.megabytes = byteSize / ByteSize.BytesInMegabyte; | ||
| this.gigabytes = byteSize / ByteSize.BytesInGigabyte; | ||
| this.terabytes = byteSize / ByteSize.BytesInTerabyte; | ||
| class ByteSize { | ||
| constructor(byteSize) { | ||
| // Get ceiling because bis are whole units | ||
| this.bits = Math.ceil(byteSize * ByteSize.BitsInByte); | ||
| this.bytes = byteSize; | ||
| this.kilobytes = byteSize / ByteSize.BytesInKilobyte; | ||
| this.megabytes = byteSize / ByteSize.BytesInMegabyte; | ||
| this.gigabytes = byteSize / ByteSize.BytesInGigabyte; | ||
| this.terabytes = byteSize / ByteSize.BytesInTerabyte; | ||
| } | ||
| largestWholeNumberSymbol() { | ||
| // Absolute value is used to deal with negative values | ||
| if (Math.abs(this.terabytes) >= 1) { | ||
| return ByteSize.TerabyteSymbol; | ||
| } | ||
| largestWholeNumberSymbol() { | ||
| // Absolute value is used to deal with negative values | ||
| if (Math.abs(this.terabytes) >= 1) { | ||
| return ByteSize.TerabyteSymbol; | ||
| } | ||
| if (Math.abs(this.gigabytes) >= 1) { | ||
| return ByteSize.GigabyteSymbol; | ||
| } | ||
| if (Math.abs(this.megabytes) >= 1) { | ||
| return ByteSize.MegabyteSymbol; | ||
| } | ||
| if (Math.abs(this.kilobytes) >= 1) { | ||
| return ByteSize.KilobyteSymbol; | ||
| } | ||
| if (Math.abs(this.bytes) >= 1) { | ||
| return ByteSize.ByteSymbol; | ||
| } | ||
| return ByteSize.BitSymbol; | ||
| if (Math.abs(this.gigabytes) >= 1) { | ||
| return ByteSize.GigabyteSymbol; | ||
| } | ||
| largestWholeNumberFullWord() { | ||
| // Absolute value is used to deal with negative values | ||
| if (Math.abs(this.terabytes) >= 1) { | ||
| return ByteSize.Terabyte; | ||
| } | ||
| if (Math.abs(this.gigabytes) >= 1) { | ||
| return ByteSize.Gigabyte; | ||
| } | ||
| if (Math.abs(this.megabytes) >= 1) { | ||
| return ByteSize.Megabyte; | ||
| } | ||
| if (Math.abs(this.kilobytes) >= 1) { | ||
| return ByteSize.Kilobyte; | ||
| } | ||
| if (Math.abs(this.bytes) >= 1) { | ||
| return ByteSize.Byte; | ||
| } | ||
| return ByteSize.Bit; | ||
| if (Math.abs(this.megabytes) >= 1) { | ||
| return ByteSize.MegabyteSymbol; | ||
| } | ||
| largestWholeNumberValue() { | ||
| // Absolute value is used to deal with negative values | ||
| if (Math.abs(this.terabytes) >= 1) { | ||
| return this.terabytes; | ||
| } | ||
| if (Math.abs(this.gigabytes) >= 1) { | ||
| return this.gigabytes; | ||
| } | ||
| if (Math.abs(this.megabytes) >= 1) { | ||
| return this.megabytes; | ||
| } | ||
| if (Math.abs(this.kilobytes) >= 1) { | ||
| return this.kilobytes; | ||
| } | ||
| if (Math.abs(this.bytes) >= 1) { | ||
| return this.bytes; | ||
| } | ||
| return this.bits; | ||
| if (Math.abs(this.kilobytes) >= 1) { | ||
| return ByteSize.KilobyteSymbol; | ||
| } | ||
| static fromBits(value) { | ||
| return new ByteSize(value / ByteSize.BitsInByte); | ||
| if (Math.abs(this.bytes) >= 1) { | ||
| return ByteSize.ByteSymbol; | ||
| } | ||
| static fromBytes(value) { | ||
| return new ByteSize(value); | ||
| return ByteSize.BitSymbol; | ||
| } | ||
| largestWholeNumberFullWord() { | ||
| // Absolute value is used to deal with negative values | ||
| if (Math.abs(this.terabytes) >= 1) { | ||
| return ByteSize.Terabyte; | ||
| } | ||
| static fromKilobytes(value) { | ||
| return new ByteSize(value * ByteSize.BytesInKilobyte); | ||
| if (Math.abs(this.gigabytes) >= 1) { | ||
| return ByteSize.Gigabyte; | ||
| } | ||
| static fromMegabytes(value) { | ||
| return new ByteSize(value * ByteSize.BytesInMegabyte); | ||
| if (Math.abs(this.megabytes) >= 1) { | ||
| return ByteSize.Megabyte; | ||
| } | ||
| static fromGigabytes(value) { | ||
| return new ByteSize(value * ByteSize.BytesInGigabyte); | ||
| if (Math.abs(this.kilobytes) >= 1) { | ||
| return ByteSize.Kilobyte; | ||
| } | ||
| static fromTerabytes(value) { | ||
| return new ByteSize(value * ByteSize.BytesInTerabyte); | ||
| if (Math.abs(this.bytes) >= 1) { | ||
| return ByteSize.Byte; | ||
| } | ||
| /// <summary> | ||
| /// Converts the value of the current ByteSize object to a string. | ||
| /// The metric prefix symbol (bit, byte, kilo, mega, giga, tera) used is | ||
| /// the largest metric prefix such that the corresponding value is greater | ||
| /// than or equal to one. | ||
| /// </summary> | ||
| toString() { | ||
| return this.largestWholeNumberValue() + " " + this.largestWholeNumberSymbol(); | ||
| return ByteSize.Bit; | ||
| } | ||
| largestWholeNumberValue() { | ||
| // Absolute value is used to deal with negative values | ||
| if (Math.abs(this.terabytes) >= 1) { | ||
| return this.terabytes; | ||
| } | ||
| /// <summary> | ||
| /// Converts the value of the current ByteSize object to a string with | ||
| /// full words. The metric prefix symbol (bit, byte, kilo, mega, giga, | ||
| /// tera) used is the largest metric prefix such that the corresponding | ||
| /// value is greater than or equal to one. | ||
| /// </summary> | ||
| toFullWords() { | ||
| var byteSizeAsFullWords = this.toString(); | ||
| // If there is more than one unit, make the word plural | ||
| return this.largestWholeNumberValue() > 1 ? byteSizeAsFullWords + "s" : byteSizeAsFullWords; | ||
| if (Math.abs(this.gigabytes) >= 1) { | ||
| return this.gigabytes; | ||
| } | ||
| equals(other) { | ||
| return this.bits === other.bits; | ||
| if (Math.abs(this.megabytes) >= 1) { | ||
| return this.megabytes; | ||
| } | ||
| compareTo(other) { | ||
| if (this.bits - other.bits < 0) { | ||
| return -1; | ||
| } | ||
| if (this.bits - other.bits > 0) { | ||
| return 1; | ||
| } | ||
| return 0; | ||
| if (Math.abs(this.kilobytes) >= 1) { | ||
| return this.kilobytes; | ||
| } | ||
| add(other) { | ||
| return ByteSize.fromBits(this.bits + other.bits); | ||
| if (Math.abs(this.bytes) >= 1) { | ||
| return this.bytes; | ||
| } | ||
| addBits(value) { | ||
| return ByteSize.fromBits(this.bits + value); | ||
| return this.bits; | ||
| } | ||
| static fromBits(value) { | ||
| return new ByteSize(value / ByteSize.BitsInByte); | ||
| } | ||
| static fromBytes(value) { | ||
| return new ByteSize(value); | ||
| } | ||
| static fromKilobytes(value) { | ||
| return new ByteSize(value * ByteSize.BytesInKilobyte); | ||
| } | ||
| static fromMegabytes(value) { | ||
| return new ByteSize(value * ByteSize.BytesInMegabyte); | ||
| } | ||
| static fromGigabytes(value) { | ||
| return new ByteSize(value * ByteSize.BytesInGigabyte); | ||
| } | ||
| static fromTerabytes(value) { | ||
| return new ByteSize(value * ByteSize.BytesInTerabyte); | ||
| } | ||
| /// <summary> | ||
| /// Converts the value of the current ByteSize object to a string. | ||
| /// The metric prefix symbol (bit, byte, kilo, mega, giga, tera) used is | ||
| /// the largest metric prefix such that the corresponding value is greater | ||
| /// than or equal to one. | ||
| /// </summary> | ||
| toString(fixePoint = 2) { | ||
| return this.largestWholeNumberValue().toFixed(fixePoint) + " " + this.largestWholeNumberSymbol(); | ||
| } | ||
| /// <summary> | ||
| /// Converts the value of the current ByteSize object to a string with | ||
| /// full words. The metric prefix symbol (bit, byte, kilo, mega, giga, | ||
| /// tera) used is the largest metric prefix such that the corresponding | ||
| /// value is greater than or equal to one. | ||
| /// </summary> | ||
| toFullWords() { | ||
| const byteSizeAsFullWords = this.toString(); | ||
| // If there is more than one unit, make the word plural | ||
| return this.largestWholeNumberValue() > 1 ? byteSizeAsFullWords + "s" : byteSizeAsFullWords; | ||
| } | ||
| equals(other) { | ||
| return this.bits === other.bits; | ||
| } | ||
| compareTo(other) { | ||
| if (this.bits - other.bits < 0) { | ||
| return -1; | ||
| } | ||
| addBytes(value) { | ||
| return ByteSize.fromBytes(this.bytes + value); | ||
| if (this.bits - other.bits > 0) { | ||
| return 1; | ||
| } | ||
| addKilobytes(value) { | ||
| return ByteSize.fromKilobytes(this.kilobytes + value); | ||
| return 0; | ||
| } | ||
| add(other) { | ||
| return ByteSize.fromBits(this.bits + other.bits); | ||
| } | ||
| addBits(value) { | ||
| return ByteSize.fromBits(this.bits + value); | ||
| } | ||
| addBytes(value) { | ||
| return ByteSize.fromBytes(this.bytes + value); | ||
| } | ||
| addKilobytes(value) { | ||
| return ByteSize.fromKilobytes(this.kilobytes + value); | ||
| } | ||
| addMegabytes(value) { | ||
| return ByteSize.fromMegabytes(this.megabytes + value); | ||
| } | ||
| addGigabytes(value) { | ||
| return ByteSize.fromGigabytes(this.gigabytes + value); | ||
| } | ||
| addTerabytes(value) { | ||
| return ByteSize.fromTerabytes(this.terabytes + value); | ||
| } | ||
| subtract(other) { | ||
| return ByteSize.fromBits(this.bits - other.bits); | ||
| } | ||
| static parse(s) { | ||
| // Arg checking | ||
| if (!s) { | ||
| throw new Error("The input is null or empty"); | ||
| } | ||
| addMegabytes(value) { | ||
| return ByteSize.fromMegabytes(this.megabytes + value); | ||
| // Setup the result | ||
| let result = new ByteSize(4); | ||
| // Get the index of the first non-digit character | ||
| s = s.trimStart(); // Protect against leading spaces, https://github.com/microsoft/TypeScript/blob/master/lib/lib.es2019.string.d.ts | ||
| let num; | ||
| let found = false; | ||
| // Acquiring culture specific decimal separator | ||
| const decSep = "."; // Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator); | ||
| // Pick first non-digit number | ||
| for (num = 0; num < s.length; num++) { | ||
| if (!(!isNaN(Number(s[num])) || s[num] === decSep)) { | ||
| found = true; | ||
| break; | ||
| } | ||
| } | ||
| addGigabytes(value) { | ||
| return ByteSize.fromGigabytes(this.gigabytes + value); | ||
| if (found === false) { | ||
| return new ByteSize(1); // TODO: should raize error | ||
| } | ||
| addTerabytes(value) { | ||
| return ByteSize.fromTerabytes(this.terabytes + value); | ||
| const lastNumber = num; | ||
| // Cut the input string in half | ||
| const numberPart = s.substring(0, lastNumber).trim(); | ||
| const sizePart = s.substring(lastNumber, s.length).trim(); | ||
| // Get the numeric part | ||
| if (isNaN(Number(numberPart))) { | ||
| return new ByteSize(2); // TODO: should raize error | ||
| } | ||
| subtract(other) { | ||
| return ByteSize.fromBits(this.bits - other.bits); | ||
| } | ||
| static parse(s) { | ||
| // Arg checking | ||
| if (!s) { | ||
| throw new Error("The input is null or empty"); | ||
| } | ||
| // Setup the result | ||
| let result = new ByteSize(4); | ||
| // Get the index of the first non-digit character | ||
| s = s.trimStart(); // Protect against leading spaces, https://github.com/microsoft/TypeScript/blob/master/lib/lib.es2019.string.d.ts | ||
| let num; | ||
| let found = false; | ||
| // Acquiring culture specific decimal separator | ||
| let decSep = "."; //Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator); | ||
| // Pick first non-digit number | ||
| for (num = 0; num < s.length; num++) { | ||
| if (!(!isNaN(Number(s[num])) || s[num] == decSep)) { | ||
| found = true; | ||
| break; | ||
| const nb = Number(numberPart); | ||
| // Get the magnitude part | ||
| switch (sizePart.toUpperCase()) { | ||
| case ByteSize.ByteSymbol: | ||
| if (sizePart === ByteSize.BitSymbol) { // Bits | ||
| if (nb % 1 !== 0) { | ||
| return new ByteSize(3); // TODO: should raize error | ||
| } | ||
| result = ByteSize.fromBits(nb); | ||
| } | ||
| } | ||
| if (found == false) { | ||
| return new ByteSize(1); //TODO: should raize error | ||
| } | ||
| let lastNumber = num; | ||
| // Cut the input string in half | ||
| var numberPart = s.substring(0, lastNumber).trim(); | ||
| var sizePart = s.substring(lastNumber, s.length).trim(); | ||
| // Get the numeric part | ||
| if (isNaN(Number(numberPart))) { | ||
| return new ByteSize(2); //TODO: should raize error | ||
| } | ||
| let nb = Number(numberPart); | ||
| // Get the magnitude part | ||
| switch (sizePart.toUpperCase()) { | ||
| case ByteSize.ByteSymbol: | ||
| if (sizePart == ByteSize.BitSymbol) { // Bits | ||
| if (nb % 1 != 0) // Can't have partial bits | ||
| { | ||
| return new ByteSize(3); //TODO: should raize error | ||
| } | ||
| result = ByteSize.fromBits(nb); | ||
| } | ||
| else { // Bytes | ||
| result = ByteSize.fromBytes(nb); | ||
| } | ||
| break; | ||
| case ByteSize.KilobyteSymbol: | ||
| result = ByteSize.fromKilobytes(nb); | ||
| break; | ||
| case ByteSize.MegabyteSymbol: | ||
| result = ByteSize.fromMegabytes(nb); | ||
| break; | ||
| case ByteSize.GigabyteSymbol: | ||
| result = ByteSize.fromGigabytes(nb); | ||
| break; | ||
| case ByteSize.TerabyteSymbol: | ||
| result = ByteSize.fromTerabytes(nb); | ||
| break; | ||
| } | ||
| return result; | ||
| else { // Bytes | ||
| result = ByteSize.fromBytes(nb); | ||
| } | ||
| break; | ||
| case ByteSize.KilobyteSymbol: | ||
| result = ByteSize.fromKilobytes(nb); | ||
| break; | ||
| case ByteSize.MegabyteSymbol: | ||
| result = ByteSize.fromMegabytes(nb); | ||
| break; | ||
| case ByteSize.GigabyteSymbol: | ||
| result = ByteSize.fromGigabytes(nb); | ||
| break; | ||
| case ByteSize.TerabyteSymbol: | ||
| result = ByteSize.fromTerabytes(nb); | ||
| break; | ||
| } | ||
| return result; | ||
| } | ||
| ByteSize.MinValue = ByteSize.fromBits(Number.MIN_VALUE); | ||
| ByteSize.MaxValue = ByteSize.fromBits(Number.MAX_VALUE); | ||
| ByteSize.BitsInByte = 8; | ||
| ByteSize.BytesInKilobyte = 1024; | ||
| ByteSize.BytesInMegabyte = 1048576; | ||
| ByteSize.BytesInGigabyte = 1073741824; | ||
| ByteSize.BytesInTerabyte = 1099511627776; | ||
| ByteSize.BitSymbol = "b"; | ||
| ByteSize.Bit = "bit"; | ||
| ByteSize.ByteSymbol = "B"; | ||
| ByteSize.Byte = "byte"; | ||
| ByteSize.KilobyteSymbol = "KB"; | ||
| ByteSize.Kilobyte = "kilobyte"; | ||
| ByteSize.MegabyteSymbol = "MB"; | ||
| ByteSize.Megabyte = "megabyte"; | ||
| ByteSize.GigabyteSymbol = "GB"; | ||
| ByteSize.Gigabyte = "gigabyte"; | ||
| ByteSize.TerabyteSymbol = "TB"; | ||
| ByteSize.Terabyte = "terabyte"; | ||
| return ByteSize; | ||
| })(); | ||
| } | ||
| exports.ByteSize = ByteSize; | ||
| ByteSize.MinValue = ByteSize.fromBits(Number.MIN_VALUE); | ||
| ByteSize.MaxValue = ByteSize.fromBits(Number.MAX_VALUE); | ||
| ByteSize.BitsInByte = 8; | ||
| ByteSize.BytesInKilobyte = 1024; | ||
| ByteSize.BytesInMegabyte = 1048576; | ||
| ByteSize.BytesInGigabyte = 1073741824; | ||
| ByteSize.BytesInTerabyte = 1099511627776; | ||
| ByteSize.BitSymbol = "b"; | ||
| ByteSize.Bit = "bit"; | ||
| ByteSize.ByteSymbol = "B"; | ||
| ByteSize.Byte = "byte"; | ||
| ByteSize.KilobyteSymbol = "KB"; | ||
| ByteSize.Kilobyte = "kilobyte"; | ||
| ByteSize.MegabyteSymbol = "MB"; | ||
| ByteSize.Megabyte = "megabyte"; | ||
| ByteSize.GigabyteSymbol = "GB"; | ||
| ByteSize.Gigabyte = "gigabyte"; | ||
| ByteSize.TerabyteSymbol = "TB"; | ||
| ByteSize.Terabyte = "terabyte"; | ||
| //# sourceMappingURL=ByteSize.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"ByteSize.js","sourceRoot":"","sources":["../../../../src/Humanizer/Bytes/ByteSize.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"ByteSize.js","sourceRoot":"","sources":["../../../../src/Humanizer/Bytes/ByteSize.ts"],"names":[],"mappings":"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"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.convert = void 0; | ||
| exports.convert = function (nb, nbString) { | ||
| let nMod100 = nb % 100; | ||
| const nMod100 = nb % 100; | ||
| if (nMod100 >= 11 && nMod100 <= 13) { | ||
@@ -7,0 +6,0 @@ return nbString + "th"; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"Ordinalize.js","sourceRoot":"","sources":["../../../../src/Humanizer/Inflections/Ordinalize.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,UAAS,EAAU,EAAE,QAAgB;IACxD,IAAI,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,IAAI,EAAE,EAClC;QACI,OAAO,QAAQ,GAAG,IAAI,CAAC;KAC1B;IAED,QAAQ,EAAE,GAAG,EAAE,EACf;QACI,KAAK,CAAC;YACF,OAAO,QAAQ,GAAG,IAAI,CAAC;QAE3B,KAAK,CAAC;YACF,OAAO,QAAQ,GAAG,IAAI,CAAC;QAE3B,KAAK,CAAC;YACF,OAAO,QAAQ,GAAG,IAAI,CAAC;QAE3B;YACI,OAAO,QAAQ,GAAG,IAAI,CAAC;KAC9B;AACL,CAAC,CAAA"} | ||
| {"version":3,"file":"Ordinalize.js","sourceRoot":"","sources":["../../../../src/Humanizer/Inflections/Ordinalize.ts"],"names":[],"mappings":";;AAAa,QAAA,OAAO,GAAG,UAAS,EAAU,EAAE,QAAgB;IACxD,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC;IAEzB,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,IAAI,EAAE,EAAE;QAChC,OAAO,QAAQ,GAAG,IAAI,CAAC;KAC1B;IAED,QAAQ,EAAE,GAAG,EAAE,EAAE;QACb,KAAK,CAAC;YACF,OAAO,QAAQ,GAAG,IAAI,CAAC;QAE3B,KAAK,CAAC;YACF,OAAO,QAAQ,GAAG,IAAI,CAAC;QAE3B,KAAK,CAAC;YACF,OAAO,QAAQ,GAAG,IAAI,CAAC;QAE3B;YACI,OAAO,QAAQ,GAAG,IAAI,CAAC;KAC9B;AACL,CAAC,CAAA"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.Vocabularies = void 0; | ||
| // @ts-ignore | ||
@@ -22,3 +21,3 @@ const Vocabulary_1 = require("./Vocabulary"); | ||
| static BuildDefault() { | ||
| var _default = new Vocabulary_1.Vocabulary(); | ||
| const _default = new Vocabulary_1.Vocabulary(); | ||
| _default.addPlural("$", "s"); | ||
@@ -85,3 +84,3 @@ _default.addPlural("s$", "s"); | ||
| _default.addIrregular("personnel", "personnel"); | ||
| //Fix #78a | ||
| // Fix #78a | ||
| _default.addIrregular("cache", "caches"); | ||
@@ -88,0 +87,0 @@ _default.addIrregular("is", "are", false); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"Vocabularies.js","sourceRoot":"","sources":["../../../../src/Humanizer/Inflections/Vocabularies.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"Vocabularies.js","sourceRoot":"","sources":["../../../../src/Humanizer/Inflections/Vocabularies.ts"],"names":[],"mappings":"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"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.Vocabulary = void 0; | ||
| /// <summary> | ||
@@ -20,3 +19,4 @@ /// A container for exceptions to simple pluralization/singularization rules. | ||
| /// <param name="plural">The plural form of the irregular word, e.g. "people".</param> | ||
| /// <param name="matchEnding">True to match these words on their own as well as at the end of longer words. False, otherwise.</param> | ||
| /// <param name="matchEnding">True to match these words on their own as well | ||
| /// as at the end of longer words. False, otherwise.</param> | ||
| addIrregular(singular, plural, matchEnding = true) { | ||
@@ -59,12 +59,13 @@ if (matchEnding) { | ||
| /// <param name="word">Word to be pluralized</param> | ||
| /// <param name="inputIsKnownToBeSingular">Normally you call Pluralize on singular words; but if you're unsure call it with false</param> | ||
| /// <param name="inputIsKnownToBeSingular">Normally you call Pluralize on singular words; | ||
| /// but if you're unsure call it with false</param> | ||
| /// <returns></returns> | ||
| pluralize(word, inputIsKnownToBeSingular = true) { | ||
| var result = this.applyRules(this._plurals, word, false); | ||
| const result = this.applyRules(this._plurals, word, false); | ||
| if (inputIsKnownToBeSingular) { | ||
| return result !== null && result !== void 0 ? result : word; | ||
| return (result !== null && result !== void 0 ? result : word); | ||
| } | ||
| var asSingular = this.applyRules(this._singulars, word, false); | ||
| var asSingularAsPlural = this.applyRules(this._plurals, asSingular, false); | ||
| if (asSingular != null && asSingular != word && asSingular + "s" != word && asSingularAsPlural == word && result != word) { | ||
| const asSingular = this.applyRules(this._singulars, word, false); | ||
| const asSingularAsPlural = this.applyRules(this._plurals, asSingular, false); | ||
| if (asSingular !== "" && asSingular !== word && asSingular + "s" !== word && asSingularAsPlural === word && result !== word) { | ||
| return word; | ||
@@ -78,20 +79,22 @@ } | ||
| /// <param name="word">Word to be singularized</param> | ||
| /// <param name="inputIsKnownToBePlural">Normally you call Singularize on plural words; but if you're unsure call it with false</param> | ||
| /// <param name="inputIsKnownToBePlural">Normally you call Singularize on plural words; but if you're unsure | ||
| /// call it with false</param> | ||
| /// <param name="skipSimpleWords">Skip singularizing single words that have an 's' on the end</param> | ||
| /// <returns></returns> | ||
| singularize(word, inputIsKnownToBePlural = true, skipSimpleWords = false) { | ||
| var result = this.applyRules(this._singulars, word, skipSimpleWords); | ||
| const result = this.applyRules(this._singulars, word, skipSimpleWords); | ||
| if (inputIsKnownToBePlural) { | ||
| return result !== null && result !== void 0 ? result : word; | ||
| return (result !== null && result !== void 0 ? result : word); | ||
| } | ||
| // the Plurality is unknown so we should check all possibilities | ||
| var asPlural = this.applyRules(this._plurals, word, false); | ||
| var asPluralAsSingular = this.applyRules(this._singulars, asPlural, false); | ||
| if (asPlural != word && word + "s" != asPlural && asPluralAsSingular == word && result != word) { | ||
| const asPlural = this.applyRules(this._plurals, word, false); | ||
| const asPluralAsSingular = this.applyRules(this._singulars, asPlural, false); | ||
| if (asPlural !== word && word + "s" !== asPlural && asPluralAsSingular === word && result !== word) { | ||
| return word; | ||
| } | ||
| return result !== null && result !== void 0 ? result : word; | ||
| return result === "" ? word : result; | ||
| } | ||
| applyRules(rules, word, skipFirstRule) { | ||
| if (word == null) { | ||
| // @ts-ignore | ||
| return null; | ||
@@ -102,6 +105,6 @@ } | ||
| } | ||
| var result = word; | ||
| var end = skipFirstRule ? 1 : 0; | ||
| for (var i = rules.length - 1; i >= end; i--) { | ||
| if ((result = rules[i].apply(word)) != null) { | ||
| let result = word; | ||
| const end = skipFirstRule ? 1 : 0; | ||
| for (let i = rules.length - 1; i >= end; i--) { | ||
| if ((result = rules[i].apply(word)) !== "") { | ||
| break; | ||
@@ -119,3 +122,3 @@ } | ||
| constructor(pattern, replacement) { | ||
| this._regex = new RegExp(pattern, 'i'); | ||
| this._regex = new RegExp(pattern, "i"); | ||
| this._replacement = replacement; | ||
@@ -125,3 +128,3 @@ } | ||
| if (!this._regex.test(word)) { | ||
| return null; | ||
| return ""; | ||
| } | ||
@@ -128,0 +131,0 @@ return word.replace(this._regex, this._replacement); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"Vocabulary.js","sourceRoot":"","sources":["../../../../src/Humanizer/Inflections/Vocabulary.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"Vocabulary.js","sourceRoot":"","sources":["../../../../src/Humanizer/Inflections/Vocabulary.ts"],"names":[],"mappings":"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"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.EnglishNumberToWordsConverter = void 0; | ||
| let EnglishNumberToWordsConverter = /** @class */ (() => { | ||
| class EnglishNumberToWordsConverter { | ||
| static convertToOrdinal(number) { | ||
| return EnglishNumberToWordsConverter.convert(number, true); | ||
| class EnglishNumberToWordsConverter { | ||
| static convertToOrdinal(number) { | ||
| return EnglishNumberToWordsConverter.convert(number, true); | ||
| } | ||
| static convert(number, isOrdinal = false) { | ||
| number = Math.floor(number); | ||
| if (number === 0) { | ||
| return EnglishNumberToWordsConverter.getUnitValue(0, isOrdinal); | ||
| } | ||
| static convert(number, isOrdinal = false) { | ||
| number = Math.floor(number); | ||
| if (number == 0) { | ||
| return EnglishNumberToWordsConverter.getUnitValue(0, isOrdinal); | ||
| if (number < 0) { | ||
| return `minus ${EnglishNumberToWordsConverter.convert(-number)}`; | ||
| } | ||
| const parts = new Array(); | ||
| if (Math.floor(number / 1000000000000000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000000000000000)} quintillion`); | ||
| number %= 1000000000000000000; | ||
| } | ||
| if (Math.floor(number / 1000000000000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000000000000)} quadrillion`); | ||
| number %= 1000000000000000; | ||
| } | ||
| if (Math.floor(number / 1000000000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000000000)} trillion`); | ||
| number %= 1000000000000; | ||
| } | ||
| if (Math.floor(number / 1000000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000000)} billion`); | ||
| number %= 1000000000; | ||
| } | ||
| if (Math.floor(number / 1000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000)} million`); | ||
| number %= 1000000; | ||
| } | ||
| if (Math.floor(number / 1000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000)} thousand`); | ||
| number %= 1000; | ||
| } | ||
| if (Math.floor(number / 100) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 100)} hundred`); | ||
| number %= 100; | ||
| } | ||
| if (Math.floor(number) > 0) { | ||
| if (parts.length !== 0) { | ||
| parts.push("and"); | ||
| } | ||
| if (number < 0) { | ||
| return `minus ${EnglishNumberToWordsConverter.convert(-number)}`; | ||
| if (number < 20) { | ||
| parts.push(EnglishNumberToWordsConverter.getUnitValue(number, isOrdinal)); | ||
| } | ||
| var parts = new Array(); | ||
| if (Math.floor(number / 1000000000000000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000000000000000)} quintillion`); | ||
| number %= 1000000000000000000; | ||
| } | ||
| if (Math.floor(number / 1000000000000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000000000000)} quadrillion`); | ||
| number %= 1000000000000000; | ||
| } | ||
| if (Math.floor(number / 1000000000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000000000)} trillion`); | ||
| number %= 1000000000000; | ||
| } | ||
| if (Math.floor(number / 1000000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000000)} billion`); | ||
| number %= 1000000000; | ||
| } | ||
| if (Math.floor(number / 1000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000)} million`); | ||
| number %= 1000000; | ||
| } | ||
| if (Math.floor(number / 1000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000)} thousand`); | ||
| number %= 1000; | ||
| } | ||
| if (Math.floor(number / 100) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 100)} hundred`); | ||
| number %= 100; | ||
| } | ||
| if (Math.floor(number) > 0) { | ||
| if (parts.length != 0) { | ||
| parts.push("and"); | ||
| else { | ||
| let lastPart = EnglishNumberToWordsConverter.TensMap[Math.floor(number / 10)]; | ||
| if ((number % 10) > 0) { | ||
| lastPart += `-${EnglishNumberToWordsConverter.getUnitValue(number % 10, isOrdinal)}`; | ||
| } | ||
| if (number < 20) { | ||
| parts.push(EnglishNumberToWordsConverter.getUnitValue(number, isOrdinal)); | ||
| else if (isOrdinal) { | ||
| const trimmed = lastPart.replace(/\y+$/g, ""); // lastPart.trimEnd('y') | ||
| lastPart = trimmed + "ieth"; | ||
| } | ||
| else { | ||
| var lastPart = EnglishNumberToWordsConverter.TensMap[Math.floor(number / 10)]; | ||
| if ((number % 10) > 0) { | ||
| lastPart += `-${EnglishNumberToWordsConverter.getUnitValue(number % 10, isOrdinal)}`; | ||
| } | ||
| else if (isOrdinal) { | ||
| let trimmed = lastPart.replace(/\y+$/g, ''); //lastPart.trimEnd('y') | ||
| lastPart = trimmed + "ieth"; | ||
| } | ||
| parts.push(lastPart); | ||
| } | ||
| parts.push(lastPart); | ||
| } | ||
| else if (isOrdinal) { | ||
| parts[parts.length - 1] += "th"; | ||
| } | ||
| var toWords = parts.join(" "); | ||
| if (isOrdinal) { | ||
| toWords = EnglishNumberToWordsConverter.removeOnePrefix(toWords); | ||
| } | ||
| return toWords; | ||
| } | ||
| static getUnitValue(number, isOrdinal) { | ||
| if (isOrdinal) { | ||
| let exceptionString = EnglishNumberToWordsConverter.exceptionNumbersToWords(number); | ||
| if (exceptionString != "NOTFOUND") { | ||
| return exceptionString; | ||
| } | ||
| else { | ||
| return EnglishNumberToWordsConverter.UnitsMap[number] + "th"; | ||
| } | ||
| else if (isOrdinal) { | ||
| parts[parts.length - 1] += "th"; | ||
| } | ||
| let toWords = parts.join(" "); | ||
| if (isOrdinal) { | ||
| toWords = EnglishNumberToWordsConverter.removeOnePrefix(toWords); | ||
| } | ||
| return toWords; | ||
| } | ||
| static getUnitValue(number, isOrdinal) { | ||
| if (isOrdinal) { | ||
| const exceptionString = EnglishNumberToWordsConverter.exceptionNumbersToWords(number); | ||
| if (exceptionString !== "NOTFOUND") { | ||
| return exceptionString; | ||
| } | ||
| else { | ||
| return EnglishNumberToWordsConverter.UnitsMap[number]; | ||
| return EnglishNumberToWordsConverter.UnitsMap[number] + "th"; | ||
| } | ||
| } | ||
| static removeOnePrefix(toWords) { | ||
| // one hundred => hundredth | ||
| if (toWords.indexOf("one") == 0) { | ||
| toWords = toWords.substring(4); //toWords.remove(0, 4); | ||
| } | ||
| return toWords; | ||
| else { | ||
| return EnglishNumberToWordsConverter.UnitsMap[number]; | ||
| } | ||
| static exceptionNumbersToWords(number) { | ||
| let rtnVal = "NOTFOUND"; | ||
| EnglishNumberToWordsConverter.OrdinalExceptions.forEach(element => { | ||
| if (element[0] == number) { | ||
| rtnVal = element[1].toString(); | ||
| } | ||
| }); | ||
| return rtnVal; | ||
| } | ||
| static removeOnePrefix(toWords) { | ||
| // one hundred => hundredth | ||
| if (toWords.indexOf("one") === 0) { | ||
| toWords = toWords.substring(4); // toWords.remove(0, 4); | ||
| } | ||
| return toWords; | ||
| } | ||
| EnglishNumberToWordsConverter.UnitsMap = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"]; | ||
| EnglishNumberToWordsConverter.TensMap = ["zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"]; | ||
| EnglishNumberToWordsConverter.OrdinalExceptions = [ | ||
| [1, "first"], | ||
| [2, "second"], | ||
| [3, "third"], | ||
| [4, "fourth"], | ||
| [5, "fifth"], | ||
| [8, "eighth"], | ||
| [9, "ninth"], | ||
| [12, "twelfth"], | ||
| ]; | ||
| return EnglishNumberToWordsConverter; | ||
| })(); | ||
| static exceptionNumbersToWords(number) { | ||
| let rtnVal = "NOTFOUND"; | ||
| EnglishNumberToWordsConverter.OrdinalExceptions.forEach(element => { | ||
| // tslint:disable-next-line | ||
| if (element[0] == number) { | ||
| rtnVal = element[1].toString(); | ||
| } | ||
| }); | ||
| return rtnVal; | ||
| } | ||
| } | ||
| exports.EnglishNumberToWordsConverter = EnglishNumberToWordsConverter; | ||
| EnglishNumberToWordsConverter.UnitsMap = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"]; | ||
| EnglishNumberToWordsConverter.TensMap = ["zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"]; | ||
| EnglishNumberToWordsConverter.OrdinalExceptions = [ | ||
| [1, "first"], | ||
| [2, "second"], | ||
| [3, "third"], | ||
| [4, "fourth"], | ||
| [5, "fifth"], | ||
| [8, "eighth"], | ||
| [9, "ninth"], | ||
| [12, "twelfth"], | ||
| ]; | ||
| //# sourceMappingURL=EnglishNumberToWordsConverter.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"EnglishNumberToWordsConverter.js","sourceRoot":"","sources":["../../../../../src/Humanizer/Localisation/NumberToWords/EnglishNumberToWordsConverter.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"EnglishNumberToWordsConverter.js","sourceRoot":"","sources":["../../../../../src/Humanizer/Localisation/NumberToWords/EnglishNumberToWordsConverter.ts"],"names":[],"mappings":"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"} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.ShowQuantityAs = void 0; | ||
| // @ts-ignore | ||
@@ -32,9 +31,9 @@ const Vocabularies_1 = require("./src/Humanizer/Inflections/Vocabularies"); | ||
| String.prototype.toQuantity = function (quantity, showQuantityAs = ShowQuantityAs.Numeric) { | ||
| let transformedInput = quantity == 1 | ||
| const transformedInput = quantity === 1 | ||
| ? Vocabularies_1.Vocabularies.Default().singularize(this, false) | ||
| : Vocabularies_1.Vocabularies.Default().pluralize(this, false); | ||
| if (showQuantityAs == ShowQuantityAs.None) { | ||
| if (showQuantityAs === ShowQuantityAs.None) { | ||
| return transformedInput; | ||
| } | ||
| if (showQuantityAs == ShowQuantityAs.Numeric) { | ||
| if (showQuantityAs === ShowQuantityAs.Numeric) { | ||
| return `${quantity} ${transformedInput}`; | ||
@@ -41,0 +40,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"toQuantity.js","sourceRoot":"","sources":["../toQuantity.ts"],"names":[],"mappings":";;;AACA,aAAa;AACb,2EAAuE;AACvE,2BAAwB;AAQxB;;GAEG;AACH,IAAY,cAaX;AAbD,WAAY,cAAc;IACtB,2EAA2E;IAC3E,mDAAI,CAAA;IACJ;;;OAGG;IACH,yDAAO,CAAA;IACP;;;OAGG;IACH,qDAAK,CAAA;AACT,CAAC,EAbW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAazB;AAED;;;;;GAKG;AACH,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,QAAgB,EAAE,iBAAiC,cAAc,CAAC,OAAO;IAC7G,IAAI,gBAAgB,GAAG,QAAQ,IAAI,CAAC;QACpC,CAAC,CAAC,2BAAY,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;QACjD,CAAC,CAAC,2BAAY,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAE/C,IAAI,cAAc,IAAI,cAAc,CAAC,IAAI,EAAE;QACvC,OAAO,gBAAgB,CAAC;KAC3B;IAED,IAAI,cAAc,IAAI,cAAc,CAAC,OAAO,EAAE;QAC1C,OAAO,GAAG,QAAQ,IAAI,gBAAgB,EAAE,CAAA;KAC3C;IACD,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,gBAAgB,EAAE,CAAA;AACtD,CAAC,CAAA"} | ||
| {"version":3,"file":"toQuantity.js","sourceRoot":"","sources":["../toQuantity.ts"],"names":[],"mappings":";;AACA,aAAa;AACb,2EAAuE;AACvE,2BAAwB;AAQxB;;GAEG;AACH,IAAY,cAaX;AAbD,WAAY,cAAc;IACtB,2EAA2E;IAC3E,mDAAI,CAAA;IACJ;;;OAGG;IACH,yDAAO,CAAA;IACP;;;OAGG;IACH,qDAAK,CAAA;AACT,CAAC,EAbW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAazB;AAED;;;;;GAKG;AACH,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,QAAgB,EAAE,iBAAiC,cAAc,CAAC,OAAO;IAC7G,MAAM,gBAAgB,GAAG,QAAQ,KAAK,CAAC;QACvC,CAAC,CAAC,2BAAY,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,IAAc,EAAE,KAAK,CAAC;QAC3D,CAAC,CAAC,2BAAY,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAc,EAAE,KAAK,CAAC,CAAA;IAEzD,IAAI,cAAc,KAAK,cAAc,CAAC,IAAI,EAAE;QACxC,OAAO,gBAAgB,CAAC;KAC3B;IAED,IAAI,cAAc,KAAK,cAAc,CAAC,OAAO,EAAE;QAC3C,OAAO,GAAG,QAAQ,IAAI,gBAAgB,EAAE,CAAA;KAC3C;IACD,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,gBAAgB,EAAE,CAAA;AACtD,CAAC,CAAA"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"vocabularies.js","sourceRoot":"","sources":["../vocabularies.ts"],"names":[],"mappings":";;AACA,aAAa;AACb,2EAAuE;AASvE,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG;IACzB,OAAO,2BAAY,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AACjD,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG;IAC3B,OAAO,2BAAY,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;AACnD,CAAC,CAAA"} | ||
| {"version":3,"file":"vocabularies.js","sourceRoot":"","sources":["../vocabularies.ts"],"names":[],"mappings":";;AACA,aAAa;AACb,2EAAuE;AASvE,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG;IACzB,OAAO,2BAAY,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAc,CAAC,CAAA;AAC3D,CAAC,CAAA;AAED,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG;IAC3B,OAAO,2BAAY,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,IAAc,CAAC,CAAA;AAC7D,CAAC,CAAA"} |
+11
-7
| import * as numberToWords from './numberToWords' | ||
| import * as romanNumeral from './romanNumeral' | ||
| import * as romanNumerals from './romanNumerals' | ||
| import * as toQuantity from './toQuantity' | ||
@@ -7,10 +7,14 @@ import * as vocabularies from './vocabularies' | ||
| import * as ordinalize from './ordinalize' | ||
| import * as numberToNumbers from './numberToNumbers' | ||
| import * as metricNumerals from './metricNumerals' | ||
| export { | ||
| numberToWords, | ||
| romanNumeral, | ||
| toQuantity, | ||
| vocabularies, | ||
| byteSize, | ||
| ordinalize | ||
| numberToNumbers, | ||
| romanNumerals, | ||
| toQuantity, | ||
| vocabularies, | ||
| byteSize, | ||
| ordinalize, | ||
| metricNumerals, | ||
| numberToWords | ||
| } |
+2
-2
@@ -16,3 +16,3 @@ // @ts-ignore | ||
| Number.prototype.toWords = function (): string { | ||
| return EnglishNumberToWordsConverter.convert(this) | ||
| return EnglishNumberToWordsConverter.convert(this as number) | ||
| } | ||
@@ -25,4 +25,4 @@ | ||
| Number.prototype.toOrdinalWords = function (): string { | ||
| return EnglishNumberToWordsConverter.convert(this, true) | ||
| return EnglishNumberToWordsConverter.convert(this as number, true) | ||
| } | ||
+2
-2
@@ -15,7 +15,7 @@ // @ts-ignor | ||
| Number.prototype.ordinalize = function (): string { | ||
| return ord.convert(this, this.toString()) | ||
| return ord.convert(this as number, this.toString()) | ||
| } | ||
| String.prototype.ordinalize = function (): string { | ||
| return ord.convert(Number(this), this) | ||
| return ord.convert(Number(this), this as string) | ||
| } |
+4
-3
| { | ||
| "name": "humanizer.node", | ||
| "version": "1.0.3", | ||
| "version": "1.0.4", | ||
| "description": "Humanizer meets all your Node needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantitie", | ||
@@ -9,3 +9,4 @@ "main": "dist/index.js", | ||
| "build": "rimraf irf dist/* && tsc", | ||
| "test": "mocha" | ||
| "test": "mocha", | ||
| "local": "npm run build && node ./local_test.js" | ||
| }, | ||
@@ -34,4 +35,4 @@ "repository": { | ||
| "ts-node": "^8.10.1", | ||
| "typescript": "^3.7.4" | ||
| "typescript": "3.7.4" | ||
| } | ||
| } |
+71
-14
@@ -10,3 +10,20 @@ # Humanizer.node | ||
| ``` | ||
| ### Table of contents | ||
| - [Humanizer.node](#humanizernode) | ||
| - [Table of contents](#table-of-contents) | ||
| - [Implemented](#implemented) | ||
| - [Usage](#usage) | ||
| - [Examples](#examples) | ||
| - [ByteSize](#bytesize) | ||
| - [Vocabularies](#vocabularies) | ||
| - [Pluralize](#pluralize) | ||
| - [Singularize](#singularize) | ||
| - [Ordinalize](#ordinalize) | ||
| - [ToQuantity](#toquantity) | ||
| - [Number to words](#number-to-words) | ||
| - [Number to ordinal words](#number-to-ordinal-words) | ||
| - [Roman Numerals](#roman-numerals) | ||
| - [Metric numerals](#metric-numerals) | ||
| ## Implemented | ||
@@ -25,8 +42,3 @@ | ||
| ```js | ||
| require('humanizer.node').toQuantity | ||
| require('humanizer.node').numberToWords | ||
| require('humanizer.node').byteSize | ||
| require('humanizer.node').vocabularies | ||
| require('humanizer.node').romanNumeral | ||
| require('humanizer.node').ordinalize | ||
| require('humanizer.node') | ||
| ``` | ||
@@ -40,3 +52,3 @@ | ||
| let result = (10).megabytes().toString() | ||
| console.log(result) // -> 10 MB | ||
| console.log(result) // -> 10.00 MB | ||
| ``` | ||
@@ -51,3 +63,3 @@ | ||
| ```js | ||
| require('humanizer.node').byteSize | ||
| require('humanizer.node') | ||
@@ -88,3 +100,3 @@ let fileSize = (10).kilobytes() | ||
| ```js | ||
| require('humanizer.node').vocabularies | ||
| require('humanizer.node') | ||
@@ -108,3 +120,3 @@ "Man".pluralize() // -> Men | ||
| ```js | ||
| require('humanizer.node').ordinalize | ||
| require('humanizer.node') | ||
@@ -118,3 +130,3 @@ (1).ordinalize() => "1st" | ||
| ```js | ||
| require('humanizer.node').toQuantity | ||
| require('humanizer.node') | ||
@@ -151,3 +163,3 @@ "case".toQuantity(0) => "0 cases" | ||
| ```js | ||
| require('humanizer.node').numberToWords | ||
| require('humanizer.node') | ||
@@ -164,3 +176,3 @@ (1).toWords() => "one" | ||
| ```js | ||
| require('humanizer.node').numberToWords | ||
| require('humanizer.node') | ||
@@ -176,3 +188,48 @@ (0).toOrdinalWords() => "zeroth" | ||
| (21).toOrdinalWords() => "twenty first" | ||
| (121).toOrdinalWords() => "hundred and twenty first" | ||
| (121).toOrdinalWords() => "hundred and twenty-first" | ||
| ``` | ||
| ## Roman Numerals | ||
| Humanizer can change numbers to Roman numerals using the `toRoman` extension. The numbers 1 to 10 can be expressed in Roman numerals as follows: | ||
| ```ts | ||
| (1).toRoman() => "I" | ||
| (2).toRoman() => "II" | ||
| (3).toRoman() => "III" | ||
| (4).toRoman() => "IV" | ||
| (5).toRoman() => "V" | ||
| (6).toRoman() => "VI" | ||
| (7).toRoman() => "VII" | ||
| (8).toRoman() => "VIII" | ||
| (9).toRoman() => "IX" | ||
| (10).toRoman() => "X" | ||
| ``` | ||
| Also the reverse operation using the `fromRoman` extension. | ||
| ```ts | ||
| "I".fromRoman() => 1 | ||
| "II".fromRoman() => 2 | ||
| "III".fromRoman() => 3 | ||
| "IV".fromRoman() => 4 | ||
| "V".fromRoman() => 5 | ||
| ``` | ||
| ## Metric numerals | ||
| Humanizer can change numbers to Metric numerals using the `toMetric` extension. The numbers 1, 1230 and 0.1 can be expressed in Metric numerals as follows: | ||
| ```js | ||
| (1).toMetric() => "1" | ||
| (1230).toMetric() => "1.23k" | ||
| (0.1).toMetric() => "100m" | ||
| ``` | ||
| Also the reverse operation using the `fromMetric` extension. | ||
| ```js | ||
| "1".fromMetric() => 1 | ||
| "1.23k".fromMetric() => 1230 | ||
| "100m".fromMetric() => 0.1 | ||
| ``` |
@@ -173,4 +173,4 @@ //The MIT License (MIT) | ||
| /// </summary> | ||
| public toString(): string { | ||
| return this.largestWholeNumberValue() + " " + this.largestWholeNumberSymbol(); | ||
| public toString(fixePoint: number = 2): string { | ||
| return this.largestWholeNumberValue().toFixed(fixePoint) + " " + this.largestWholeNumberSymbol(); | ||
| } | ||
@@ -186,3 +186,3 @@ | ||
| public toFullWords(): string { | ||
| var byteSizeAsFullWords = this.toString() | ||
| const byteSizeAsFullWords = this.toString() | ||
@@ -257,7 +257,7 @@ // If there is more than one unit, make the word plural | ||
| let decSep = "." //Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator); | ||
| const decSep = "." // Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator); | ||
| // Pick first non-digit number | ||
| for (num = 0; num < s.length; num++) { | ||
| if (!(!isNaN(Number(s[num])) || s[num] == decSep)) { | ||
| if (!(!isNaN(Number(s[num])) || s[num] === decSep)) { | ||
| found = true; | ||
@@ -268,28 +268,26 @@ break; | ||
| if (found == false) { | ||
| return new ByteSize(1); //TODO: should raize error | ||
| if (found === false) { | ||
| return new ByteSize(1); // TODO: should raize error | ||
| } | ||
| let lastNumber = num; | ||
| const lastNumber = num; | ||
| // Cut the input string in half | ||
| var numberPart = s.substring(0, lastNumber).trim() | ||
| var sizePart = s.substring(lastNumber, s.length).trim() | ||
| const numberPart = s.substring(0, lastNumber).trim() | ||
| const sizePart = s.substring(lastNumber, s.length).trim() | ||
| // Get the numeric part | ||
| if (isNaN(Number(numberPart))) { | ||
| return new ByteSize(2); //TODO: should raize error | ||
| return new ByteSize(2); // TODO: should raize error | ||
| } | ||
| let nb = Number(numberPart) | ||
| const nb = Number(numberPart) | ||
| // Get the magnitude part | ||
| switch (sizePart.toUpperCase()) { | ||
| case ByteSize.ByteSymbol: | ||
| if (sizePart == ByteSize.BitSymbol) { // Bits | ||
| if (nb % 1 != 0) // Can't have partial bits | ||
| { | ||
| return new ByteSize(3); //TODO: should raize error | ||
| if (sizePart === ByteSize.BitSymbol) { // Bits | ||
| if (nb % 1 !== 0) { | ||
| return new ByteSize(3); // TODO: should raize error | ||
| } | ||
| result = ByteSize.fromBits(nb); | ||
| } | ||
| else { // Bytes | ||
| } else { // Bytes | ||
| result = ByteSize.fromBytes(nb); | ||
@@ -296,0 +294,0 @@ } |
| export const convert = function(nb: number, nbString: string): string { | ||
| let nMod100 = nb % 100; | ||
| const nMod100 = nb % 100; | ||
| if (nMod100 >= 11 && nMod100 <= 13) | ||
| { | ||
| if (nMod100 >= 11 && nMod100 <= 13) { | ||
| return nbString + "th"; | ||
| } | ||
| switch (nb % 10) | ||
| { | ||
| switch (nb % 10) { | ||
| case 1: | ||
@@ -12,0 +10,0 @@ return nbString + "st"; |
| // @ts-ignore | ||
| import { Vocabulary } from "./Vocabulary"; | ||
| /// <summary> | ||
| /// Container for registered Vocabularies. At present, only a single vocabulary is supported: Default. | ||
| /// </summary> | ||
| export abstract class Vocabularies { | ||
| private static Instance: Vocabulary; | ||
| /// <summary> | ||
| /// Container for registered Vocabularies. At present, only a single vocabulary is supported: Default. | ||
| /// The default vocabulary used for singular/plural irregularities. | ||
| /// Rules can be added to this vocabulary and will be picked up by called to Singularize() and Pluralize(). | ||
| /// At this time, multiple vocabularies and removing existing rules are not supported. | ||
| /// </summary> | ||
| export abstract class Vocabularies | ||
| { | ||
| private static Instance: Vocabulary; | ||
| /// <summary> | ||
| /// The default vocabulary used for singular/plural irregularities. | ||
| /// Rules can be added to this vocabulary and will be picked up by called to Singularize() and Pluralize(). | ||
| /// At this time, multiple vocabularies and removing existing rules are not supported. | ||
| /// </summary> | ||
| public static Default(): Vocabulary { | ||
| if (!Vocabularies.Instance) { | ||
| Vocabularies.Instance = Vocabularies.BuildDefault() | ||
| } | ||
| return Vocabularies.Instance | ||
| public static Default(): Vocabulary { | ||
| if (!Vocabularies.Instance) { | ||
| Vocabularies.Instance = Vocabularies.BuildDefault() | ||
| } | ||
| return Vocabularies.Instance | ||
| } | ||
| private static BuildDefault(): Vocabulary | ||
| { | ||
| var _default = new Vocabulary(); | ||
| private static BuildDefault(): Vocabulary { | ||
| const _default = new Vocabulary(); | ||
| _default.addPlural("$", "s"); | ||
| _default.addPlural("s$", "s"); | ||
| _default.addPlural("(ax|test)is$", "$1es"); | ||
| _default.addPlural("(octop|vir|alumn|fung|cact|foc|hippopotam|radi|stimul|syllab|nucle)us$", "$1i"); | ||
| _default.addPlural("(alias|bias|iris|status|campus|apparatus|virus|walrus|trellis)$", "$1es"); | ||
| _default.addPlural("(buffal|tomat|volcan|ech|embarg|her|mosquit|potat|torped|vet)o$", "$1oes"); | ||
| _default.addPlural("([dti])um$", "$1a"); | ||
| _default.addPlural("sis$", "ses"); | ||
| _default.addPlural("(?:([^f])fe|([lr])f)$", "$1$2ves"); | ||
| _default.addPlural("(hive)$", "$1s"); | ||
| _default.addPlural("([^aeiouy]|qu)y$", "$1ies"); | ||
| _default.addPlural("(x|ch|ss|sh)$", "$1es"); | ||
| _default.addPlural("(matr|vert|ind|d)ix|ex$", "$1ices"); | ||
| _default.addPlural("([m|l])ouse$", "$1ice"); | ||
| _default.addPlural("^(ox)$", "$1en"); | ||
| _default.addPlural("(quiz)$", "$1zes"); | ||
| _default.addPlural("(buz|blit|walt)z$", "$1zes"); | ||
| _default.addPlural("(hoo|lea|loa|thie)f$", "$1ves"); | ||
| _default.addPlural("(alumn|alg|larv|vertebr)a$", "$1ae"); | ||
| _default.addPlural("(criteri|phenomen)on$", "$1a"); | ||
| _default.addPlural("$", "s"); | ||
| _default.addPlural("s$", "s"); | ||
| _default.addPlural("(ax|test)is$", "$1es"); | ||
| _default.addPlural("(octop|vir|alumn|fung|cact|foc|hippopotam|radi|stimul|syllab|nucle)us$", "$1i"); | ||
| _default.addPlural("(alias|bias|iris|status|campus|apparatus|virus|walrus|trellis)$", "$1es"); | ||
| _default.addPlural("(buffal|tomat|volcan|ech|embarg|her|mosquit|potat|torped|vet)o$", "$1oes"); | ||
| _default.addPlural("([dti])um$", "$1a"); | ||
| _default.addPlural("sis$", "ses"); | ||
| _default.addPlural("(?:([^f])fe|([lr])f)$", "$1$2ves"); | ||
| _default.addPlural("(hive)$", "$1s"); | ||
| _default.addPlural("([^aeiouy]|qu)y$", "$1ies"); | ||
| _default.addPlural("(x|ch|ss|sh)$", "$1es"); | ||
| _default.addPlural("(matr|vert|ind|d)ix|ex$", "$1ices"); | ||
| _default.addPlural("([m|l])ouse$", "$1ice"); | ||
| _default.addPlural("^(ox)$", "$1en"); | ||
| _default.addPlural("(quiz)$", "$1zes"); | ||
| _default.addPlural("(buz|blit|walt)z$", "$1zes"); | ||
| _default.addPlural("(hoo|lea|loa|thie)f$", "$1ves"); | ||
| _default.addPlural("(alumn|alg|larv|vertebr)a$", "$1ae"); | ||
| _default.addPlural("(criteri|phenomen)on$", "$1a"); | ||
| _default.addSingular("s$", ""); | ||
| _default.addSingular("(n)ews$", "$1ews"); | ||
| _default.addSingular("([dti])a$", "$1um"); | ||
| _default.addSingular("(analy|ba|diagno|parenthe|progno|synop|the|ellip|empha|neuro|oa|paraly)ses$", "$1sis"); | ||
| _default.addSingular("([^f])ves$", "$1fe"); | ||
| _default.addSingular("(hive)s$", "$1"); | ||
| _default.addSingular("(tive)s$", "$1"); | ||
| _default.addSingular("([lr]|hoo|lea|loa|thie)ves$", "$1f"); | ||
| _default.addSingular("(^zomb)?([^aeiouy]|qu)ies$", "$2y"); | ||
| _default.addSingular("(s)eries$", "$1eries"); | ||
| _default.addSingular("(m)ovies$", "$1ovie"); | ||
| _default.addSingular("(x|ch|ss|sh)es$", "$1"); | ||
| _default.addSingular("([m|l])ice$", "$1ouse"); | ||
| _default.addSingular("(o)es$", "$1"); | ||
| _default.addSingular("(shoe)s$", "$1"); | ||
| _default.addSingular("(cris|ax|test)es$", "$1is"); | ||
| _default.addSingular("(octop|vir|alumn|fung|cact|foc|hippopotam|radi|stimul|syllab|nucle)i$", "$1us"); | ||
| _default.addSingular("(alias|bias|iris|status|campus|apparatus|virus|walrus|trellis)es$", "$1"); | ||
| _default.addSingular("^(ox)en", "$1"); | ||
| _default.addSingular("(matr|d)ices$", "$1ix"); | ||
| _default.addSingular("(vert|ind)ices$", "$1ex"); | ||
| _default.addSingular("(quiz)zes$", "$1"); | ||
| _default.addSingular("(buz|blit|walt)zes$", "$1z"); | ||
| _default.addSingular("(alumn|alg|larv|vertebr)ae$", "$1a"); | ||
| _default.addSingular("(criteri|phenomen)a$", "$1on"); | ||
| _default.addSingular("([b|r|c]ook|room|smooth)ies$", "$1ie"); | ||
| _default.addSingular("s$", ""); | ||
| _default.addSingular("(n)ews$", "$1ews"); | ||
| _default.addSingular("([dti])a$", "$1um"); | ||
| _default.addSingular("(analy|ba|diagno|parenthe|progno|synop|the|ellip|empha|neuro|oa|paraly)ses$", "$1sis"); | ||
| _default.addSingular("([^f])ves$", "$1fe"); | ||
| _default.addSingular("(hive)s$", "$1"); | ||
| _default.addSingular("(tive)s$", "$1"); | ||
| _default.addSingular("([lr]|hoo|lea|loa|thie)ves$", "$1f"); | ||
| _default.addSingular("(^zomb)?([^aeiouy]|qu)ies$", "$2y"); | ||
| _default.addSingular("(s)eries$", "$1eries"); | ||
| _default.addSingular("(m)ovies$", "$1ovie"); | ||
| _default.addSingular("(x|ch|ss|sh)es$", "$1"); | ||
| _default.addSingular("([m|l])ice$", "$1ouse"); | ||
| _default.addSingular("(o)es$", "$1"); | ||
| _default.addSingular("(shoe)s$", "$1"); | ||
| _default.addSingular("(cris|ax|test)es$", "$1is"); | ||
| _default.addSingular("(octop|vir|alumn|fung|cact|foc|hippopotam|radi|stimul|syllab|nucle)i$", "$1us"); | ||
| _default.addSingular("(alias|bias|iris|status|campus|apparatus|virus|walrus|trellis)es$", "$1"); | ||
| _default.addSingular("^(ox)en", "$1"); | ||
| _default.addSingular("(matr|d)ices$", "$1ix"); | ||
| _default.addSingular("(vert|ind)ices$", "$1ex"); | ||
| _default.addSingular("(quiz)zes$", "$1"); | ||
| _default.addSingular("(buz|blit|walt)zes$", "$1z"); | ||
| _default.addSingular("(alumn|alg|larv|vertebr)ae$", "$1a"); | ||
| _default.addSingular("(criteri|phenomen)a$", "$1on"); | ||
| _default.addSingular("([b|r|c]ook|room|smooth)ies$", "$1ie"); | ||
| _default.addIrregular("person", "people"); | ||
| _default.addIrregular("man", "men"); | ||
| _default.addIrregular("human", "humans"); | ||
| _default.addIrregular("child", "children"); | ||
| _default.addIrregular("sex", "sexes"); | ||
| _default.addIrregular("move", "moves"); | ||
| _default.addIrregular("goose", "geese"); | ||
| _default.addIrregular("wave", "waves"); | ||
| _default.addIrregular("die", "dice"); | ||
| _default.addIrregular("foot", "feet"); | ||
| _default.addIrregular("tooth", "teeth"); | ||
| _default.addIrregular("curriculum", "curricula"); | ||
| _default.addIrregular("database", "databases"); | ||
| _default.addIrregular("zombie", "zombies"); | ||
| _default.addIrregular("personnel", "personnel"); | ||
| //Fix #78a | ||
| _default.addIrregular("cache", "caches"); | ||
| _default.addIrregular("person", "people"); | ||
| _default.addIrregular("man", "men"); | ||
| _default.addIrregular("human", "humans"); | ||
| _default.addIrregular("child", "children"); | ||
| _default.addIrregular("sex", "sexes"); | ||
| _default.addIrregular("move", "moves"); | ||
| _default.addIrregular("goose", "geese"); | ||
| _default.addIrregular("wave", "waves"); | ||
| _default.addIrregular("die", "dice"); | ||
| _default.addIrregular("foot", "feet"); | ||
| _default.addIrregular("tooth", "teeth"); | ||
| _default.addIrregular("curriculum", "curricula"); | ||
| _default.addIrregular("database", "databases"); | ||
| _default.addIrregular("zombie", "zombies"); | ||
| _default.addIrregular("personnel", "personnel"); | ||
| // Fix #78a | ||
| _default.addIrregular("cache", "caches"); | ||
| _default.addIrregular("is", "are", false); | ||
| _default.addIrregular("that", "those", false); | ||
| _default.addIrregular("this", "these", false); | ||
| _default.addIrregular("bus", "buses", false); | ||
| _default.addIrregular("staff", "staff", false); | ||
| _default.addIrregular("training", "training", false); | ||
| _default.addIrregular("is", "are", false); | ||
| _default.addIrregular("that", "those", false); | ||
| _default.addIrregular("this", "these", false); | ||
| _default.addIrregular("bus", "buses", false); | ||
| _default.addIrregular("staff", "staff", false); | ||
| _default.addIrregular("training", "training", false); | ||
| _default.addUncountable("equipment"); | ||
| _default.addUncountable("information"); | ||
| _default.addUncountable("corn"); | ||
| _default.addUncountable("milk"); | ||
| _default.addUncountable("rice"); | ||
| _default.addUncountable("money"); | ||
| _default.addUncountable("species"); | ||
| _default.addUncountable("series"); | ||
| _default.addUncountable("fish"); | ||
| _default.addUncountable("sheep"); | ||
| _default.addUncountable("deer"); | ||
| _default.addUncountable("aircraft"); | ||
| _default.addUncountable("oz"); | ||
| _default.addUncountable("tsp"); | ||
| _default.addUncountable("tbsp"); | ||
| _default.addUncountable("ml"); | ||
| _default.addUncountable("l"); | ||
| _default.addUncountable("water"); | ||
| _default.addUncountable("waters"); | ||
| _default.addUncountable("semen"); | ||
| _default.addUncountable("sperm"); | ||
| _default.addUncountable("bison"); | ||
| _default.addUncountable("grass"); | ||
| _default.addUncountable("hair"); | ||
| _default.addUncountable("mud"); | ||
| _default.addUncountable("elk"); | ||
| _default.addUncountable("luggage"); | ||
| _default.addUncountable("moose"); | ||
| _default.addUncountable("offspring"); | ||
| _default.addUncountable("salmon"); | ||
| _default.addUncountable("shrimp"); | ||
| _default.addUncountable("someone"); | ||
| _default.addUncountable("swine"); | ||
| _default.addUncountable("trout"); | ||
| _default.addUncountable("tuna"); | ||
| _default.addUncountable("corps"); | ||
| _default.addUncountable("scissors"); | ||
| _default.addUncountable("means"); | ||
| _default.addUncountable("mail"); | ||
| _default.addUncountable("equipment"); | ||
| _default.addUncountable("information"); | ||
| _default.addUncountable("corn"); | ||
| _default.addUncountable("milk"); | ||
| _default.addUncountable("rice"); | ||
| _default.addUncountable("money"); | ||
| _default.addUncountable("species"); | ||
| _default.addUncountable("series"); | ||
| _default.addUncountable("fish"); | ||
| _default.addUncountable("sheep"); | ||
| _default.addUncountable("deer"); | ||
| _default.addUncountable("aircraft"); | ||
| _default.addUncountable("oz"); | ||
| _default.addUncountable("tsp"); | ||
| _default.addUncountable("tbsp"); | ||
| _default.addUncountable("ml"); | ||
| _default.addUncountable("l"); | ||
| _default.addUncountable("water"); | ||
| _default.addUncountable("waters"); | ||
| _default.addUncountable("semen"); | ||
| _default.addUncountable("sperm"); | ||
| _default.addUncountable("bison"); | ||
| _default.addUncountable("grass"); | ||
| _default.addUncountable("hair"); | ||
| _default.addUncountable("mud"); | ||
| _default.addUncountable("elk"); | ||
| _default.addUncountable("luggage"); | ||
| _default.addUncountable("moose"); | ||
| _default.addUncountable("offspring"); | ||
| _default.addUncountable("salmon"); | ||
| _default.addUncountable("shrimp"); | ||
| _default.addUncountable("someone"); | ||
| _default.addUncountable("swine"); | ||
| _default.addUncountable("trout"); | ||
| _default.addUncountable("tuna"); | ||
| _default.addUncountable("corps"); | ||
| _default.addUncountable("scissors"); | ||
| _default.addUncountable("means"); | ||
| _default.addUncountable("mail"); | ||
| return _default; | ||
| } | ||
| } | ||
| return _default; | ||
| } | ||
| } |
@@ -17,3 +17,4 @@ /// <summary> | ||
| /// <param name="plural">The plural form of the irregular word, e.g. "people".</param> | ||
| /// <param name="matchEnding">True to match these words on their own as well as at the end of longer words. False, otherwise.</param> | ||
| /// <param name="matchEnding">True to match these words on their own as well | ||
| /// as at the end of longer words. False, otherwise.</param> | ||
| public addIrregular(singular: string, plural: string, matchEnding: boolean = true): void { | ||
@@ -23,4 +24,3 @@ if (matchEnding) { | ||
| this.addSingular("(" + plural[0] + ")" + plural.substring(1) + "$", "$1" + singular.substring(1)); | ||
| } | ||
| else { | ||
| } else { | ||
| this.addPlural(`^${singular}$`, plural); | ||
@@ -61,6 +61,7 @@ this.addSingular(`^${plural}$`, singular); | ||
| /// <param name="word">Word to be pluralized</param> | ||
| /// <param name="inputIsKnownToBeSingular">Normally you call Pluralize on singular words; but if you're unsure call it with false</param> | ||
| /// <param name="inputIsKnownToBeSingular">Normally you call Pluralize on singular words; | ||
| /// but if you're unsure call it with false</param> | ||
| /// <returns></returns> | ||
| public pluralize(word: string, inputIsKnownToBeSingular: boolean = true): string { | ||
| var result = this.applyRules(this._plurals, word, false); | ||
| const result = this.applyRules(this._plurals, word, false); | ||
@@ -71,5 +72,5 @@ if (inputIsKnownToBeSingular) { | ||
| var asSingular = this.applyRules(this._singulars, word, false); | ||
| var asSingularAsPlural = this.applyRules(this._plurals, asSingular, false); | ||
| if (asSingular != null && asSingular != word && asSingular + "s" != word && asSingularAsPlural == word && result != word) { | ||
| const asSingular = this.applyRules(this._singulars, word, false); | ||
| const asSingularAsPlural = this.applyRules(this._plurals, asSingular, false); | ||
| if (asSingular !== "" && asSingular !== word && asSingular + "s" !== word && asSingularAsPlural === word && result !== word) { | ||
| return word; | ||
@@ -85,8 +86,9 @@ } | ||
| /// <param name="word">Word to be singularized</param> | ||
| /// <param name="inputIsKnownToBePlural">Normally you call Singularize on plural words; but if you're unsure call it with false</param> | ||
| /// <param name="inputIsKnownToBePlural">Normally you call Singularize on plural words; but if you're unsure | ||
| /// call it with false</param> | ||
| /// <param name="skipSimpleWords">Skip singularizing single words that have an 's' on the end</param> | ||
| /// <returns></returns> | ||
| public singularize(word: string, inputIsKnownToBePlural: boolean = true, skipSimpleWords: boolean = false): string { | ||
| var result = this.applyRules(this._singulars, word, skipSimpleWords); | ||
| const result = this.applyRules(this._singulars, word, skipSimpleWords); | ||
| if (inputIsKnownToBePlural) { | ||
@@ -97,9 +99,9 @@ return result ?? word; | ||
| // the Plurality is unknown so we should check all possibilities | ||
| var asPlural = this.applyRules(this._plurals, word, false); | ||
| var asPluralAsSingular = this.applyRules(this._singulars, asPlural, false); | ||
| if (asPlural != word && word + "s" != asPlural && asPluralAsSingular == word && result != word) { | ||
| const asPlural = this.applyRules(this._plurals, word, false); | ||
| const asPluralAsSingular = this.applyRules(this._singulars, asPlural, false); | ||
| if (asPlural !== word && word + "s" !== asPlural && asPluralAsSingular === word && result !== word) { | ||
| return word; | ||
| } | ||
| return result ?? word; | ||
| return result === "" ? word : result; | ||
| } | ||
@@ -109,2 +111,3 @@ | ||
| if (word == null) { | ||
| // @ts-ignore | ||
| return null; | ||
@@ -117,6 +120,6 @@ } | ||
| var result = word; | ||
| var end = skipFirstRule ? 1 : 0; | ||
| for (var i = rules.length - 1; i >= end; i--) { | ||
| if ((result = rules[i].apply(word)) != null) { | ||
| let result = word; | ||
| const end = skipFirstRule ? 1 : 0; | ||
| for (let i = rules.length - 1; i >= end; i--) { | ||
| if ((result = rules[i].apply(word)) !== "") { | ||
| break; | ||
@@ -138,3 +141,3 @@ } | ||
| public constructor(pattern: string, replacement: string) { | ||
| this._regex = new RegExp(pattern, 'i'); | ||
| this._regex = new RegExp(pattern, "i"); | ||
| this._replacement = replacement; | ||
@@ -145,3 +148,3 @@ } | ||
| if (!this._regex.test(word)) { | ||
| return null; | ||
| return ""; | ||
| } | ||
@@ -148,0 +151,0 @@ return word.replace(this._regex, this._replacement) |
@@ -1,3 +0,2 @@ | ||
| export class EnglishNumberToWordsConverter | ||
| { | ||
| export class EnglishNumberToWordsConverter { | ||
| private static readonly UnitsMap = [ "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" ]; | ||
@@ -18,24 +17,19 @@ private static readonly TensMap = [ "zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" ]; | ||
| static convertToOrdinal(number: number): string | ||
| { | ||
| static convertToOrdinal(number: number): string { | ||
| return EnglishNumberToWordsConverter.convert(number, true); | ||
| } | ||
| static convert(number: number, isOrdinal: boolean = false): string | ||
| { | ||
| static convert(number: number, isOrdinal: boolean = false): string { | ||
| number = Math.floor(number) | ||
| if (number == 0) | ||
| { | ||
| if (number === 0) { | ||
| return EnglishNumberToWordsConverter.getUnitValue(0, isOrdinal); | ||
| } | ||
| if (number < 0) | ||
| { | ||
| if (number < 0) { | ||
| return `minus ${EnglishNumberToWordsConverter.convert(-number)}` | ||
| } | ||
| var parts = new Array<string>(); | ||
| const parts = new Array<string>(); | ||
| if (Math.floor(number / 1000000000000000000) > 0) | ||
| { | ||
| if (Math.floor(number / 1000000000000000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000000000000000)} quintillion`) | ||
@@ -45,4 +39,3 @@ number %= 1000000000000000000; | ||
| if (Math.floor(number / 1000000000000000) > 0) | ||
| { | ||
| if (Math.floor(number / 1000000000000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000000000000)} quadrillion`); | ||
@@ -52,4 +45,3 @@ number %= 1000000000000000; | ||
| if (Math.floor(number / 1000000000000) > 0) | ||
| { | ||
| if (Math.floor(number / 1000000000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000000000)} trillion`) | ||
@@ -59,4 +51,3 @@ number %= 1000000000000; | ||
| if (Math.floor(number / 1000000000) > 0) | ||
| { | ||
| if (Math.floor(number / 1000000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000000)} billion`); | ||
@@ -66,4 +57,3 @@ number %= 1000000000; | ||
| if (Math.floor(number / 1000000) > 0) | ||
| { | ||
| if (Math.floor(number / 1000000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000000)} million`); | ||
@@ -73,4 +63,3 @@ number %= 1000000; | ||
| if (Math.floor(number / 1000) > 0) | ||
| { | ||
| if (Math.floor(number / 1000) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 1000)} thousand`); | ||
@@ -80,4 +69,3 @@ number %= 1000; | ||
| if (Math.floor(number / 100) > 0) | ||
| { | ||
| if (Math.floor(number / 100) > 0) { | ||
| parts.push(`${EnglishNumberToWordsConverter.convert(number / 100)} hundred`); | ||
@@ -87,23 +75,15 @@ number %= 100; | ||
| if (Math.floor(number) > 0) | ||
| { | ||
| if (parts.length != 0) | ||
| { | ||
| if (Math.floor(number) > 0) { | ||
| if (parts.length !== 0) { | ||
| parts.push("and"); | ||
| } | ||
| if (number < 20) | ||
| { | ||
| if (number < 20) { | ||
| parts.push(EnglishNumberToWordsConverter.getUnitValue(number, isOrdinal)); | ||
| } | ||
| else | ||
| { | ||
| var lastPart = EnglishNumberToWordsConverter.TensMap[Math.floor(number / 10)]; | ||
| if ((number % 10) > 0) | ||
| { | ||
| } else { | ||
| let lastPart = EnglishNumberToWordsConverter.TensMap[Math.floor(number / 10)]; | ||
| if ((number % 10) > 0) { | ||
| lastPart += `-${EnglishNumberToWordsConverter.getUnitValue(number % 10, isOrdinal)}`; | ||
| } | ||
| else if (isOrdinal) | ||
| { | ||
| let trimmed = lastPart.replace(/\y+$/g, ''); //lastPart.trimEnd('y') | ||
| } else if (isOrdinal) { | ||
| const trimmed = lastPart.replace(/\y+$/g, ""); // lastPart.trimEnd('y') | ||
| lastPart = trimmed + "ieth"; | ||
@@ -114,12 +94,9 @@ } | ||
| } | ||
| } | ||
| else if (isOrdinal) | ||
| { | ||
| } else if (isOrdinal) { | ||
| parts[parts.length - 1] += "th"; | ||
| } | ||
| var toWords = parts.join(" "); | ||
| let toWords = parts.join(" "); | ||
| if (isOrdinal) | ||
| { | ||
| if (isOrdinal) { | ||
| toWords = EnglishNumberToWordsConverter.removeOnePrefix(toWords); | ||
@@ -131,18 +108,11 @@ } | ||
| private static getUnitValue(number: number, isOrdinal: boolean): string | ||
| { | ||
| if (isOrdinal) | ||
| { | ||
| let exceptionString = EnglishNumberToWordsConverter.exceptionNumbersToWords(number) | ||
| if (exceptionString != "NOTFOUND") | ||
| { | ||
| private static getUnitValue(number: number, isOrdinal: boolean): string { | ||
| if (isOrdinal) { | ||
| const exceptionString = EnglishNumberToWordsConverter.exceptionNumbersToWords(number) | ||
| if (exceptionString !== "NOTFOUND") { | ||
| return exceptionString; | ||
| } | ||
| else | ||
| { | ||
| } else { | ||
| return EnglishNumberToWordsConverter.UnitsMap[number] + "th"; | ||
| } | ||
| } | ||
| else | ||
| { | ||
| } else { | ||
| return EnglishNumberToWordsConverter.UnitsMap[number]; | ||
@@ -152,8 +122,6 @@ } | ||
| private static removeOnePrefix(toWords: string): string | ||
| { | ||
| private static removeOnePrefix(toWords: string): string { | ||
| // one hundred => hundredth | ||
| if (toWords.indexOf("one") == 0) | ||
| { | ||
| toWords = toWords.substring(4); //toWords.remove(0, 4); | ||
| if (toWords.indexOf("one") === 0) { | ||
| toWords = toWords.substring(4); // toWords.remove(0, 4); | ||
| } | ||
@@ -164,6 +132,6 @@ | ||
| private static exceptionNumbersToWords(number: number): string | ||
| { | ||
| private static exceptionNumbersToWords(number: number): string { | ||
| let rtnVal = "NOTFOUND"; | ||
| EnglishNumberToWordsConverter.OrdinalExceptions.forEach(element => { | ||
| // tslint:disable-next-line | ||
| if (element[0] == number) { | ||
@@ -175,2 +143,2 @@ rtnVal = element[1].toString() | ||
| } | ||
| } | ||
| } |
+80
-10
| let assert = require('assert'); | ||
| require('../dist/numberToWords') | ||
| require('../dist/byteSize') | ||
| require('../dist') | ||
| describe('NumberToWords', function() { | ||
| describe('.toWords()', function() { | ||
| it('Trying (number).toWord', function() { | ||
| describe('ByteSize', function() { | ||
| const fileSize = (10).kilobytes() | ||
| describe('.bits()', function() { | ||
| it('Trying (number).bits()', function() { | ||
| assert.equal(fileSize.bits, 81920); | ||
| }); | ||
| }); | ||
| describe('.bytes()', function() { | ||
| it('Trying (number).bytes()', function() { | ||
| assert.equal(fileSize.bytes, 10240); | ||
| }); | ||
| }); | ||
| describe('.kilobytes()', function() { | ||
| it('Trying (number).kilobytes()', function() { | ||
| assert.equal(fileSize.kilobytes, 10); | ||
| }); | ||
| }); | ||
| describe('.megabytes()', function() { | ||
| it('Trying (number).megabytes()', function() { | ||
| assert.equal(fileSize.megabytes, 0.009765625); | ||
| }); | ||
| }); | ||
| describe('.gigabytes()', function() { | ||
| it('Trying (number).gigabytes()', function() { | ||
| assert.equal(fileSize.gigabytes, 0.0000095367431640625); | ||
| }); | ||
| }); | ||
| describe('.terabytes()', function() { | ||
| it('Trying (number).terabytes()', function() { | ||
| assert.equal(fileSize.terabytes, 9.313225746154785e-9); | ||
| }); | ||
| }); | ||
| }); | ||
| describe('vocabularies', function() { | ||
| describe('.pluralize()', function() { | ||
| it('Trying (string).pluralize()', function() { | ||
| assert.equal("Man".pluralize(), "Men"); | ||
| assert.equal("string".pluralize(), "strings"); | ||
| }); | ||
| }); | ||
| }); | ||
| describe('Ordinalize', function() { | ||
| describe('.ordinalize()', function() { | ||
| it('Trying (string).ordinalize()', function() { | ||
| assert.equal((1).ordinalize(), "1st"); | ||
| assert.equal((5).ordinalize(), "5th"); | ||
| }); | ||
| }); | ||
| }); | ||
| describe('ToQuantity', function() { | ||
| describe('.toQuantity()', function() { | ||
| it('Trying (string).toQuantity()', function() { | ||
| assert.equal("case".toQuantity(0), "0 cases"); | ||
| assert.equal("case".toQuantity(1), "1 case"); | ||
| assert.equal("case".toQuantity(5), "5 cases"); | ||
| assert.equal("man".toQuantity(2), "2 men"); | ||
| assert.equal("case".toQuantity(5, 2), "five cases"); | ||
| }); | ||
| }); | ||
| }); | ||
| describe('Number to words', function() { | ||
| describe('.numberToWords()', function() { | ||
| it('Trying (string).numberToWords()', function() { | ||
| assert.equal((1).toWords(), "one"); | ||
| assert.equal((10).toWords(), "ten"); | ||
| assert.equal((11).toWords(), "eleven"); | ||
| assert.equal((122).toWords(), "one hundred and twenty-two"); | ||
| assert.equal((3501).toWords(), "three thousand five hundred and one"); | ||
| }); | ||
@@ -14,8 +81,11 @@ }); | ||
| describe('ByteSize', function() { | ||
| describe('.megabytes()', function() { | ||
| it('Trying (number).megabytes()', function() { | ||
| assert.equal((10).megabytes().toString(), "10 MB"); | ||
| describe('Number to ordinal words', function() { | ||
| describe('.numberToWords()', function() { | ||
| it('Trying (string).numberToWords()', function() { | ||
| assert.equal((1).toOrdinalWords(), "first"); | ||
| assert.equal((10).toOrdinalWords(), "tenth"); | ||
| assert.equal((11).toOrdinalWords(), "eleventh"); | ||
| assert.equal((121).toOrdinalWords(), "hundred and twenty-first"); | ||
| }); | ||
| }); | ||
| }); | ||
| }); |
+6
-6
@@ -8,3 +8,3 @@ | ||
| interface String { | ||
| toQuantity(quantity: number, showQuantityAs: ShowQuantityAs): string | ||
| toQuantity(quantity: number, showQuantityAs?: ShowQuantityAs): string | ||
| } | ||
@@ -38,11 +38,11 @@ } | ||
| String.prototype.toQuantity = function (quantity: number, showQuantityAs: ShowQuantityAs = ShowQuantityAs.Numeric): string { | ||
| let transformedInput = quantity == 1 | ||
| ? Vocabularies.Default().singularize(this, false) | ||
| : Vocabularies.Default().pluralize(this, false) | ||
| const transformedInput = quantity === 1 | ||
| ? Vocabularies.Default().singularize(this as string, false) | ||
| : Vocabularies.Default().pluralize(this as string, false) | ||
| if (showQuantityAs == ShowQuantityAs.None) { | ||
| if (showQuantityAs === ShowQuantityAs.None) { | ||
| return transformedInput; | ||
| } | ||
| if (showQuantityAs == ShowQuantityAs.Numeric) { | ||
| if (showQuantityAs === ShowQuantityAs.Numeric) { | ||
| return `${quantity} ${transformedInput}` | ||
@@ -49,0 +49,0 @@ } |
+2
-2
@@ -13,9 +13,9 @@ | ||
| String.prototype.pluralize = function (): string { | ||
| return Vocabularies.Default().pluralize(this) | ||
| return Vocabularies.Default().pluralize(this as string) | ||
| } | ||
| String.prototype.singularize = function (): string { | ||
| return Vocabularies.Default().singularize(this) | ||
| return Vocabularies.Default().singularize(this as string) | ||
| } | ||
| //# sourceMappingURL=readme_examples.js.map |
| {"version":3,"file":"readme_examples.js","sourceRoot":"","sources":["../readme_examples.ts"],"names":[],"mappings":""} |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.RomanNumeralExtensions = void 0; | ||
| /// <summary> | ||
| /// Contains extension methods for changing a number to Roman representation (ToRoman) and from Roman representation back to the number (FromRoman) | ||
| /// </summary> | ||
| let RomanNumeralExtensions = /** @class */ (() => { | ||
| class RomanNumeralExtensions { | ||
| /// <summary> | ||
| /// Converts Roman numbers into integer | ||
| /// </summary> | ||
| /// <param name="input">Roman number</param> | ||
| /// <returns>Human-readable number</returns> | ||
| static fromRoman(input) { | ||
| if (input == null) { | ||
| throw new Error("input can't be null"); | ||
| } | ||
| input = input.trim().toUpperCase(); | ||
| let length = input.length; | ||
| if ((length == 0) || RomanNumeralExtensions.isInvalidRomanNumeral(input)) { | ||
| throw new Error("Empty or invalid Roman numeral string."); | ||
| } | ||
| let total = 0; | ||
| let i = length; | ||
| while (i > 0) { | ||
| let digit = RomanNumeralExtensions.romanToDigit(input[--i].toString()); | ||
| if (i > 0) { | ||
| let previousDigit = RomanNumeralExtensions.romanToDigit(input[i - 1].toString()); | ||
| if (previousDigit < digit) { | ||
| digit -= previousDigit; | ||
| i--; | ||
| } | ||
| } | ||
| total += digit; | ||
| } | ||
| return total; | ||
| } | ||
| static romanToDigit(char) { | ||
| let rtnVal = 0; | ||
| RomanNumeralExtensions.RomanNumerals.forEach(pair => { | ||
| if (pair.key == char) { | ||
| rtnVal = pair.value; | ||
| } | ||
| }); | ||
| return rtnVal; | ||
| } | ||
| /// <summary> | ||
| /// Converts the input to Roman number | ||
| /// </summary> | ||
| /// <param name="input">Integer input</param> | ||
| /// <returns>Roman number</returns> | ||
| /// <exception cref="ArgumentOutOfRangeException">Thrown when the input is smaller than 1 or larger than 3999</exception> | ||
| static toRoman(input) { | ||
| const minValue = 1; | ||
| const maxValue = 3999; | ||
| if ((input < minValue) || (input > maxValue)) { | ||
| throw new Error("ArgumentOutOfRangeException"); | ||
| } | ||
| let sb = ""; | ||
| RomanNumeralExtensions.RomanNumerals.forEach(pair => { | ||
| while (Math.floor(input / pair.value) > 0) { | ||
| sb += pair.key; | ||
| input -= pair.value; | ||
| } | ||
| }); | ||
| return sb; | ||
| } | ||
| static isInvalidRomanNumeral(input) { | ||
| return !RomanNumeralExtensions.ValidRomanNumeral.test(input); | ||
| } | ||
| } | ||
| RomanNumeralExtensions.RomanNumerals = [ | ||
| { key: "M", value: 1000 }, | ||
| { key: "CM", value: 900 }, | ||
| { key: "D", value: 500 }, | ||
| { key: "CD", value: 400 }, | ||
| { key: "C", value: 100 }, | ||
| { key: "XC", value: 90 }, | ||
| { key: "L", value: 50 }, | ||
| { key: "XL", value: 40 }, | ||
| { key: "X", value: 10 }, | ||
| { key: "IX", value: 9 }, | ||
| { key: "V", value: 5 }, | ||
| { key: "IV", value: 4 }, | ||
| { key: "I", value: 1 } | ||
| ]; | ||
| RomanNumeralExtensions.ValidRomanNumeral = /^(?:(?=[MDCLXVI])((M{0,3})((C[DM])|(D?C{0,3}))?((X[LC])|(L?XX{0,2})|L)?((I[VX])|(V?(II{0,2}))|V)?))$/i; | ||
| return RomanNumeralExtensions; | ||
| })(); | ||
| exports.RomanNumeralExtensions = RomanNumeralExtensions; | ||
| //# sourceMappingURL=romanNumeral.js.map |
| {"version":3,"file":"romanNumeral.js","sourceRoot":"","sources":["../romanNumeral.ts"],"names":[],"mappings":"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"} |
-116
| /// <summary> | ||
| /// Contains extension methods for changing a number to Roman representation (ToRoman) and from Roman representation back to the number (FromRoman) | ||
| /// </summary> | ||
| export abstract class RomanNumeralExtensions | ||
| { | ||
| private static readonly RomanNumerals = | ||
| [ | ||
| { key: "M", value: 1000 }, | ||
| { key: "CM", value: 900 }, | ||
| { key: "D", value: 500 }, | ||
| { key: "CD", value: 400 }, | ||
| { key: "C", value: 100 }, | ||
| { key: "XC", value: 90 }, | ||
| { key: "L", value: 50 }, | ||
| { key: "XL", value: 40 }, | ||
| { key: "X", value: 10 }, | ||
| { key: "IX", value: 9 }, | ||
| { key: "V", value: 5 }, | ||
| { key: "IV", value: 4 }, | ||
| { key: "I", value: 1 } | ||
| ]; | ||
| private static readonly ValidRomanNumeral = /^(?:(?=[MDCLXVI])((M{0,3})((C[DM])|(D?C{0,3}))?((X[LC])|(L?XX{0,2})|L)?((I[VX])|(V?(II{0,2}))|V)?))$/i | ||
| /// <summary> | ||
| /// Converts Roman numbers into integer | ||
| /// </summary> | ||
| /// <param name="input">Roman number</param> | ||
| /// <returns>Human-readable number</returns> | ||
| public static fromRoman(input: string): number | ||
| { | ||
| if (input == null) | ||
| { | ||
| throw new Error("input can't be null"); | ||
| } | ||
| input = input.trim().toUpperCase() | ||
| let length = input.length; | ||
| if ((length == 0) || RomanNumeralExtensions.isInvalidRomanNumeral(input)) | ||
| { | ||
| throw new Error("Empty or invalid Roman numeral string."); | ||
| } | ||
| let total = 0; | ||
| let i = length; | ||
| while (i > 0) | ||
| { | ||
| let digit = RomanNumeralExtensions.romanToDigit(input[--i].toString()); | ||
| if (i > 0) | ||
| { | ||
| let previousDigit = RomanNumeralExtensions.romanToDigit(input[i - 1].toString()); | ||
| if (previousDigit < digit) | ||
| { | ||
| digit -= previousDigit; | ||
| i--; | ||
| } | ||
| } | ||
| total += digit; | ||
| } | ||
| return total; | ||
| } | ||
| private static romanToDigit(char: string): number | ||
| { | ||
| let rtnVal = 0; | ||
| RomanNumeralExtensions.RomanNumerals.forEach(pair => { | ||
| if (pair.key == char) { | ||
| rtnVal = pair.value; | ||
| } | ||
| }); | ||
| return rtnVal; | ||
| } | ||
| /// <summary> | ||
| /// Converts the input to Roman number | ||
| /// </summary> | ||
| /// <param name="input">Integer input</param> | ||
| /// <returns>Roman number</returns> | ||
| /// <exception cref="ArgumentOutOfRangeException">Thrown when the input is smaller than 1 or larger than 3999</exception> | ||
| public static toRoman(input: number): string | ||
| { | ||
| const minValue = 1; | ||
| const maxValue = 3999; | ||
| if ((input < minValue) || (input > maxValue)) | ||
| { | ||
| throw new Error("ArgumentOutOfRangeException"); | ||
| } | ||
| let sb = ""; | ||
| RomanNumeralExtensions.RomanNumerals.forEach(pair => { | ||
| while (Math.floor(input / pair.value) > 0) | ||
| { | ||
| sb += pair.key; | ||
| input -= pair.value; | ||
| } | ||
| }) | ||
| return sb | ||
| } | ||
| private static isInvalidRomanNumeral(input: string): boolean | ||
| { | ||
| return !RomanNumeralExtensions.ValidRomanNumeral.test(input); | ||
| } | ||
| } |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
156404
35.72%60
30.43%2554
38.58%225
33.14%0
-100%4
Infinity%