1.0.4 • Published 3 years ago

format-context v1.0.4

Weekly downloads
200
License
ISC
Repository
github
Last release
3 years ago

Context-based formatter - format-context

Installation

With npm do:

$ npm install format-context

Dependencies

There are no other NodeJS libraries that format-context is dependent of

Usage

format(message, context, options);

message: string

is the message

context: object | !(null|undefined)

is the context of the message

options?: object

options can accept as many parameters as you prefer

Recursive

recursive: false

format("Hello {name}!", {name: "Jack {surname}", surname: "Sparrow"}) -> "Hello Jack {surname}!"

recursive: true

format("Hello {name}!", {name: "Jack {surname}", surname: "Sparrow"}, {recursive: true}) -> "Hello Jack Sparrow!"

Warning:

format("Hello {name}!", {name: "Jack {name}"}, {recursive: true, maxDepth: 2}) -> "Hello Jack Jack Jack {name}!"

maxDepth=Infinity will cause infinity loop

Empty

empty: false

format("Hello {}!", ["Jack"], {empty: false}) -> "Hello Jack!"

empty: true

format("Hello {}!", ["Jack"], {empty: true}) -> "Hello !"

EnableFunctionSegment

enableFunctionSegment: false

let name = "Jack";
format("Hello {name}!", {name: (context)=>name}, {enableFunctionSegment: false}) -> "Hello [function]!"

nableFunctionSegment: true

let name = "Jack";
format("Hello {name}!", {name: (context)=>name}, {enableFunctionSegment: true}) -> "Hello Jack!"

Process

Function that is call before the function compile

Example:

format("Hello {nickname}!", {gender: 'male', male: {nickname: 'boy'}, female: {nickname: 'girl'}}, {
  process: (context)=>context.gender === 'male'? context.male : context.female 
}) -> "Hello boy!"

Compile

Function used to compiled the segment

Example:

format("Hello {1} {17}!", {}, {
  compile: (segment)=>parseInt(segment.toString()) + 1
}) -> "Hello 2 18!"

Make

Function is called after compile the segment

Example:

const extern = "j";
format("Hello {1} {4}!", {
  compile: (segment)=>parseInt(segment.toString()) + 1,
  make: (resultado)=>`${resultado}-${extern}`
}) -> "Hello 2-j 5-j!"

Cancelers

You can customize the cancelers as you want

Example:

format("Hello anular{name} {name}!", {name: "Jack"}, {
  cancelers: [
    "anular"
  ]
}) -> "Hello {name} Jack!"

Delimiters

You can customize the delimiters as you want

Example:

format("Hello ${name}!", {name: "Jack"}, {
  delimiters: [
    {start: "${", end: "}"}
  ]
}) -> "Hello Jack!"

Others examples:

format("Hello {name}!", {name: "Jack"}) -> "Hello Jack!"
format("Hello {name}! You are {age} years old!", {name: "Jack", age: 22}) -> "Hello Jack! You are 22 years old!"
format("Hello {0}!", ["Jack"]) -> "Hello Jack!"
format("Hello {0}! You are {1} years old!", ["Jack", 22]) -> "Hello Jack! You are 22 years old!"
format("Hello {}! You are {} years old!", ["Jack", 22]) -> "Hello Jack! You are 22 years old!"
format("Hello {0}! You are {} years old!", ["Jack", 22]) -> "Hello Jack! You are Jack years old!"
format("Hello {}! You are {1} years old!", ["Jack", 22]) -> "Hello Jack! You are 22 years old!"

format("Hello {name}! You are {} years old!", {0:22, name: "Jack"}) -> "Hello Jack! You are 22 years old!"
format("Hello {} {}! You are {age} years old!", {...["Jack", "Sparrow"], age: "Jack"}) -> "Hello Jack Sparrow! You are 22 years old!"
format("Hello {user.name}!", {user: {name: "Jack"}}) -> "Hello Jack!"

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago