Class: Fig::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/fig/parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(application_config) ⇒ Parser

Returns a new instance of Parser.



12
13
14
15
# File 'lib/fig/parser.rb', line 12

def initialize(application_config)
  @parser = FigParser.new
  @application_config = application_config
end

Instance Method Details

#parse_package(package_name, version_name, directory, input) ⇒ Object

Raises:



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/fig/parser.rb', line 17

def parse_package(package_name, version_name, directory, input)
  input = input.gsub(/#.*$/, '')
  result = @parser.parse(" #{input} ")
  if result.nil?
    Logging.fatal "#{directory}: #{@parser.failure_reason}"
    raise PackageError.new("#{directory}: #{@parser.failure_reason}")
  end
  package = result.to_package(package_name, version_name, directory)
  bad_urls = []
  package.walk_statements do |statement|
    statement.urls.each do |url|
      # collect all bad urls in bad_urls
      next if not Repository.is_url?(url)
      bad_urls << url if not @application_config.url_access_allowed?(url)
    end
  end
  raise URLAccessError.new(bad_urls, package_name, version_name) if not bad_urls.empty?
  return package
end