# ./library/lib/metadataAnalyzer.xotcl

## Package/File Information

No package provided/required
Defined Objects/Classes:

- @:
- AnalyzerCmd:
- ClassToken:
- ConstraintToken:
- FileToken:
- InstprocToken:
- MetaClassToken:
- MetadataAnalyzer: print.
- MetadataToken: print, printProperties, sortTokenList.
- MethodToken:
- ObjToken:
- PackageToken:
- ProcToken:

Filename: ./library/lib/metadataAnalyzer.xotcl

Description:

XOTcl file analyzer for @ metadata. E.g.\ used for doumentation with xoDoc (but in the static variant StaticMetadataAnalyzer which uses the dynamic variant in this file).

Sample sample usage:

    	    package require xotcl::metadataAnalyzer

    	    # instantiate metadata analyzer object
    	    MetadataAnalyzer @::m
    	    # make this object be known to @ and turn @ metadata processing on
    	    @ analyzerObj @::m
    	    @ onOff 1

    	    # read in some metadata tags (in sample file) & execute the file
    	    source lib/testx.xotcl

    	    # turn @ metadata processing off again
    	    @ onOff 0

    	    # print out all collected metadata
    	    puts [@::m print]

## Object: @

Class: AnalyzerCmd

Description: | Recreate @ with metadata analyis funtionality.

## Class: AnalyzerCmd

Class: Class

Description: | Class that overload the unknown mechanism of @ to provide metadata analysis.

## Class: ClassToken

Class: Class
Heritage: ObjToken

Description: | Token for Class metadata. Contains additional parameters: "instprocList" = list of all instproc token.

## Class: ConstraintToken

Class: Class
Heritage: MetadataToken

Description: | Token for @Constraint Metadata.

## Class: FileToken

Class: Class
Heritage: MetadataToken

Description: | Token for @File Metadata.

## Class: InstprocToken

Class: Class
Heritage: MethodToken

Description: | Token for Instproc metadata.

## Class: MetaClassToken

Class: Class
Heritage: ClassToken

Description: | Token for Meta-Class metadata.

## Class: MetadataAnalyzer

Class: Class
Procs/Instprocs: print.

Description: | Handler class for building a metadata runtime structure

### Instprocs

- print

  Description: | Print all collected token information to stdout. This method is also an exmaple how the tokens can be used.

## Class: MetadataToken

Class: Class
Procs/Instprocs: print, printProperties, sortTokenList.

Description:

Each collected metadata element is stored in a token object. MetadataToken is superclass of token object classes. Each metadata token has two interesting parameters:

"properties" contains list of all described metadata properties. E.g. can be printed with

    	    foreach p [my set properties] {
    		if {[my exists $p]} {
    		    append c "    $p=[my set $p]\n"
    		}
    	    }

"name" contains the method, object, ... name of the metadata element.

All metadata token are aggregated by @. Therefore,

    	    foreach mdt [@ info children] {
    		if {[$mdt istype MetadataToken]} {$mdt print}
    	    }

prints all token.

### Instprocs

- printProperties

  Description: | Print metadata properties to stdout.

- abstract print

  Description: | Abstract method for printing a token to stdout.

### Procs

- sortTokenList l

  Arguments: | l: token list
  Description: | Sort a token list with names. Since names are autonames, this means order of appearance in the program.

## Class: MethodToken

Class: Class
Heritage: MetadataToken

Description: | Token for Method metadata. Contains additional parameters: "arguments" of the method, "returnValue" of the method, "obj" name, "abstract" = 0 or 1 (whether its an abstract method or not).

## Class: ObjToken

Class: Class
Heritage: MetadataToken

Description: | Token for Object metadata. Contains additional parameters: "procList" = list of all proc token and "cl"= class name.

## Class: PackageToken

Class: Class
Heritage: MetadataToken

Description: | Token for Package metadata. Contains additional parameters: "version" of the package and "type"= either "require" or "provide".

## Class: ProcToken

Class: Class
Heritage: MethodToken

Description: | Token for Proc metadata

Back to index page.