TIBET-REFLECT(1)

NAME
tibet-reflect - reflects on TIBET objects and methods

SYNOPSIS

tibet reflect [[--target] <target>] [--filter <filter>]
    [--owners] [--types] [--methods] [--attributes]
    [--known] [--hidden]
    [--unique] [--inherited] [--introduced] [--local] [--overridden]
    [--context=['app'|'lib'|'all']] [--interface <interface>]
    [--verbose]

DESCRIPTION

Runs the TSH :reflect command to show object or system reflection data.

You can list all of TIBET's types via tibet reflect --types or list all methods via tibet reflect --methods. Without a target object this approach lets you view the top-most metadata collections in TIBET.

The [target] parameter can be any object reference TIBET can resolve using TIBET's getObjectById() function. That means any namespace, type, method, or publicly registed object such as window or a TIBET URI.

For objects which support it the --interface option lets you restrict the results to a specific interface of the object. The values here must be found in the TP.SLOT_FILTERS object as used by TP.interface(). Some interesting options are known, public, and unique which have their own flags to help you set your intention clearly.

Note that not all flags will work for every target object type. Namespace objects don't support --owners for example. When a flag is ignored it is not typically reported since working combinations are so target-dependant. The best thing to do is experiment a little and see what reflect finds. The getInterface call in TIBET is ultimately the routine being invoked so see the documentation on that method for more.

The --filter option allows you to refine your result data by checking the keys returned against either a regular expression or string. The filter value is always used as a RegExp if one can be created from the string. Full RegExp syntax is possible to the extent your shell will allow it. For example, using --filter '/example/i' will filter for example in a case-insensitive fashion.

OPTIONS

    •   target : An optional target, usually a type name, to check.

    •   --target : An alternate way to provide the target, usually a type name, to check.

    •   --attributes : Signify that the search should work against attributes. This can list all attributes (or a subset by combining with --filter) or just the attributes of a particular target.

    •   --context :

    •   --filter : An optional regular expression, expressed in /foo/ig form. This filter will be applied to fully-qualified method names.

    •   --known : Filter only slots that are known (see the TIBET Inheritance system).

    •   --hidden : Filter for slots that are hidden (see the TIBET Inheritance system).

    •   --unique : Filter for slots that are unique (see the TIBET Inheritance system).

    •   --inherited : Filter for slots that are inherited (see the TIBET Inheritance system).

    •   --introduced : Filter for slots that are introduced (see the TIBET Inheritance system).

    •   --local : Filter for slots that are local (see the TIBET Inheritance system).

    •   --overridden : Filter for slots that are overridden (see the TIBET Inheritance system).

    •   --interface : An interface value from the TP.SLOT_FILTERS list in TIBET. Note that not all combinations make sense. Experiment to get familiar with these.

    •   --methods : Signify that the search should work against methods. This can list all methods (or a subset by combining with --filter) or just the methods of a particular target.

    •   --owners : Signify the search should produce owners. This flag is primarily useful only when reflecting on a function. In that case it should return a list of the owners (implementers) of the function. You can also use this flag alone to list all known owners of methods in the system.

    •   --types : Normally used to list all types, or to filter types in conjunction with the --filter option.

    •   --verbose : Whether or not to log the script that has been generated to feed to the reflection machinery.

CONFIGURATION SETTINGS

No TIBET configuration variables are utilized by this command.

ENVIRONMENT VARIABLES

No process environment variables are required by this command.

