Sha256: badb118734d78d96c2d032003cd30debba03ad3dada7e6a16a5aa7f244e9d851

Contents?: true

Size: 1.51 KB

Versions: 2

Compression:

Stored size: 1.51 KB

Contents

require 'find'

module PartialCompiler
  class Compiler
    attr_accessor :files

    def initialize
      @files = FileCopier.create_files
      @files.each do |file|
        find_partials(file) 
      end
    end

    private

    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

    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

    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

    def get_local_value local, original_line
      find_value_of_local = /#{local}:([^,}]*)/
      original_line.match(find_value_of_local)[-1]
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
partial_compiler-0.0.4 lib/partial_compiler/compiler.rb
partial_compiler-0.0.3 lib/partial_compiler/compiler.rb