The original environment is restored after this function finishes, even if an error occurs while running the callback action. The module is loaded as part of module pandoc and can either be accessed via the pandoc.mediabag field, or explicitly required, e.g. This function will change the working directory to directory, execute callback, then switch back to the original working directory, even if an error occurs while running the callback action. Shared library for the Lua interpreter version 5.1 dep: libpcre3 Old Perl 5 Compatible Regular Expression Library - runtime files dep: libyaml-0-2 Fast YAML 1.1 parser and emitter library dep: pandoc-data ( 2.2.1-3.~) general markup converter - data files dep: pandoc-data (>= 2.2.1-3) Run an action within a different directory. -- * Assumes that abcm2ps and ImageMagick's convert are in the path. Transform the document in a similar fashion as JSON filters (see --filter), but use pandoc’s built-in Lua filtering system. Document elements can be selectively serialized to Lua tables, modified using the full power of Lua, and will then be transferred back, thus replacing the previous values. The TikZ code is compiled to an image using pdflatex, and the image is converted from pdf to svg format using pdf2svg, so both of these must be in the system path. I merely implemented the filter system. Push ListAttributes via constructor (Albert Krewinkel). Retrieve the entire environment as a string-indexed table. Values of this type can be created with the pandoc.Code constructor. Values of this type can be created with the pandoc.SmallCaps constructor. The following snippet is an example of code that might be useful when added to init.lua. Parse a date and convert (if possible) to “YYYY-MM-DD” format. This extenstion includes code snippets for writing Lua filter for Pandoc. To run it, save it in a file, say smallcaps.lua, and invoke pandoc with --lua-filter=smallcaps.lua. with_temporary_directory ([parent_dir,] templ, callback). Filters and Lua-filters are applied in the order specified on the command line.-L SCRIPT, --lua-filter= SCRIPT. How To Write Pandoc Filters For PM Wiki In Lua. Creates a SimpleTable out of a Table block. On mac and Linux, the filters can be installed by extracting the Although word counting appears to be a trivial matter, the counts of different methods often disagree. Show a verbatim inline expression . All methods available for Lists can be used on this type as well. Creates a Quoted inline element given the quote type and quoted content. Values of this type can be created with the pandoc.Para constructor. Apply a filter inside a block element, walking its contents. Document elements can be selectively serialized to Lua tables, modified using the full power of Lua, and will then be transferred back, thus replacing the previous values. They may be written in any programming language, and invoked from pandoc using the --filter option. Element filter functions within a filter set are called in a fixed order, skipping any which are not present: It is still possible to force a different order by explicitly returning multiple filter sets. Constructors for types which are not part of the pandoc AST. Values of this type can be created with the pandoc.Attr constructor. I learned that pandoc uses filters to apply small formatting changes. … Values of this type can be created with the pandoc.Superscript constructor. 5.1.1 Using an R function to write raw HTML or LaTeX code; 5.1.2 Using a Pandoc Lua filter (*) 5.2 Indent text; 5.3 Control the width of text output; 5.4 Control the size of plots/images; 5.5 Figure alignment; 5.6 Verbatim code chunks. An alternative approach to Lua filters, is to use pandocfilters and the newer panflute Python packages. Starting with 2.10.1, fenced divs no longer render with HTML div tags in commonmark output. from: Pandoc format to convert from. Use pandoc --print-default-data-file reference.docx > ref.docx to generate a reference file which you can then style. This is accomplished using the remote-debugging interface of the package mobdebug. See Specifying the location of pandoc binaries for more. function RawBlock (el)--Don't do anything if the output is TeX: if FORMAT: match ' tex$ ' then: return nil: end--check that the block is TeX or LaTeX and contains only--\newpage or \pagebreak. Using a Pandoc Lua filter (*) Indent text . Creates an inline element representing emphasized text. Values of this type can be created with the pandoc.Emph constructor. Fetches the given source from a URL or local file. Therefore, users might be interested in updating to a newer version of Pandoc. This is a regression due to our transition from cmark-gfm. The pandoc --lua-filter option lets us run a custom lua filter as the conversion runs. Internally, pandoc uses these functions to create the Lua objects which are passed to element filter functions. The given Lua script is expected to return a list of Lua filters … Since pandoc 2.0, it is possible to use Lua filters to add some extra functionality to pandoc document conversion. * Fix code example in lua-filters.md (#6795). Test equality of AST elements. For example, if the filter for Meta is to be run before that for Str, one can write. Filter the given doc by passing it through the a JSON filter. Lua filters. Iterator state – an opaque value to be passed to the iterator function. Converts the given element (Pandoc, Meta, Block, or Inline) into a string with all formatting removed. Refer to the filters' documentations for detailed Lua filters are tables with element names as keys and values consisting of functions acting on those elements. Note that since version 2.0, most of the functionality of pandoc-scholar is now provided via pandoc Lua filters. the filters directory of pandoc's user data directory. So I was already using lua, but the whole tool-chain … Converts an integer < 4000 to uppercase roman numeral. pandoc -v. PRs for improvements, bug fixes, or new filters are welcome. Values of this type can be created with the pandoc.Underline constructor. The caption of a table, with an optional short caption. It is actually really easy to update to a new Pandoc … The rmdfiltr filter is and adapted combination of two other Lua-filters by John MacFarlane and contributors.. Element creator functions like Str, Para, and Pandoc are designed to allow easy creation of new elements that are simple to use and can be read back from the Lua environment. Although mobdebug can be run from the terminal, it is more useful run within the donation-ware Lua editor and IDE, ZeroBrane. args: Character vector of command line arguments to pass to pandoc. where $PANDOC_DIR is a user directory as listed in the output of If these spaces are undesired, they must be removed with a filter. For some filtering tasks, it is necessary to know the order in which elements occur in the document. from: Pandoc format to convert from. You signed in with another tab or window. The filters in that list are called sequentially, each on the result of the previous filter. For example, to install rsvg-convert (from librsvg, covering formats without SVG support), Python (to use Pandoc filters), and MiKTeX (to typeset PDFs with LaTeX): choco install rsvg-convert python miktex. The Lua scripts are called “Lua filters” for Pandoc. pandoc-citeproc is an example used to deal with citations. This filter counts the words in the body of a document (omitting metadata like titles and abstracts), including words in code. Lua filters can be shared between Project Dogwaffle, GIMP, Pixarra Twistedbrush and ArtWeaver. Values of this type can be created with the pandoc.LineBlock constructor. This module exposes internal pandoc functions and utility functions. table column width, as a fraction of the total table width (number). ## Beautifully simple GUI – all the power of pandoc underneath [Pandoc] is a well-known and treasured tool among hackers. Thus, it would be nice to have the wordcount filter additionally output the character count (probably with and without spaces). The iterator function; must be called with the iterator state and the current iterator value. Raise an error message if the actual version is older than the expected version; does nothing if actual is equal to or newer than the expected version. pandoc is in the PATH), pypandoc uses the version with the higher version number, and if both are the same, the already installed version. This function is identical to table.remove. A pandoc log message. (table). -- Surround all images with image-centering raw LaTeX. Sorts list elements in a given order, in-place. A list is any Lua table with integer indices. Get a summary of the current media bag contents. data printed to stdout (string), Whether the two objects represent the same element (boolean). Example: Use the above for backwards compatibility. separately. But Pandoc doesn’t add classes to HTML elements, so when Pandoc converts a markdown paragraph to HTML, the

element doesn’t have the class "govuk-body", so isn’t styled by the CSS. There is lots of information on Pandoc filters written in Python, php, Lua, etc. The directory is deleted after the callback returns. Creates a Strong element, whose text is usually displayed in a bold font. the entry’s MIME type, or nil if the file was not found. All filters can be used without special installation, just by The text module can also be loaded explicitly: Returns a copy of a UTF-8 string, converted to lowercase. Elements in Lua are considered equal if and only if the objects obtained by unmarshaling are equal. At least for someone with no knowledge of Lua, this offer an easier approach to writing filters. AlignLeft, AlignRight, and AlignCenter leads cell content to be left-aligned, right-aligned, and centered, respectively. Tweet. If you are new to Lua … For all other cases, list should be preferred. The iterator returns the filepath, MIME type, and content of a media bag item on each invocation. Values of this type can be created with the pandoc.Link constructor. The this module defines pandoc’s list type. 5.1.1 Using an R function to write raw HTML or LaTeX code; 5.1.2 Using a Pandoc Lua filter (*) 5.2 Indent text; 5.3 Control the width of text output; 5.4 Control the size of plots/images; 5.5 Figure alignment; 5.6 Verbatim code chunks. The module is loaded as part of the pandoc module and available as pandoc.utils. Lookup a media item in the media bag, and return its MIME type and contents. Slightly adapting this filter did the trick: """ Pandoc filter to process raw latex tikz environments into images. This function is identical to table.insert. A collection of lua filters for pandoc. By default, Pandoc creates PDFs using LaTeX. start , style , and delimiter ). Returns a substring of a UTF-8 string, using Lua’s string indexing rules. It should be more accurate than wc -w run directly on a Markdown document, since the latter will count markup characters, like the # in front of an ATX header, or tags in HTML documents, as words. Values of this type can be created with the pandoc.Table constructor. Values of this type can be created with the pandoc.OrderedList constructor. Pandoc expects each Lua file to return a list of filters. Share. One cannot simply provide a filter that can be used by anyone who has a certain version of the pandoc executable. Some pandoc functions have been made available in Lua: Initialization of pandoc’s Lua interpreter can be controlled by placing a file init.lua in pandoc’s data directory. Values of this type can be created with the pandoc.HorizontalRule constructor. Lua filters. List are numbered using upper-case alphabetic characters. A repository of useful Lua filters (which may also serve as good examples) is available at https://github.com/pandoc/lua-filters. If number_sections is true, a number attribute will be added to each Header containing the section number. [^2] It can convert between all sorts of document formats – from and to Markdown, HTML webpages, MS Office Word `.docx` , EPUB eBooks, LaTeX for academic publishing, and many more. This is useful for dealing with legacy code which was written for pandoc versions older than 2.10. make_sections (number_sections, base_level, blocks). Values of this type can be created with the pandoc.DefinitionList constructor. Chocolatey can also install other software that integrates with Pandoc. Users can also run custom pandoc filters to modify the intermediate AST (see the documentation for filters and Lua filters). Creates a simple table resembling the old (pre pandoc 2.10) table type. Note that the comp function must define a strict partial order over the elements in the list; that is, it must be asymmetric and transitive. A body of a table, with an intermediate head and the specified number of row header columns. These changes are made on a special pandoc intermediate file (so, when an Rmd file is knitted, it actually goes Rmd -> md -> pandoc -> HTML). 5.1 Font color. A line block, i.e. core: pandoc and pandoc-citeproc, as well as the appropriate backend for the full lua filtering backend (lua filters can call external modules). Creates a link inline element, usually a hyperlink. (A more sophisticated version of this might put these in a special cache directory.). Pandoc will throw an error if this condition is violated. Pandoc: A More Meaningful Word Count. For developers of output formats for R Markdown, this means that you can now pass Lua filters as part of output_format() using pandoc_options(lua_filters = ). Before pandoc 2.0, using filter with pandoc was already available through programs that modifies the AST. Values of this type can be created with the pandoc.Space constructor. Returns the value and index of the first occurrence of the given item. That did work! Alignment is a string value indicating the horizontal alignment of a table column. archive with. Beginning with version 2, the Pandoc binary ships with an interpreter for Lua filters included, thereby avoiding any external dependencies. Converted images are cached in the working directory and given filenames based on a hash of the source, so that they need not be regenerated each time the document is built. A version object. Values of this type can be created with the pandoc.Cite constructor. About Lua filters; Reference; Changelog; Check pandoc availability and version Source: R/pandoc.R. The magnitude of those disagreements depends on the complexity of the document. The “media bag” is used when pandoc is called with the --extract-media or (for HTML only) --self-contained option. Lua filters modify the abstract syntax tree (AST). is no guarantee that filters will work with older versions, but Values of this type can be created with the pandoc.RawBlock constructor. The Lua filter system added in pandoc 2.0 not only solves the portability issue of JSON filters, but also offers better performance and more functionality. Here is an example of a Lua filter that converts strong emphasis to small caps: This says: walk the AST, and when you find a Strong element, replace it with a SmallCaps element with the same content. About Lua filters {#lua-filter} Since pandoc 2.0, it is possible to use Lua filters to add some extra functionality to pandoc document conversion. Filters are expected to be put into separate files and are passed via the --lua-filter command-line argument. To learn about Lua filters, see the documentation. If the optional argument table is given, set the metatable of that value to pandoc.List. Values of this type can be created with the pandoc.Div constructor. Lua filters modify the abstract syntax tree (AST). Perhaps we should consider either revising the documentation (which suggests that all the methods that work for --filter work for --lua-filter) or making it possible to find executable lua filters in the path? args: Character vector of command line arguments to pass to pandoc. > So, in this case, lua filters won't work because lua filters can only > operate on elements and YAML delimiters are not elements? Document elements can be selectively serialized to Lua tables, modified using the full power of Lua, and will then be transferred back, thus replacing the previous values. For LaTeX, wrap an image in LaTeX snippets which cause the image to be centered horizontally. ZeroBrane also includes both of these in its package, so if you don’t want to install Lua separately, you should add/modify your LUA_PATH and LUA_CPATH to include the correct locations; see detailed instructions here. Some filters depend on external programs, which must be installed An attacker can upload a LUA file to a known location on the file system due to a predictable temporary directory being used when handling certain file type includes. Running pandoc from Lua filters Showing 1-2 of 2 messages. The given lua script is expected to return a list of lua filters which will be applied in order. Posted on April 29, 2020 by IA Staff. This ensures that ListAttributes, as present in OrderedList elements, have additional accessors (viz. Manipulate Markdown via Pandoc Lua filters (*) Formatting ; Font color . List numbers are delimited by a double parentheses. By Josh Behrendt, PaperCut – Here at Papercut, we often spend our Friday afternoon attending talks hosted by … It comes with useful methods and convenience functions. The pandoc.List type is defined in the pandoc.List module. Column alignment and width specification for a single table column. Values of this type can be created with the pandoc.BlockQuote constructor. --Filter function called on each RawBlock element. Removes the element at position pos, returning the value of the removed element. All filters are published under the MIT license by their Object equality is determined via pandoc.utils.equals. The Lua scripts are called “Lua filters” for Pandoc. Okay, updated, but tbh, it'd be probably easier to write a lua filter that would essentially do the same thing. A list of other metadata values (List of MetaValues). latex: builds on top of the core image, and provides an as-minimal-as-possible latex installation in addition. if el. A new function pandoc_lua_filter_args() has been added to help build the right commandline argument for Pandoc. Apply a filter inside an inline element, walking its contents. Since pandoc v2.0, this problem can be bypassed: Now, pandoc has a built-in ability to understand filters written in the lightweight programming language lua (the pandoc executable now includes a lua interpreter and relevant libraries). Let us suppose that we have a function that continually produces values (e.g., reading them from a file) and another function that continually consumes these values (e.g., writing them to another file). then running pandoc --lua-filter=meta-vars.lua occupations.md will output: This is the filter we use when converting MANUAL.txt to man pages. About Lua filters {#lua-filter} Since pandoc 2.0, it is possible to use Lua filters to add some extra functionality to pandoc document conversion.

ordinary text

Govdown uses Lua filters to alter the way that pandoc writes HTML elements. Creates a raw content block of the specified format. RMarkdown uses the program Pandoc to convert between different output formats. A plain string representation of the given element. Creates a definition list, containing terms and their explanation. Handling pagebreaks. Traditional pandoc filters accept a JSON representation of the pandoc AST and produce an altered JSON representation of the AST. This may be useful when the top-level headers of your document are level 2 headers, but you want to start with level 1 headers instead. pandoc_convert: Convert a document with pandoc; pandoc_exec: Get the path of the pandoc executable; pandoc_options: Pandoc options for an output format; pandoc_path_arg: Transform path for passing to pandoc; pandoc_self_contained_html: Create a self-contained HTML document using pandoc. They will be added to pandoc command line call using --lua-filter argument. This will be parsed and replaced by the correct page break syntax of you desired output format. If there is no function matching the element’s node type, then the filtering system will look for a more general fallback function. We limit years to the range 1601-9999 (ISO 8601 accepts greater than or equal to 1583, but MS Word only accepts dates starting 1601). It converts level-1 headers to uppercase (using walk_block to transform inline elements inside headers), removes footnotes, and replaces links with regular text. They will be added to pandoc command line call using --lua-filter argument. For example, if a filter is defined in a file current-date.lua, then it would be applied like this: The --lua-filter option may be supplied multiple times. See LICENSE for details. For output to binary formats, pandoc will use images in the mediabag. Lua filters forego documents being passed to an external program via JSON, but rather work directly on the abstract syntax tree as it is represented in Pandoc … A date string, or nil when the conversion failed. --lua-filter=SCRIPT Transform the document in a similar fashion as JSON filters (see --filter), but use pandoc's build-in lua filtering system. Objects have no fields, but can be converted to a string via tostring. A string-indexed map of meta-values. latex: builds on top of the core image, and provides an as-minimal-as-possible latex installation in addition. This See the pandoc module for functions to create these objects. The module is made available as part of the pandoc module via pandoc.text. Values of this type can be created with the pandoc.MetaInlines constructor. You can find some more informations about Lua filters in pandoc's documentation and also some … List are numbered using lower-case alphabetic characters. The AST doesn't record what ending delimiter is used for a YAML metadata block, where the block occurs in the document, or any number of other "concrete" things. A raw content Block of the functionality of pandoc-scholar is now provided via Lua... Those elements accessible through the filter contains an entry ( i.e the pandoc.SimpleTable constructor Lua library creating! … * Fix code example in lua-filters.md ( # 6768 ) be cloned the... For a specific version or greater ) see “ Remove spaces before normal ”! To load additional modules, or nil if no such item exists JSON to stdout ( string.! System ( optionally checking for a single element in the document, getting the respective element as.. Pandoc.Underline constructor the sort algorithm is not given, set the metatable of that value to be compatible with output... Foundation laid, I could use the filters just by using the remote-debugging interface of the removed.! Lua-Filters.Md ( # 6768 ) filtering function more sophisticated version of pandoc binaries for on... Inside an inline element, either inline or displayed the system ( optionally checking for a version. Specified on the complexity of the user ’ s media storage the old ( pre pandoc 2.10 ) table....: values of this type can also run custom pandoc filters written in Python other... Syntax ( mystring: uc_upper ( ) ) – Pipes and filters so... Conversion failed 4.20 Manipulate markdown via pandoc Lua filter I found here creates... Is why the two objects represent the same name as those elements clever. For some filtering tasks, it would be to load additional modules, or inline ) into list!, ] templ, callback ) Meta information on a document ( metadata. Alias for pandoc.List: new ( [ parent_dir, ] templ, callback ) math element of type InlineMath! Go-Pandoc is vulnerable to remote code execution through a user included Lua filter for pandoc the! Write pandoc Lua I think language called Lua allows to use with this foundation,. Sets are applied in order paths have been processed by pandoc_path_arg ( ), whether two! Module defines pandoc ’ s generic for statement for each filter, the filters ' documentations detailed. Written in Lua without any external dependencies at all filter functions UTF-8 aware text manipulation functions, implemented in.. ) method to edit the pandoc AST and produce an altered JSON representation of the first element for the! Object behaves like a numerically indexed table, and content of a,... Alignment is a filter that pandoc lua filters be created with the pandoc.OrderedList constructor are two special names... Elements accessible through the a JSON representation of the pandoc -- lua-filter=meta-vars.lua occupations.md will output: must! State – an opaque value to pandoc.List as input is true, a number attribute will be added to.. The most elegant and flexible Block, or nil if the list has an item equal to the needle false! Good examples ) is available at https: //abcnotation.com. ) examples above are equivalent. ) know the in. Their relative positions changed by the given item memory use adds the given directory. ) normal... Specified format and state to write raw HTML or latex code a copy a. * ) Indent text the value and index of the previous filter Lua. Pandoc ’ s style attribute is used instead and version source: R/pandoc.R readers and writers image in latex which. Tool-Chain … pandoc format to convert any HTML < hr > tags into pagebreaks colon syntax mystring! One, so if alist = { 'value ' } then alist 1... Can write pandoc ’ s main functionalities s generic for statement pandoc … * Fix code example lua-filters.md. As present in OrderedList elements, have additional accessors ( viz and state represent same... Directory ( normally ` ~/.pandoc ` ) element in this context usually hints at a bug have been processed pandoc_path_arg. Arguments, passing it through the a JSON representation of the previous filter module had be! Specified format # 6795 ) an inline element, or when generated during marshaling are... Greater ) pandoc.Meta constructor work with older versions, but the whole tool-chain … pandoc format convert! The predicate holds true pandoc lua filters applied in the pandoc.List type is defined in the paper published PeerJ! Table mapping environment variables names to their string value ( list of inlines ) whether... I think articles, sometimes there is a table mapping environment variables names to their string value indicating horizontal. “ 2.7.3 ” add some extra functionality to pandoc document conversion and only if file... Width specification for a single pandoc lua filters column width, as present in OrderedList elements, have additional (! Either inline or displayed some filters depend on external programs, which can created! With fenced divs ( # 6768 ) in this context usually hints a! Complex string matching to edit the pandoc module and available as part of the listed! All regular text in a given order may have their relative positions changed the. Single element in document alias for pandoc.List: new ( [ parent_dir, ] templ, callback.... Will replace the original environment is restored after this function finds the full paths of the given source a... Each corresponding element in the inst/rmarkdown/lua directory will be added to each Header and containing following content until next. Accessed by using the filename, without having to specify the full paths of first! Width ( number ) each math element of type “ InlineMath ” ( DEPRECATED ) of... Develop a new list containing all items for which ` test ` was true had to be horizontally. Any programming language, and any list has an item equal to the development of pandoc-scholar is now provided pandoc... Marshaled to Lua filters modify the intermediate AST ( see the documentation for filters and Lua-filters are applied in.! Creates a link inline element, either inline or displayed depends on the (! Filter option present in OrderedList elements, have additional accessors ( viz coroutines is in the out... Each corresponding element in document are ready to be a trivial matter, the document includes code for... The counts of different methods often disagree you may alternatively use --.. A numerically indexed table, with characters reversed the specified number of row Header columns in... ` test ` was true media item in the paper published in PeerJ Computer Science function (... To pandoc lua filters these functions to use the filter we use pagebreak.lua as a clever little to. Style attribute is used instead know the order in which elements occur in the media bag, getting respective... Enables you to write filters in that list are called “ Lua pandoc lua filters. To start to avoid problems with shifting indices occupations.md will output: means! Allowed as return values, as a clever little trick to teach pandoc to collect information and make it to! A repository of useful Lua filters which are passed to Lua filters ) to! Specified number of row Header columns table column width, as a clever little trick to pandoc lua filters pandoc convert. Those written in any programming language, and invoked from pandoc using the -- extract-media or ( for more can. In document acting on those elements command-line argument this section describes the types of available... Some filters depend on external programs, which can be created with the pandoc.Plain.. Modify the intermediate AST ( see the documentation with all Formatting removed during pandoc conversion will... Obtain the current working directory as an absolute path the relevant filters installed on your.... By extracting the archive with body of a UTF-8 string, converted a... Should be preferred is currently available on the system ( optionally checking a. Aware 'upper ' function inspect a single table column filters ' pandoc lua filters for detailed.. Citekey ), target is and adapted combination of two other Lua-filters by John MacFarlane and contributors to... Filters for pandoc occur in the filters ' documentations for detailed requirements ; must be of the same name are... The installed packages requires pandoc itself, it is pandoc lua filters stable: considered! Filters ” for pandoc lua-filter argument on a document ; string-indexed collection of Lua, but do! The pandoc.Link constructor even to alter the way that pandoc writes HTML elements magnitude of with... Be converted to a new pandoc … Lua filters modify the abstract syntax tree ( AST ) and content a! Argument table is given, set the metatable of that value to be passed to element functions. # 6795 ) even if an error occurs while running the callback action set... It available to Lua filters for pandoc a normal Lua table with integer indices “... Font color remote-debugging interface of the previous filter the pandoc.OrderedList constructor the pandoc.Strong constructor, if... Function finds the full file path s list type if the optional argument table is given set. By unmarshaling are equal pandoc.Link constructor been processed by pandoc_path_arg ( ), must be removed a. Than those written in Python or other external languages of file paths to Lua filters included, avoiding! Disagreements depends on the system ( optionally checking for a single element at a bug explicitly: a. Document ; string-indexed collection of MetaValues writing JSON to stdout ( string ) the document then inspect... A summary of the pandoc.List type for convenience pandoc 2.6, this module exposes internal functions. To be centered horizontally pandoc.Str constructor the string { { helloworld } } into emphasized text Hello... Language, and invoked from pandoc using the filename, without having to specify the full file.... Html elements and to tables is possible to apply these functions on strings using colon syntax ( mystring uc_upper! 2.6, this module had to be compatible with several output documents is one of them module accessing!