module Pufferfish::Parser
Public Class Methods
parse_file(file, base_dir)
click to toggle source
Parses html
### Params file: String
# File lib/pufferfish.rb, line 8 def self.parse_file(file, base_dir) contents = File.read(file) # ^\\ -> don't count escape characters \% # ? -> smallest possible match contents = contents.gsub(/%(.*?[^\\])%/) { |_| match = Regexp.last_match.captures file = match[0] file = file if file != "" # Append file extension (TODO: set in config) if not (file =~ /.*\..*/) file.concat(".html") end # Parse base dir if not base_dir.nil? if file =~ /\A\/.*\z/ # ? parse_file(file, base_dir) elsif base_dir =~ /\A.*\/\z/ parse_file("#{base_dir}#{file}", base_dir) else parse_file("#{base_dir}/#{file}", base_dir) end else parse_file(file, base_dir) end else STDERR.puts "found empty template identifier %%. If this is intential, consider escaping: \\%\\%" end } # Replace escape characters and return contents.gsub(/\\%/, "%") end