stringf

1.0.4 • Public • Published

Sringf License npm version

Dead simple cross-language string formatter

No dependencies, O(N*m)

Usage

go

import (
    "fmt"
    "github.com/thanhpk/stringf"
)
 
func main() {
    str := stringf.Format("hi {name}, here is your number {{2108}.", map[string]string{
        "name": "Kieu Thanh", // key should not contains spaces
    })
    fmt.Println(str)
}
 
// hi Kieu Thanh, here is your number {2108.

js

var stringf = require("stringf")
 
var str = stringf.Format("hi #name, here is your number {{2108.", {
    name: "Thanh",
})
console.log(str)
 
// hi Kieu Thanh, here is your number {2108.

Test

Go

go test

Js

npm test

Testcase

String Parameter map Output
hi {name} name: Thanh hi Thanh
hi {num} num: 2108 hi 2108
{{abc} abc: bcd {abc

Pseudocode to implement in your own language

input:

a string, s
a map string to string, paramMap

output:

a string with param replaced

let ESCCHAR ← '{', ESCCHAREND ← '}', i ← 0, output ← ""
while i < length(s) do
    if s[i] = ESCCHAR then
        let j ← i + 1
        while j <= length(s) and s[j] = ESCCHAR do
            j ← j + 1
            if (j - i) mod 2 = 0 then
                output ← output + ESCCHAR
        if (j - i) mod 2 ≠ 0 then
            let param ← "" (parse parameter key)
            while j < length(s) and s[j] ≠ ESCCHAREND do
                param ← param + s[j]
                j ← j + 1
            if length(param) > 0 then
                output ← output + paramMap[param]
            if j = length(s) then
                return output
            else if s[j = ESCCHAREND then
                j ← j + 1
        i ← j
    output ← output + s[i]
    i ← i + 1
return output

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.0.4
    1
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 1.0.4
    1
  • 1.0.2
    1
  • 1.0.1
    1
  • 1.0.0
    1

Package Sidebar

Install

npm i stringf

Weekly Downloads

4

Version

1.0.4

License

Apache-2.0

Last publish

Collaborators

  • thanhpk