Format

baja. Format

new Format()

Description:
  • Format is used to format Objects into Strings using
    a standardized formatting pattern language. The format String is normal
    text with embedded scripts denoted by the percent (%) character. Use
    "%%" to escape a real %.

    A script is one or more calls chained together using the dot (.) operator.
    Calls are mapped to methods using the order given below.

    If a script cannot be processed successfully, an error will be returned.

    To define an alternate output to use if an error is encountered, include a
    ? followed by another script within the same % pair. More than one fallback
    can be defined by delimiting the fallbacks with a ?.

    Given the call "foo" the order of attempted resolutions is:

    1. special call (see below)
    2. getFoo(Context)
    3. foo(Context)
    4. get("foo")

    The following special functions are available to use in a script:

    1. lexicon(module:key:)
    2. time() returns the current time as an AbsTime
    3. user() returns gets the current user's name
    4. decodeFromString(::) returns the toString of the encoded value for specified escaped string encoding for the specified type in the given module.
    5. escape() returns the escaped text value of the given objects toString()
    6. unescape() returns the unescaped text value of the given objects toString()
    7. substring() returns a substring value of a given objects toString()

    This Constructor shouldn't be invoked directly. Please use the make()
    methods to create an instance of a Format.

    Examples of formats:

    "hello world"
    "my name is %displayName%"
    "my parent's name is %parent.displayName%"
    "%parent.value?lexicon(bajaui:dialog.error)%"
    "%out.value?out.status?lexicon(bajaui:dialog.error)%"
    %lexicon(bajaui:fileSearch.scanningFiles:5:10)% // Scanning files (found 5 of 10)...
    "The escaped value %out.value.escape%"
    "The unescaped valued %out.value.unescape%"
    "The first two characters %out.value.substring(2)%"
    "The first five characters %out.value.substring(5)%"
    "The first five characters %out.value.substring(0, 5)%"
    "The last five characters %out.value.substring(-5)%"
    "The toString of a decoded baja:AbsTime from %decodeFromString(baja:AbsTime:$32016$2d04$2d10T13$3a37$3a00$2e000$2d04$3a00)%"
    
Source:
Example

Formats can use getter functions from an object as well as function names

var obj = {
  getFoo: function () {
    return {
      getBar: function () {
        return {
          value: function () {
            return 3.1415;
         }
       }
      }
    }
  }
}

var fmt = baja.Format.make("%foo.bar.value%");
return fmt.format( { object: obj } )
  .then(function (value) {
    // prints 3.1415
    console.log(value);
  });

Extends

Members

valueOf

Description:
  • Return the inner value of the Format.

Source:
Overrides:

Return the inner value of the Format.

(static) DEFAULT :baja.Format

Description:
  • Default Format instance.

Source:

Default Format instance.

Type:

Methods

decodeAsync(str, batchopt) → {baja.Simple|Promise.<baja.Simple>}

Description:
  • The string encoding of certain Simples may include Type information, or other data that may
    require asynchronous operations to decode. For instance, some Simples may function as
    "containers" for other Simples, and may include that Type information in the string encoding.
    That Simple would then need to import those Types before it could be fully decoded in the
    browser.

    baja.Facets is a great example of this. A Facets may contain FrozenEnum values that are
    defined by Types, such as baja:Weekday. For a Facets containing a Weekday to be fully
    constructed in the browser, the baja:Weekday Type must be imported first. Since importing
    a Type may require a network call, this Facets instance might not be able to be constructed
    synchronously, using only decodeFromString(). baja.Facets has itself implemented
    decodeAsync() to import any necessary Types.

    When implementing a Type Extension for a Simple, if your Simple references arbitrary Types that
    need to be imported when decoding your Simple, implement decodeAsync() and perform any Type
    imports (or other asynchronous operations) there.

    If you are writing code that decodes Simples from strings - that is, when you have a type spec
    and string encoding, and you need to be able to decode any kind of Simple - favor the use of
    decodeAsync, as it gives the individual Simple a chance to perform async operations to ensure
    that the decoded Simple is fully correct.

    The default implementation just returns decodeFromString directly.

    Prior to Niagara 4.14, decodeAsync() was only used in field editors. In 4.14 and later,
    decodeAsync() will be used by BajaScript itself to support asynchronous decoding of Simples
    when resolving ORDs and retrieving other data from the station.

    (Note: decodeAsync() cannot be used by the framework to decode frozen slots. If you
    have a frozen slot, whose definition is a Simple that would require the use of
    decodeAsync() to construct it, it will not work. The best approach would be to implement a
    Type Extension that would use the baja! plugin to preload all the types referenced by the
    default value of that frozen slot, so that decodeFromString would have all the information
    it needed to construct it synchronously.)

