Have ideas to improve npm?Join in the discussion! »

    format-context
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.4 • Public • Published

    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!"

    Install

    npm i format-context

    DownloadsWeekly Downloads

    1

    Version

    1.0.4

    License

    ISC

    Unpacked Size

    17.4 kB

    Total Files

    5

    Last publish

    Collaborators

    • avatar