2.4.13 • Published 8 years ago

tvr v2.4.13

Weekly downloads
2
License
MIT
Repository
-
Last release
8 years ago

Terminal Value Resolver - tvr

Your #1 choice for string interpolation.

A powerful tool to have at the core of any HTML template rendering engine, or when you just want to spit out a message string without having to do concatenation. Dig deep - the surface-level simplicity may belie the underlying power of this module.

Documentation coming soon

Initialization

NodeJS:

var tvr = require('tvr')(opt);
/*
opt = optional parameters
	log: Console logger object
	env: Shared public variables object
	NS: Namespace reference to simple-guts based namespace
*/

Examples:

var guts = require('simple-guts')();
var tvr = require('tvr')({NS: guts});
...
console.log(tvr.$s('Message: ${msg}', {msg: 'Hello world!'}));

Terminal Value Resolver

For convenience and reduced typing, it is suggested to define (local or global) references to a few of the primary methods:

var tvr = require('tvr');
$r = tvr.$r;
$v = tvr.$v;
$s = tvr.$s;
$o = tvr.$o;

Powerful expression evaluator for computing dynamic values. $r – Resolves raw value $v – Resolves variable expression to terminal value $s – Resolves expression to string value

$r(string, context) - Resolve raw value

var person = {
    fname: 'John',
    lname: 'Smith',
    age: 27,
    married: false,
    hobbies: ['flying', 'scuba']
};
var name = $r('fname', person); // 'John'
var age = $r('age', person); // 27
var married = $r('married', person); // false
var hobbies = $r('hobbies', person); // ['flying', 'scuba']

$v(val, context) - Resolves variable expression to terminal value

var person = {
    fname: 'John',
    lname: 'Smith',
    age: 27,
    fullname: '${fname} ${lname}',
    capsname: function() {
        return this.fname.toUpperCase();
    },
    mixname: '${capsname} ${lname}',
    getname: function() { return this.fullname; }
};
var name = $v('${fname}', person);     // 'John'
name = $v('${fullname}', person);      // 'John Smith'
name = $v('${capsname}', person);      // 'JOHN'
name = $v('${mixname}', person);       // 'JOHN Smith'
name = $v('Name: ${getname}', person); // 'Name: John Smith'
name = $v('Hey!', person);             // 'Hey!'
var age = $v('Age: ${age}', person);   // 'Age: 27'
age = $v('${age}', person);            // 27

TODO Show Boolean, number, null, undefined, NaN, object

$s(val, context) - Resolves variable expression to string value

var age = $s('${age}', person); // '27'
var married = $s('${married}', person); // 'false'
var hobbies = $s('${hobbies}', person); // 'flying,scuba'

TODO Show Boolean, number, null, undefined, NaN, object

TODO Statics:

StaticDescription
{NS}*Reference to top-level namespace ({NS} will be whatever is defined in $env.namespace, or "NS" by default - see simple-guts package)
$envReference to global environment block
$not(val)Inverts a truthy/falsey/Boolean value
$eq(val1, val2)Compares two values for equality (==)
$neq(val1, val2)Compares two values for inequality (!=)
$and(val...)Tests all parameters to determine if all are truthy (implicit Boolean conversion)
$or(val...)Tests all parameters to determine if at least one is truthy (implicit Boolean conversion)
$xor(val...)Tests all parameters to see if not all are the same
$nand(val...)Tests all parameters to determine if at lease one is falsey (implicit Boolean conversion)
$nor(val...)Tests all parameters to determine if all are falsey (implicit Boolean conversion)
$bit(val, num)Checks a specified bit in a value to determine if that bit is set (num = bit number)
$bits(val, mask)Selects bits based on specified bit mask to determine if any are set (returns actual bits for truthy/falsey check)
$nobit(val, num)Checks a specified bit in a value to determine if that bit is clear (not set)
$nobits(val, mask)Selects bits based on specified bit mask to determine if all are clear (not set)
$bool(val)Resolve truthy/falsey value to Boolean
$plural(label, n, suffix)Returns the plural version of a label (English assumed) if n != 1 by appending suffix (if "ies", it will replace "y" if found at the end of label)
$fixed(num, decimals)Returns a numeric value as a string, rounded to the nearest specified decimal places

Configuration

Configuration properties are picked up from $env.

  • $env.fixValues - DEPRECATED - Akin to noTerminal in old code
  • $env.noTerminal - If true, values like "true", "false" and numeric strings are not converted to their respective data types (they remain as strings). So $v('${x}', {x: 'false'}) would be 'false' not false.

Resolver configuration can be changed, programmatically, via:

  • Kjs.resolver.cfg.fixValues - See above
  • Kjs.resolver.cfg.noTerminal - See above
  • Kjs.resolver.cfg.deadTag - Key value to match to remove a property in a call to derive().
2.4.13

8 years ago

2.4.12

8 years ago

2.4.11

8 years ago

2.4.10

8 years ago

2.4.9

8 years ago

2.4.8

8 years ago

2.4.7

8 years ago

2.4.6

8 years ago

2.4.5

8 years ago

2.4.4

8 years ago

2.4.3

8 years ago

2.4.2

8 years ago

2.4.1

8 years ago

2.4.0

8 years ago

2.3.3

8 years ago

2.3.2

8 years ago

2.3.1

8 years ago

2.3.0

8 years ago

2.2.0

8 years ago

2.1.1

8 years ago

2.1.0

8 years ago

2.0.1

9 years ago

2.0.0

9 years ago

1.1.0

9 years ago

1.0.4

9 years ago

1.0.3

9 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago