Below paragraphs summarize architectural components of Splicer that correspond to used Python packages.
Info |
---|
You should read Splicer to fully understand terminology used in the following paragraphs. |
Splicer project source code is hosted in following Bitbucket repository: https://bitbucket.org/apliqoc3ux/rule-splicing-tool/src/RuleID/
The production branch of the project is RuleID
.
...
The main application is defined in TM1Splice package and consists of two parts. First part is the actual application which is responsible for providing CLI and interpreting arguments and switches, second . Its logic is stored in splicer.py
. Second is supporting class that implements all the functionality of Splicer exposed to the CLI and decomposed to specific methods. The implementation is stored in TM1SpliceExecutor.py
and represented by class TM1SpliceExecutor
.
There are currently two modes of execution possible - either to run Splicer in a virtual Python environment or run Splicer executable file. Installation of the Python virtual environment gives better results when Splicer is activated since the load time is considerably faster than in case of executable file produced by pyinstaller
. Instructions how to prepare the virtual environment are covered in Python Execution Environment
...
The TM1 grammar implemented in scope of Splicer is covering only area statement of a rule or a feeder statement, the right hand side after equal sign is not used by the parser. Additionally the parser recognizes Splicer specific regions and directives with splicing instructions. The other tokens are ignored by the parser and are passed through.
Objects
The architecture of Splicer uses classes in Object package to represent various TM1 syntactical constructs (non-terminal symbols) that the Parser recognized when parsing a TM1 rule. These are described in below table.
...
Similarly as in object case these classes represent syntactical constructs, but in this case owned by Splicer. The classes are containers of objects that are subpackage of Containers
with exception of TM1SpliceConfigContainer
. These are described in below table.
Class | Usage |
---|---|
| Container of all splicing directives represented by objects of |
| Used to retrieve directives that apply to instance of |
| Used to store regions of the TM1 rule, the container stores start and end positions (measured in characters from start of the rule) of each region. Each region might be defined several times in the rule, this feature is supported by |
TM1RegionStore | Represents all instances of named region enclosed in pair of |
| Container of desplicing (directives reversing splicing) directives represented by |
| Used to retrieve reverse directives that apply to instance of |
| Configuration container responsible for loading configuration from config files |
Containers/Objects
The contained classes represent contained objects by containers described in above paragraph. The classes are described in below table.
Class | Usage |
---|---|
| Represents a single splicing directive defining its identifier, splicing region, its dimensional scope and associated regular expression to identify elements for splicing. |
| Represents a single instances of named region enclosed in pair of |
| Represents a single reverse splicing directive derived from a splicing directive, but implementing original directive reversal. |