Sha256: 7ebd7250c8e1a444f1beb1a72e4340d81e6c576dec5d742d67eea20f2a078582
Contents?: true
Size: 1.64 KB
Versions: 1
Compression:
Stored size: 1.64 KB
Contents
require 'orange/core' require 'haml' require 'yaml' require 'hpricot' module Orange class Parser < Resource def afterLoad orange.add_pulp Orange::Pulp::ParserPulp end def yaml(file) string = File.read(file) string.gsub!('__ORANGE__', orange.app_dir) out = YAML::load(string) end def haml(file, packet, *vars, &block) opts = vars.extract_options! temp = opts.delete(:template) resource = (opts[:resource] || '').downcase opts.merge :orange => orange templates_dir = File.join(orange.core_dir, 'templates') views_dir = File.join(orange.core_dir, 'views') default_dir = File.join(views_dir, 'default_resource') string = false string ||= read_if_exists('templates', file) if temp string ||= read_if_exists(templates_dir, file) if temp string ||= read_if_exists('views', resource, file) if resource string ||= read_if_exists('views', file) string ||= read_if_exists(views_dir, file) string ||= read_if_exists(views_dir, 'default_resource', file) raise LoadError, "Couldn't find haml file '#{file}" unless string haml_engine = Haml::Engine.new(string) out = haml_engine.render(packet, opts, &block) end def read_if_exists(*args) return File.read(File.join(*args)) if File.exists?(File.join(*args)) false end def hpricot(text) Hpricot(text) end end module Pulp::ParserPulp def html(&block) if block_given? doc = orange[:parser].hpricot(packet[:content]) yield doc packet[:content] = doc.to_s end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
orange-0.0.3 | lib/orange/resources/parser.rb |