1.0.4 • Published 7 years ago

stringf v1.0.4

Weekly downloads
3
License
Apache-2.0
Repository
github
Last release
7 years ago

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

StringParameter mapOutput
hi {name}name: Thanhhi Thanh
hi {num}num: 2108hi 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
1.0.4

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago