internal package Foswiki::Plugins::WysiwygPlugin::TML2HTML

See PublishedAPI for packages intended to be used by Plugin and Contrib authors, or browse all packages.
See also Developing plugins, Developer's Bible, Technical Overview

internal package Foswiki::Plugins::WysiwygPlugin::TML2HTML

Convertor class for translating TML (Topic Meta Language) into HTML

The convertor does not use the Foswiki rendering, as that is a lossy conversion, and would make symmetric translation back to TML an impossibility.

The design goal was to support round-trip conversion from well-formed TML to XHTML1.0 and back to identical TML. Notes that some deprecated TML syntax is not supported.

ClassMethod new()

Construct a new TML to HTML convertor.

ObjectMethod convert( $tml, \%options ) → $tml

Convert a block of TML text into HTML. Options:
  • \&expandVarsInURL is a reference to a static function:
    expandVarsInURL($url, \%options) → $url
    that expands selected variables in URLs so that, for example, tags appear as pictures in the wysiwyg editor.
  • \&isKnownColour - pointer to a function that will determine if the parameter maps to a known HTML colour e.g. BLACK → black and return the colour name if it does, or undef otherwise.
  • \%xmltag is a reference to a hash. The keys are names of XML-like tags. The values are references to a function to determine if the content of the tag must be protected:
    fn($markup) → $bool
    The $markup appears between the delimiters. The functions may modify the markup.
  • dieonerror makes convert throw an exception if a conversion fails. The default behaviour is to encode the whole topic as verbatim text.
  • \@keeptags - gives an array of HTML tag names that are to have the TMLhtml class added, to protect them during subsequent HTML2TML conversion.
  • \@keepblocks - gives an array of (lowercase) tag names of HTML block tags that are to be protected. Default is [ 'script', 'style' ]
  • forcenoautolink can be set to a true value to apply NOAUTOLINK across the entire conversion.

Topic revision: r1 - 02 Mar 2020, UnknownUser
© 2020 Ultranauts - 75 Broad Street, 2nd Floor, Suite 206, New York, NY 10004 - info@ultranauts.co