Class: Serve::DynamicHandler::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/serve/handlers/dynamic_handler.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context) ⇒ Parser

Returns a new instance of Parser.



66
67
68
69
# File 'lib/serve/handlers/dynamic_handler.rb', line 66

def initialize(context)
  @context = context
  @context.parser = self
end

Instance Attribute Details

#contextObject

Returns the value of attribute context.



64
65
66
# File 'lib/serve/handlers/dynamic_handler.rb', line 64

def context
  @context
end

#script_filenameObject

Returns the value of attribute script_filename.



64
65
66
# File 'lib/serve/handlers/dynamic_handler.rb', line 64

def script_filename
  @script_filename
end

Instance Method Details

#parse_file(filename) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/serve/handlers/dynamic_handler.rb', line 71

def parse_file(filename)
  old_script_filename = @script_filename
  @script_filename = filename
  lines = IO.read(filename)
  engine = case File.extname(filename).sub(/^./, '').downcase
    when 'haml'
      require 'haml'
      require 'sass'
      require 'sass/plugin'
      Haml::Engine.new(lines, :attr_wrapper => '"', :filename => filename)
    when 'erb'
      require 'erb'
      ERB::Engine.new(lines, :filename => filename)
    else
      raise 'extension not supported'
  end
  result = engine.render(context) do |*args|
    context.get_content_for(*args)
  end
  @script_filename = old_script_filename
  result
end