2.0.1 • Published 6 months ago

printf-ts v2.0.1

Weekly downloads
-
License
BSD-3-Clause
Repository
github
Last release
6 months ago

printf-ts

codecov

pure typescript implementation of printf-family with type checking

preview

Usage

import { printf } from 'printf-ts';

// Hello printf 1 1.20
printf("Hello %s %d %.2lf", "printf", 1, 1.2)

Features

1. vsprintf(format, args: ...): string

2. sprintf(format, ...args: ...): string

3. vprintf(format, args: ...): number

4. printf(format, ...args: ...): number

5. vprintfln(format, args: ...): number

6. printfln(format, ...args: ...): number

  • 1 ~ 2 Returns the result as a string
  • 3 ~ 4 Writes the results to the stdout, returns the number of characters printed
  • 5 ~ 6 Writes the results to the stdout, returns the number of characters printed. if nodejs, append \n to the end(not affect to return value)

Supported format specifiers

see cppreference-printf for each description of specifier

  • flags: +, -, , #, 0
  • width, precision
    • support wildcard(*)
  • length modifier: h, hh, l, ll, L, j, z, t
  • conversion specifier: %c, %s, %d, %i, %u, %o, %x, %X, %f, %F, %e, %E, %g, %G, %p, %%

types

  • if argument is negative and format specifier is unsigned, it will not convert to unsigned type
  • argument is not converted to a number of specific bits
  • if origin type was unsigned, find it in signed type
specifierargument typedescription
%cstringstr0 ?? ''
%cnumberutf8 code point
%sstring
%nnullplease use sprintf(...).length

integer

%d, %i, %u, %o, %x, %X

  • short|int -> number
  • long|long long|intmax_t|ssize_t|ptrdiff_t -> bigint

Floating point

%f, %F, %e, %E, %g, %G

  • double|long double -> number
    • if value in infinity, -infinity, NaN
      • if specifier is uppercase(F,E,G,A) => "INF", "-INF", "NAN"
      • else => "inf", "-inf", "nan"
  • NaN always treated as a positive value

Pointer

%p

  • void* -> bigint
    • if value is 0n => "(nil)"
    • else => "0x" + value.toString(16)

Wildcard

*

  • int -> number
2.0.1

6 months ago

2.0.0

6 months ago

1.0.3

10 months ago

1.0.2

10 months ago

1.0.1

10 months ago

1.0.0

10 months ago