btred - non-interactive scriptable version of the tree editor TrEd
btred [-c config-file] [-t context] [-m|-I macro-file] [-e code] [-i init-code] [-N|-H] [-T] [-S | --no-save] [--knit] [-P] [-F] [-s strip-sfx] [-a append-sfx] [-p strip-prefix] [-r add-prefix] [-f out-fmt] [-n file-encoding] [-d terminal-encoding] [-W] [-q|-Q] [-D] [-V] [-L port] [-b hub] [-x extra_attribs] [-X gov,ord?,hide?] [-R] [-o script options -- ] [-l file-list] files... or btred -u for usage btred -h for help btred --man for the manual page
btred is an off-line TrEd macro processor which applies macros on given files
Each filename on the command-line or in a file list may be optionally
followed by a suffix which identifies a node to be selected when the
file is opened (this means that $this
will point the the selected
node and $root
will point to the root of that tree). The suffix can
be of one of the following following forms:
#ID where ID is an identifier of a node (for file formats that have identifiers, e.g. PML).
##N where N is a number. This selects the root of the N-th tree
##N.M where N and M are numbers. This selects the M-th node in the depth-first order in the N-th tree.
File with macro definitions to load instead of the standard macro file
(by default tred.mac
).
WARNING: since extensions may require the standard macro file, using
this option automatically disables all extensions. One may use
--enable-extensions extension-list...
to selectively enable
required extensions.
A file containing additional set of macros to load. This option is
typically used instead of --macro-file
to allow loading macros
both from filename
and the default macro set (tred.mac
).
--macro-file
can still be used in combination with
--include-macro-file to supply a replacement for tred.mac
.
Macro code to apply to given files. If no code is specified, btred expects a function called `autostart' to be defined in the used context and defaults to `autostart()' as the macro code.
The macro code may use all functions defined in a given macro file, the default macro file tred.def, plus all functions and methods from Treex::PML (see Treex::PML documentation).
Note, that a lot of information on the current node, file etc. can be obtained using some pre-defined macro from `tred.def'. The documentation for `tred.def' is a highly recommended reading for btred macro coder and macros defined there in should be prefered in all applicable situations.
As in TrEd, the following variables can be used in macros:
$this - the current node (the root of the first tree in a file at the beginning)
$root - the root node of the current tree
Among many other, the following functions are defined (see 'tred.def' for a full list):
CurrentFile() - current FSFile object (see section on FSFile in Treex::PML documentation)
CurrentTreeNumber() - current tree number
CurrentContext() - current macro context
ChangingFile() - - macro may call this function to indicate that the file should be saved at the end of the pocessing.
Code to be evaluated before any file is open.
Start in a given macro context (Perl package). The default context is `TredMacro'.
Preload a given Perl module at btred startup so as it is available to all macros (even if running in a safe compartment). This option may be specified more than once with different modules.
Read a list of filenames to process from a given file (one filename per line). Files specified in a file-list are processed prior to files specified on the command-line. If file-list is a file with .fl extension, then the first line may contain a file-list name (as in TrEd). Moreover, unlike in other file-lists, filenames in .fl file-lists are asssumed to be relative to the file-list file location.
Apply Perl glob
function on the filename patterns given on the
command-line. This expands possible wild-card patterns on each of the
filename command-line argument as the standard Unix shell /bin/csh
would do. This can not only help in a situation where the shell used
does not support wildcard expansion, but can also be used to reduce the
number of the command-line arguments passed to the process in cases
where the argument list would after the shell-expansion exceed a
system limit. By default, this flag is 'on' for the Windows platform
and 'off' on all other systems.
Remove strings matching a given regexp from the beginning of filenames before saving.
Prepend output filenames with a given prefix.
Strip strings matching a given regexp from the end of filenames.
Append a given suffix to the filenames.
Format to use for files being saved.
TrEd configuration file (overrides ~/.tredrc).
Override configuration option from the config file with a given value. This flag can be used several times for different options.
Special syntax of the name part allows some modifications of existing option values for options that are delimited lists (this cannot be used to modify default or implicit values):
Treat the option as a list delimited by the delimiter X and prepend the value to the list.
Treat the option as a list delimited by the delimiter X and append the value to the list.
Treat the option as a list delimited by the delimiter X and remove the value from the list (if exists).
Only the following characters can be used as a delimiter:
; : , & | / + - \s \t SPACE
where SPACE is a space character, \s matches arbitrary white-space, and \t matches TAB character.
The options can be combined; for example
-O "extensionRepos\\s"-=http://foo/bar -O "extensionRepos\\s"+=http://foo/bar
first removes any occurrence of the URL http://foo/bar from the white-space separated list of extensionRepos and then appends the URL to the end of the list.
Specifies resource path. This option can be repeated and overrides ResoucePath setting in the TrEd configuration file.
Individual paths can also be separated by colon (POSIX/Unix) or semi-colon (Windows) separator. If there is a lone leading or trailing separator, the default resource path is prepended or appended, respectively.
Apply the macro code to all trees (wrapping the code into a
if ($root) { do {{ CODE }} while TredMacro::NextTree() }
loop).
Apply the macro code tn all nodes (you still must use --all-trees or
-T to aplly to all trees in a file) (wrapping the code into a while
($this) { CODE ; $this=$this->following };
loop).
Apply the macro code to all nodes except the hidden ones (you still
must use --all-trees or -T to process all trees in a file). This
option wraps the code into a while ($this) { CODE ;
$this=$this->following_visible(FS()) };
loop).
Allows to specify character encoding of input files (does not apply to XML files).
Automatically apllies a given character encoding to all stdout and stderr output operations. Works only with Perl >= 5.8.
Unconditionally save files after macro code was applied. By default,
files are saved only if the $FileChanged
variable has been set to 1
within the macro code.
If a file is saved, save/update also listed types of reffiles the file
pulled data from. For the moment, this only makes sense with the
PML
backend which supports so called knitting, i.e. a method to
pull certain data from external resources and push it back (with all
changes) to the original position in the resource when saving the
file. This option allows to list the types of resources (in PML the
types are the reference names listed in the PML schema) which should
be saved. Default is NONE
. This type of resources does not include
so called secondary files.
Never ever save any files (this way you may protect your files from
being saved even if applying a macro that modifies them and sets
$TredMacro::FileChanged
to 1).
Allow files with no trees (normaly such files are considered broken). Note: the short flag is -zero.
By default, SwitchContext() macro in btred is a no-op.
If this flag is used, SwitchContext() operates as in TrEd, i.e. it changes the macro context and calls allow_switch_context_hook, pre_switch_context_hook, and switch_context_hook appropriately.
Run macro code in a safe compartment restricting some operations that could be used by a malicious code writer to explore and compromise the user's environment and potentially the entire system. Most notably, this blocks most IO operations. NO WARRANTY! If unsure, do not run the macro code at all.
If used, btred will refuse to open or overwrite a file that is locked by TrEd.
CSTS format is "many in one"; there may be more tree structures in one file. This option can be used to specify which tree structure should be used. Provide a comma separated list consisting of names of node atributes corresponding to CSTS elements that contain the necessary information to build a tree out of a CSTS file. The first attribute should be an attribute containing the index of the governing node; the second one is optional and specifies the ordering attribute; the third one is also optional and if specified, it should be the attribute used to mark hidden nodes with the string 'hide'. If the third argument is specified as empty (i.e. there is a trailing comma), default to 'X_hide' with preset-value 'hide'.
Examples: -X govTR,dord - corresponds to elements <TRg> and <tfr> in CSTS
-X govMD_c,ord,x_MD_c_hide - corresponds to <MDg src="c">, <r>, and <x name="MD_c_hide">).
Build tectogrammatic trees from CSTS files.
Comma separated list of FS attribute names that should be preserved as <x> elements when saving to CSTS.
Use a given TrEd configuration file.
Preload all given files into memory before applying the macros (DOES NOT WORK WITH RESTRICTED MODE).
Do not stop (die) on errors, just warn.
Force Treex::PML to test validity of values assigned to @L (list) attributes in FS files.
Print only general processing information on stderr.
Do not print anything to stderr at all (except for fatal errors).
Print a lot of debugging information on the stderr.
Replace 'die' with 'Carp::confess', so that a complete stack trace is printed upon error. Useful for debugging.
Dump all macros currently being loaded to STDOUT and exit. Useful for debugging.
Start btred server, listening on a given port; implies -P. Use a suitable client such as ntred to apply a macro code on the files possesed by the server.
Accept only connections from a given host when operating in the server-mode.
Comma separated list of user-defined IO-backend modules to load.
Symbol name or a name=value pair to be used by macro-preprocessor
(equivalent to a #define
instruction at the beginning of the macro
file). Multiple definitions symbols may be separated by a comma and
the option may be repeated.
Neither load or save "secondary" files. Normally, secondary files (if loaded) are saved along with their primary files (the exactly same file-name prefix/suffix processing and format apply to both the primary and secondary files). A secondary file is a file required by a (normal - primary) file to be loaded along with it; this is typical for files containing some form of a stand-off annotation where one tree is built upon another. Note however, that this does not include so called knitting - an operation where the stand-off annotation is handled by a IO backend and the resulting knitted file appears to btred as a single unit.
Give a comma-separated list of installed TrEd extension names to temporarily enable if disabled in the extension configuration. Use '*' to enable all currently enabled extensions.
Give a comma-separated list of installed TrEd extension names to temporarily disable if enabled in the extension configuration. Use '*' to disable all currently enabled extensions.
Print out a list of available extensions and exit. Each extension name is given on a separate line and disabled extensions are preceded by '!'. This command takes into account options of --disable-extensions and --enable-extensions, so it can be used to test their interaction.
Prints path to module directory containing Treex::PML and other TrEd specific libraries and exit.
Print a brief help message on usage and exits.
Prints the help page and exits.
Displays the help as manual page.
This software is distributed under GPL - The General Public Licence. Full text of the GPL can be found in the LICENSE file distributed with this program and also on-line at http://www.gnu.org/copyleft/gpl.html.
Petr Pajas <pajas@matfyz.cz>
Copyright 2000-2008 Petr Pajas, All rights reserved.