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
# File 'lib/pufferfish.rb', line 8

def self.parse_file(file, base_dir)
    contents = File.read(file)
    
    # ^\\ -> don't count escape characters \%
    contents = contents.gsub(/%(.*[^\\])%/) { |_|
        match = Regexp.last_match.captures
        file = match[0]
        if not (file =~ /.*\..*/)
            file.concat(".html")
            # 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
        end
    }

    # Replace escape characters and return
    contents.gsub(/\\%/, "%")
end