Spaces:
Build error
Build error
// [[fill]align][sign][symbol][0][width][,][.precision][~][type] | |
var re = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i; | |
export default function formatSpecifier(specifier) { | |
if (!(match = re.exec(specifier))) throw new Error("invalid format: " + specifier); | |
var match; | |
return new FormatSpecifier({ | |
fill: match[1], | |
align: match[2], | |
sign: match[3], | |
symbol: match[4], | |
zero: match[5], | |
width: match[6], | |
comma: match[7], | |
precision: match[8] && match[8].slice(1), | |
trim: match[9], | |
type: match[10] | |
}); | |
} | |
formatSpecifier.prototype = FormatSpecifier.prototype; // instanceof | |
export function FormatSpecifier(specifier) { | |
this.fill = specifier.fill === undefined ? " " : specifier.fill + ""; | |
this.align = specifier.align === undefined ? ">" : specifier.align + ""; | |
this.sign = specifier.sign === undefined ? "-" : specifier.sign + ""; | |
this.symbol = specifier.symbol === undefined ? "" : specifier.symbol + ""; | |
this.zero = !!specifier.zero; | |
this.width = specifier.width === undefined ? undefined : +specifier.width; | |
this.comma = !!specifier.comma; | |
this.precision = specifier.precision === undefined ? undefined : +specifier.precision; | |
this.trim = !!specifier.trim; | |
this.type = specifier.type === undefined ? "" : specifier.type + ""; | |
} | |
FormatSpecifier.prototype.toString = function() { | |
return this.fill | |
+ this.align | |
+ this.sign | |
+ this.symbol | |
+ (this.zero ? "0" : "") | |
+ (this.width === undefined ? "" : Math.max(1, this.width | 0)) | |
+ (this.comma ? "," : "") | |
+ (this.precision === undefined ? "" : "." + Math.max(0, this.precision | 0)) | |
+ (this.trim ? "~" : "") | |
+ this.type; | |
}; | |