module Build::Makefile::Parser

Constants

SOURCE_PATH
SOURCE_SEPARATOR

Public Class Methods

parse(scanner) { |definition| ... } click to toggle source
# File lib/build/makefile.rb, line 87
def self.parse(scanner)
        while definition = parse_statement(scanner)
                yield definition
        end
end
parse_rule(scanner) click to toggle source
# File lib/build/makefile.rb, line 60
def self.parse_rule(scanner)
        if scanner.scan(/(.*):/)
                rule = [:rule]
        
                target = scanner[1].strip
                rule << target
        
                # Parse dependencies:
                dependencies = []
                until scanner.scan(/\s*\n/) or scanner.eos?
                        scanner.scan(/(\s|\\\n)*/)
                
                        scanner.scan(SOURCE_PATH)
                        
                        # Need to remove escaped whitespace from path:
                        dependencies << scanner[0].gsub(/\\ /, ' ')
                end
                rule << dependencies
        
                return rule
        end
end
parse_statement(scanner) click to toggle source
# File lib/build/makefile.rb, line 83
def self.parse_statement(scanner)
        parse_rule(scanner)
end