Skip to content

bdurand/html_to_plain_text

Repository files navigation

HTML To Plain Text

Continuous Integration Ruby Style Guide Gem Version

A simple gem that provide code to convert HTML into a plain text alternative. Line breaks from HTML block level elements will be maintained. Lists and tables will also maintain a little bit of formatting.

  • Line breaks will be approximated using the generally established default margins for HTML tags (i.e.

    tag generates two line breaks,

    generates one)
  • Lists items will be numbered or bulleted with an asterisk

  • tags will add line breaks

  • tags will add a string of hyphens to serve as a horizontal rule
  • elements will enclosed in "|" delimiters
  • tags will have the href URL appended to the text in parentheses
  • Formatting tags like or will be stripped
  • Formatting inside
     or <plaintext> elements will be honored
  • Code-like tags like <script> or <style> will be stripped
  • HTML can also be converted to a Markdown approximation instead. In Markdown mode:

    • Headings are prefixed with # characters
    • Formatting tags like , , , and are converted to Markdown markers
    • tags become Markdown links and tags become Markdown images
    • content is prefixed with "> "
    •  blocks become fenced code blocks
      
    • Data tables are formatted as Markdown tables with a header separator row

    Usage

    require 'html_to_plain_text'
    
    html = "<h1>Hello</h1><p>world!</p>"
    HtmlToPlainText.plain_text(html) # => "Hello\n\nworld!"
    
    HtmlToPlainText.markdown(html) # => "# Hello\n\nworld!"
    # equivalent to HtmlToPlainText.plain_text(html, markdown: true)

    Options

    • show_links (default true) - Include link URLs and image sources in the output.
    • markdown (default false) - Format the output as Markdown instead of plain text.
    • all_tables (default false) - Format all tables as data tables. By default only tables with a non-zero border attribute or a thead or tbody element are formatted as data tables; other tables are assumed to be used for layout only and their cells are separated with spaces instead of "|" delimiters.
    • ignore_nav (default false) - Suppress non-content elements from the output. When set, header, footer, and nav tags are omitted along with any elements that have a role attribute of navigation, banner, or contentinfo.
    • selector (default nil) - A CSS selector limiting the output to matching elements. Only the contents of elements matching the selector are included in the output (e.g. selector: "#main, article"). Only elements within the body of the document are matched. An ArgumentError is raised if the selector is not a valid CSS selector.

    Installation

    Add this line to your application's Gemfile:

    gem "html_to_plain_text"

    And then execute:

    $ bundle install

    Or install it yourself as:

    $ gem install html_to_plain_text

    Contributing

    Open a pull request on GitHub.

    Please use the standardrb syntax and lint your code with standardrb --fix before submitting.

    License

    The gem is available as open source under the terms of the MIT License.

About

A ruby gem that can convert HTML to formatted plain text.

Resources

License

Stars

42 stars

Watchers

2 watching

Forks

Packages

 
 
 

Contributors

Languages