Class: Webby::Filters::Tidy
- Inherits:
-
Object
- Object
- Webby::Filters::Tidy
- Defined in:
- lib/webby/filters/tidy.rb
Overview
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. = "-indent -wrap 80 -utf8"
Instance Method Summary collapse
-
#initialize(str) ⇒ Tidy
constructor
call-seq: Tidy.new( html ).
-
#process ⇒ Object
call-seq: process => formatted html.
Constructor Details
#initialize(str) ⇒ Tidy
call-seq:
Tidy.new( html )
Create a new filter that will process the given html through the tidy program.
32 33 34 35 36 37 38 39 40 |
# 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 |
Instance Method Details
#process ⇒ Object
call-seq:
process => formatted html
Process the original HTML text string passed to the filter when it was created and output Tidy formatted HTML or XHTML.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/webby/filters/tidy.rb', line 48 def process cmd = "tidy %s -q -f #{@err.path}" % ::Webby.site. 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 |