Source:
Inherited From:
Example
return Promise.resolve(baja.$(simpleTypeSpec).decodeAsync(stringEncoding))
  .then((simpleInstance) => {});
Parameters:
Name Type Attributes Description
str string
batch baja.comm.Batch <optional>

optional batch to use

Returns:

may return the Simple instance
directly, or a Promise resolving to same - so wrap in Promise.resolve()
if unsure.

Type
baja.Simple | Promise.<baja.Simple>

decodeFromString(str) → {baja.Format}

Description:
  • Decode a String to a Format.

Source:
Overrides:
Parameters:
Name Type Description
str String
Returns:
Type
baja.Format

encodeToString() → {String}

Description:
  • Encode Format to a String.

Source:
Overrides:
Returns:
Type
String

equals(obj) → {Boolean}

Description:
  • Equality test.

Source:
Inherited From:
Parameters:
Name Type Description
obj
Returns:
Type
Boolean

equivalent(obj) → {Boolean}

Description:
  • Equivalence test.

    equivalent() is used to compare if two Objects have equivalent
    state, but might not want to return true for equals since it
    it has implied semantics for many operations. The default
    implementation returns the result of baja.Object#equals.

Source:
Inherited From:
Parameters:
Name Type Description
obj
Returns:
Type
Boolean

format(objopt) → {Promise.<String>}

Description:
  • Format the specified object using the format pattern.

Source:
See:
Parameters:
Name Type Attributes Description
obj Object <optional>
Properties
Name Type Attributes Description
ok function <optional>

(Deprecated: use Promise) the ok callback called
when the Format string has been processed. The resultant String will be
passed to this function as an argument

fail function <optional>

(Deprecated: use Promise) the fail callback
called if there's a fatal error processing the format.

Returns:
Type
Promise.<String>

getAgents(isopt, batchopt) → {Promise}

Description:
  • Returns a promise that resolves to the agent list for this Object.

Source:
Inherited From:
See:
Parameters:
Name Type Attributes Description
is Array.<String> <optional>

An optional array of filters to add to the
agent query.

batch baja.comm.Batch <optional>

An optional object used to batch network
calls together.

Returns:

A promise that will resolve with the Agent Info.

Type
Promise

getIcon() → {baja.Icon}

Description:
  • Return the Object's Icon.

Source:
Inherited From:
Returns:
Type
baja.Icon

getType() → {Type}

Description:
  • Get the type of this instance.

Source:
Inherited From:
Returns:
Type
Type

getTypeDisplayName(cxopt) → {Promise.<string>|string}

Description:
  • Gets the friendly type display name for this object.

Source:
Since:
  • Niagara 4.10
Inherited From:
See:
  • baja.Type#getDisplayName
Parameters:
Name Type Attributes Description
cx Object <optional>

a context to be passed down to Type

Returns:

If no context is provided, the type
display name is returned synchronously as a string. If context provided,
the type display name is resolved via a promise as a string.

Type
Promise.<string> | string

make(patternopt) → {baja.Format}

Description:
  • Make a Format.

Source:
Overrides:
Parameters:
Name Type Attributes Description
pattern String <optional>

the Format Pattern String.

Returns:
Type
baja.Format

newCopy(exactopt)

Description:
  • Every value may be cloned using the newCopy method.

    Please note that Simples are immutable so they don't
    allocate a new instance.

Source:
Inherited From:
See:
Parameters:
Name Type Attributes Description
exact Boolean <optional>

true if an exact copy of the value should be
made (only valid in the Component architecture).

Returns:

a copy of the value (or the same instance if the value is a
Simple).

toString() → {String}

Description:
  • Return a String representation of the Format.

Source:
Overrides:
Returns:
Type
String

(static) format(obj) → {Promise.<string>}

Description:
  • Format the specified object using the format pattern.

    This method can take an object literal or a single pattern String
    argument.

Source:
Parameters:
Name Type Description
obj Object
Properties
Name Type Attributes Description
pattern String

the format pattern to process.

object Object | baja.Component <optional>

JavaScript Object or baja:Component
referenced by the format scripts.

display Boolean <optional>

if true, the display string of a Property value is used.
If false, the toString version of a Property value is used.
By default, this value is true (in BajaScript, most of the time
we're dealing with mounted Components in a Proxy Component Space).

ok function <optional>

(Deprecated: use Promise) the ok callback
called when the Format string has been processed. The resultant String
will be passed to this function as an argument

fail function <optional>

(Deprecated: use Promise) the fail callback
called if there's a fatal error processing the format.

cx Object <optional>

the designated context to be passed down to the toString method. Defaults to
an empty object.

Returns:
Type
Promise.<string>

(static) make(patternopt) → {baja.Format}

Description:
  • Make a Format.

Source:
Parameters:
Name Type Attributes Description
pattern String <optional>

the Format Pattern String.

Returns:
Type
baja.Format