class PartialCompiler::Compiler

Attributes

files[RW]

Public Class Methods

new() click to toggle source
# File lib/partial_compiler/compiler.rb, line 7
def initialize
  @files = FileCopier.create_files
  @files.each do |file|
    find_partials(file) 
  end
end

Private Instance Methods

find_partials(compiled_file_path) click to toggle source
# File lib/partial_compiler/compiler.rb, line 16
def find_partials compiled_file_path
  text = File.open(compiled_file_path).read
  compiled_content = ""
  text.each_line do |line|
    compiled_content += read_each_line(line, compiled_file_path)
  end
  compiled_content.to_s.force_encoding('UTF-8') 
  File.open(compiled_file_path, "w") {|file| file.puts compiled_content }
end
generate_locals(locals, original_line, indentation) click to toggle source
# File lib/partial_compiler/compiler.rb, line 38
def generate_locals locals, original_line, indentation
  if locals
    condensed_locals = locals.map{|local, value| "#{local}=#{get_local_value(local, original_line)}"}.join(";")
    return "#{(" " * indentation)}<% #{condensed_locals} %>"
  else
    return nil 
  end
end
get_local_value(local, original_line) click to toggle source
# File lib/partial_compiler/compiler.rb, line 47
def get_local_value local, original_line
  find_value_of_local = /#{local}:([^,}]*)/
  original_line.match(find_value_of_local)[-1]
end
read_each_line(line, compiled_file_path) click to toggle source
# File lib/partial_compiler/compiler.rb, line 26
def read_each_line line, compiled_file_path
  if line.include? PartialCompiler.config[:rendering_engine_partial_format] 
    the_partial = PartialReader.new(line, compiled_file_path)
    if the_partial.contents
      locals_line = generate_locals(the_partial.locals, line, the_partial.indentation)
      content_with_locals = [locals_line, the_partial.contents].compact.join("\n")
      return content_with_locals
    end
  end
  line
end