class Sasquatch::Compiler

Attributes

ext[RW]

Public Class Methods

new(ext) click to toggle source
# File lib/quatch/compiler.rb, line 7
def initialize ext
  # set the default extension for compiled files
  @ext = ext
end

Public Instance Methods

compile(files, file) click to toggle source

compiles files into the specified file

# File lib/quatch/compiler.rb, line 13
def compile(files, file)

  # setup the output buffer with the base file
  output_buffer = File.read(File.path(file))

  # loop through import files and substitute imports
  files.each do |key, import_file|
    output_buffer = import(output_buffer, key, import_file)
  end

  File.open(output_filename(file), 'w') do |file|
    file.write(output_buffer)
  end
end
import(output_buffer, key, import_file) click to toggle source

search the output buffer for the key and replace it with the import_file

# File lib/quatch/compiler.rb, line 40
def import output_buffer, key, import_file

  output_buffer.sub(/\/\* @import ["']#{key}["']; \*\//, "/* Imports #{key} */ \n\n" + File.read(import_file.path()) + "\n")
end
output_filename(file) click to toggle source
# File lib/quatch/compiler.rb, line 28
def output_filename file

  filename = ""
  file.scan(/^(.*?)\./) do |basename|
    filename = basename.first + @ext
  end

  (filename == file ? filename + @ext : filename)

end