tibet-reflect(1) -- 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)
TIBET 5.3.4 - Copyright (C) 2021 Technical Pursuit Inc.