class Webby::Filters::Tidy - webby-0.9.4 Documentation

# class Webby::Filters::Tidy

The Tidy filter is used to process HTML (or XHTML) through the tidy program and outpu nicely formatted and correct HTML (or XHTML).

Options can be passed to the tidy program via the `Webby.site` struct. Setting the `tidy_options` to the string of desired options will do the trick.

From a project’s Rakefile, include the following line (or one that’s more to your liking):

    SITE.tidy_options = "-indent -wrap 80 -utf8"

### Public Class Methods

new( html ) click to toggle source

Create a new filter that will process the given html through the tidy program.

    # File lib/webby/filters/tidy.rb, line 32
    def initialize( str )
      @log = ::Logging::Logger[self]
      @str = str

      # create a temporary file for holding any error messages
      # from the tidy program
      @err = Tempfile.new('tidy_err')
      @err.close
    end

### Public Instance Methods

process → formatted html click to toggle source

Process the original HTML text string passed to the filter when it was created and output Tidy formatted HTML or XHTML.

    # File lib/webby/filters/tidy.rb, line 48
    def process
      cmd = "tidy %s -q -f #{@err.path}" % ::Webby.site.tidy_options
      out = IO.popen(cmd, 'r+') do |tidy|
        tidy.write @str
        tidy.close_write
        tidy.read
      end

      if File.size(@err.path) != 0
        @log.warn File.read(@err.path).strip
      end

      return out
    end