EXAMPLES

  List all types in the system

    $ tibet reflect --types
    # Loading TIBET platform at 2019-11-09T17:43:17.668Z
    # TIBET reflection suite loaded and active in 5219ms
    APP.hello.Application
    APP.hello.app
    Array
    ArrayBuffer
    ArrayBufferView
    Attr
    ...
    ...
    XPathException
    XPathExpression
    XPathResult
    XSLTProcessor

  List all types in the APP namespace

    $ tibet reflect --types --filter /APP/
    # Loading TIBET platform at 2019-11-09T17:43:17.668Z
    # TIBET reflection suite loaded and active in 5219ms
    APP.hello.Application
    APP.hello.app
    Finished in 3762 ms w/TSH exec time of 201 ms.

  List all methods in the system

    $ tibet reflect --methods
    # Loading TIBET platform at 2019-11-09T17:43:17.668Z
    # TIBET reflection suite loaded and active in 5219ms
    APP.hello.Application.Inst.handleAppDidInitializeFromANYWhenANY
    Array.Inst.$$isCollection
    Array.Inst.$$isMemberOf
    Array.Inst.$$isPair
    Array.Inst.$get
    Array.Inst.$getEqualityValue
    Array.Inst.$set
    Array.Inst.$sortIfNeeded
    Array.Inst.add
    Array.Inst.addAfter
    Array.Inst.addAll
    Array.Inst.addAllAfter
    ...
    ...
    Window.Inst.getTypeName
    Window.Inst.setID
    Window.Type.getName

  List all methods that include 'element' in their names

    $ tibet reflect --methods --filter /element/i
    # Loading TIBET platform at 2019-11-09T17:43:17.668Z
    # TIBET reflection suite loaded and active in 5219ms
    TP.$$elementPreserveIFrameContent
    TP.$$elementRestoreIFrameContent
    TP.$elementCSSFlush
    TP.$elementGetBusyLayer
    TP.$elementGetOffsetParent
    ...
    ...
    TP.xctrls.SwitchableElement.Inst.setDisplayValue
    TP.xctrls.SwitchableElement.Inst.setValue
    TP.xmpp.Error.Inst.getErrorElement
    TP.xmpp.Node.Inst.getErrorElement
    TP.xs.XMLSchemaComplexCompositeType.Type.validateElements

  List all methods For a specific target

    $ tibet reflect --methods TP.log.Manager.Type
    # Loading TIBET platform at 2019-11-09T17:43:17.668Z
    # TIBET reflection suite loaded and active in 5219ms
    exists
    getLogger
    getLoggerFactory
    getLoggers
    getRootLogger
    initialize
    registerLogger
    removeLogger
    Finished in 3630 ms w/TSH exec time of 70 ms.

  View reflection data for a specific method

    $ tibet reflect TP.log.Manager.Type.getLoggers
    # Loading TIBET platform at 2019-11-09T17:43:17.668Z
    # TIBET reflection suite loaded and active in 5219ms
    TP.log.Manager.Type.getLoggers
    /**
     * @method getLoggers
     * @summary Returns the dictionary of all known loggers. The keys of this
     *     dictionary are the logger names converted to lowercase to normalize
     *     them. The entries are the logger instances themselves.
     * @returns {TP.core.Hash} The logger dictionary.
     */
    ~lib_src/tibet/kernel/TIBETLogging.js

  View reflection data for a TIBET Primitive

    $ tibet reflect json2xml
    # Loading TIBET platform at 2019-11-09T17:43:17.668Z
    # TIBET reflection suite loaded and active in 5219ms
    TP.json2xml
    /**
     * @method json2xml
     * @summary Transforms a JSON-formatted string into roughly equivalent XML.
     * @description The transformation is in two steps, first to JS and then
     *     into simple XML where keys are element names and values are content
     *     text nodes.
     * @param {String} aString A JSON-formatted string.
     * @returns {Node} An XML node representing the same data structures found
     *     in the JSON string.
     */
    ~lib_src/tibet/kernel/TIBETContentPrimitives.js

TROUBLESHOOTING

  You may need to escape certain values for your shell

    $ tibet reflect TP.boot.$uitime
    # Loading TIBET platform at 2019-11-09T17:43:17.668Z
    # TIBET reflection suite loaded and active in 5219ms
    TP.boot. not found.
    Finished in 4304 ms w/TSH exec time of 68 ms.
    $ tibet reflect 'TP.boot.$uitime'
    # Loading TIBET platform at 2019-11-09T17:43:17.668Z
    # TIBET reflection suite loaded and active in 5219ms
    "2016-07-02T04:09:25.148Z"

TIBET SHELL

This command marshals arguments which it then passes to the client-side :reflect command. That command invokes TIBET's getInterface mechanisms to reflect on the various aspects of the system you've requested.

TROUBLESHOOTING

SEE ALSO

    •   tibet-apropos(1)

    •   tibet-help(1)