Skip to content

Latest commit

 

History

History
82 lines (60 loc) · 4.18 KB

README.md

File metadata and controls

82 lines (60 loc) · 4.18 KB

StrFormat

contributions welcome

Julia Version Unit Tests Coverage
Julia Latest

The following extra format sequences (see StrLiterals for the full specification) are added:

C style formatting specification language

  • \%<ccc><formatcode>(arguments) is interpolated as a call to cfmt("%<ccc><formatcode>",arguments), where <ccc><formatcode> is a C-style format string.

  • and is [flags][width][.precision][length]

  • supported flags are: , -, +, 0, #, and ' (add comma thousand separators)

  • formatcode := d | D | u | U | o | O | x | X | e | E | f | F | g | G | a | A | c | C | s | S | i | p | n

  • length is ignored (it was only needed for C/C++ since argument values don't have types)

Type based formatting

  • \%(value, arguments...) is interpolated as a call to fmt(value, arguments...). This is especially useful when defaults have been set for the type of the first argument.

  • fmt_default!{T}(::Type{T}, syms::Symbol...; kwargs...) sets the defaults for a particular type.

  • fmt_default!(syms::Symbol...; kwargs...) sets the defaults for all types.

  • reset!{T}(::Type{T}) resets the defaults for a particular type.

  • defaultSpec(x) will return the defaults for the type of x, and

  • defaultSpec{T}(::Type{T}) will return the defaults for the given type.

Symbols that can currently be used are: :ljust or :left, :rjust or :right, :center, :commas, :zpad or :zeropad, and :ipre or :prefix. Several keyword arguments can also be used:

Keyword Type Meaning Default
fill Char Fill character ' '
align Char Alignment character '\0'
sign Char Sign character '-'
width Int Field width -1, i.e. ignored
prec Int Floating Precision -1, i.e. ignored
ipre Bool Use 0b, 0o, or 0x prefix? false
zpad Bool Pad with 0s on left false
tsep Bool Use thousands separator? false

Python style formatting specification language

(supports most all options except for '%' currently)

  • spec ::= [[fill]align][sign][#][0][width][,_][.prec][type]
  • fill ::=
  • align ::= '<' | '^' | '>'
  • sign ::= '+' | '-' | ' '
  • width ::=
  • prec ::=
  • type ::= 'b' | 'c' | 'd' | 'e' | 'E' | 'f' | 'F' | 'g' | 'G' | 'n' | 'o' | 'x' | 'X' | 's'

Please refer to http://docs.python.org/2/library/string.html#formatspec for more details

The syntax is slightly different, \{<formatspec>}(expression), instead of {variable:formatspec}, so as to fit better with Julia's string syntax.