Module: Pufferfish::Parser

Defined in:
lib/pufferfish.rb

Overview

Parser

Class Method Summary collapse

Class Method Details

.parse_file(file, base_dir) ⇒ Object

Parses html

### Params file: String



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 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