lib/genit/documents/html_document.rb in genit-2.0 vs lib/genit/documents/html_document.rb in genit-2.1
- old
+ new
@@ -1,72 +1,78 @@
# -*- encoding: utf-8 -*-
require 'nokogiri'
require 'bluecloth'
+require 'haml'
module Genit
# Open an html file in various format.
class HtmlDocument
-
+
# Public: Open an entire html document.
# If the file does not contain a <bogy> tag, a doctype, etc, they will be
# automatically added.
#
# file - Full path String filename.
#
# Returns a Nokogiri::HTML document.
def self.open file
Nokogiri::HTML(File.open(file))
end
-
+
# Public: Open a fragment of html document.
#
# file - Full path String filename.
#
# Returns a Nokogiri::HTML document.
def self.open_fragment file
string = IO.read file
Nokogiri::HTML.fragment string
end
-
+
# Public: Open a file as a string.
#
# file - Full path String name of a html or markdown file.
#
# Returns a String.
def self.open_as_string file
string = IO.read file
if file.markdown_ext?
BlueCloth.new(string).to_html
+ elsif file.haml_ext?
+ Haml::Engine.new(string, :format => :xhtml).render
else
string
end
end
-
+
# Public: Open a file as a string, taking care of fragment tags.
# All fragment tags are replaced by a new content.
#
- # file - Full path String name of a html or markdown file.
+ # file - Full path String name of a (html|markdown|haml) file.
#
# Returns a String.
def self.build_page_content(file, working_dir)
# TODO éviter le working_dir
+ str = IO.read(file)
if file.markdown_ext?
- BlueCloth.new(IO.read(file)).to_html
+ BlueCloth.new(str).to_html
+ elsif file.haml_ext?
+ Haml::Engine.new(str, :format => :xhtml).render
else
Fragment.new(file, working_dir).to_html
end
end
-
+
# Public: Get the list of <genit> tag in a document.
#
# file - Nokogiri::HTML or Nokogiri::XML document.
#
# Returns Nokogiri::XML::NodeSet.
def self.genit_tags_from file
file.css "genit"
end
-
+
end
end