ad_html_text_convert (public)
ad_html_text_convert [ -from from ] [ -to to ] [ -maxlen maxlen ] \ [ -truncate_len truncate_len ] [ -ellipsis ellipsis ] \ [ -more more ] text
Defined in packages/acs-tcl/tcl/text-html-procs.tcl
Converts a chunk of text from a variety of formats to either text/html or text/plain.
Example: ad_html_text_convert -from "text/html" -to "text/plain" -- "text"
Putting in the -- prevents Tcl from treating a - in text portion from being treated as a parameter.
Html to html closes any unclosed html tags (see util_close_html_tags).
Text to HTML does ad_text_to_html, and HTML to text does an ad_html_to_text. See those procs for details.
When text is empty, then an empty string will be returned regardless of any format. This is especially useful when displaying content that was created with the richtext widget and might contain empty values for content and format.
- Switches:
- -from (optional, defaults to
"text/plain"
)- specify what type of text you're providing. Allowed values:
- text/plain
- text/enhanced
- text/markdown
- text/fixed-width
- text/html
- -to (optional, defaults to
"text/html"
)- specify what format you want this translated into. Allowed values:
- text/plain
- text/html
- -maxlen (optional, defaults to
"70"
)- The maximum line width when generating text/plain
- -truncate_len (optional, defaults to
"0"
)- The maximum total length of the output, included ellipsis.
- -ellipsis (optional, defaults to
"..."
)- This will get put at the end of the truncated string, if the string was truncated. However, this counts towards the total string length, so that the returned string including ellipsis is guaranteed to be shorter than the 'truncate_len' provided.
- -more (optional)
- This will get put at the end of the truncated string, if the string was truncated.
- Parameters:
- text (required)
- Author:
- Lars Pind <lars@pinds.com>
- Created:
- 19 July 2000
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- ad_html_text_convert, ad_text_html_convert_outlook_word_comments, ad_text_html_convert_to_plain, general_comments_create_link
Source code: # DRB: Modified this to accept mime types (text/plain or # text/html). Simplifies things when providing confirmation pages # for input destined for the content repository ... if { $text eq "" } { return "" } # For backwards compatibility switch $from { "html" { set from text/html } "text" - "plain" - "pre" { set from text/plain } } switch $to { "html" { set to text/html } "text" - "plain" - "pre" { set to text/plain } } if { ![ad_html_text_convertible_p -from $from -to $to] } { error "Illegal mime types for conversion - from: $from to: $to" } # Do the conversion switch -- $from { text/enhanced { switch -- $to { text/html { set text [ad_enhanced_text_to_html $text] set tags_are_closed 1 } text/plain { set text [ad_enhanced_text_to_plain_text -maxlen $maxlen -- $text] } } } text/markdown { package require Markdown switch -- $to { text/html { regsub -all \r\n $text \n text # # Try syntax highlighting just when target is text/html # if {[namespace which ::Markdown::register] ne ""} { # # We can register a converter # ::Markdown::register tcl ::apidoc::tclcode_to_html } set text [Markdown::convert $text] if {[namespace which ::Markdown::get_lang_counter] ne ""} { set d [::Markdown::get_lang_counter] if {$d ne ""} { template::head::add_style -style $::apidoc::style if {0} { template::head::add_css -href //cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/default.min.css template::head::add_javascript -src //cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js security::csp::require script-src cdnjs.cloudflare.com security::csp::require style-src cdnjs.cloudflare.com template::add_body_script -script "hljs.initHighlightingOnLoad();" # # In case we have Tcl, load the extra # language support which is not # included in the default package. # if {[dict exists $d tcl] && [dict get $d tcl]} { template::head::add_javascript -src "//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/languages/tcl.min.js" } } ::Markdown::reset_lang_counter } } } text/plain { regsub -all \r\n $text \n text set htmlText [Markdown::convert $text] set text [ad_html_to_text -maxlen $maxlen -- $htmlText] } } } text/plain { switch -- $to { text/html { set text [ad_text_to_html -- $text] set tags_are_closed 1 } text/plain { set text [ns_reflow_text -width $maxlen -- $text] } } } text/fixed-width { switch -- $to { text/html { set text "<pre>[ad_text_to_html -no_lines -- $text]</pre>" } text/plain { set text [ns_reflow_text -width $maxlen -- $text] } } } text/html { switch -- $to { text/html { # Handled below } text/plain { set text [ad_html_to_text -maxlen $maxlen -- $text] } } } text/xml { switch -- $to { text/html { set text "<pre>[ad_text_to_html -no_lines -- $text]</pre>" } text/plain { set text [ns_reflow_text -width $maxlen -- $text] } } } application/docbook+xml { switch -- $to { text/html { set text [ad_docbook_xml_to_html $text] } text/plain { set text [ad_docbook_xml_to_html $text] set text [ad_html_to_text -maxlen $maxlen -- $text] } } } } # Handle closing of HTML tags, truncation switch -- $to { text/html { if {[info exists tags_are_closed] && $truncate_len == 0} { #ns_log notice "No need to call util_close_html_tags" } else { #ns_log notice "regular call closeTags (from $from to $to)" set text [util_close_html_tags $text $truncate_len $truncate_len $ellipsis $more] } } text/plain { set text [ad_string_truncate -ellipsis $ellipsis -more $more -len $truncate_len -- $text] } } return $textXQL Not present: Generic, PostgreSQL, Oracle