Class: Ree::LinkValidator

Inherits:
Object show all
Defined in:
lib/ree/core/link_validator.rb

Instance Method Summary collapse

Constructor Details

#initialize(packages_facade) ⇒ LinkValidator

Returns a new instance of LinkValidator.



4
5
6
# File 'lib/ree/core/link_validator.rb', line 4

def initialize(packages_facade)
  @packages_facade = packages_facade
end

Instance Method Details

#call(object, link) ⇒ nil

Validates existance and uniqueness of linked object

Parameters:

Returns:

  • (nil)


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
# File 'lib/ree/core/link_validator.rb', line 12

def call(object, link)
  link_package = @packages_facade.get_package(link.package_name)
  link_object = link_package.get_object(link.object_name)

  if !link_object
    msg = "      object: :\#{object.name}\n      path: \#{Ree::PathHelper.abs_object_path(object)}\n      error: Unable to find  :\#{link.object_name} in :\#{link.package_name} package\n    DOC\n\n    raise Ree::Error.new(msg, :invalid_dsl_usage)\n  end\n\n  existing_link = link_object.links.detect do |inj|\n    inj.object_name == link.object_name && inj.package_name == link.package_name\n  end\n\n  if existing_link\n    msg = <<~DOC\n      object: :\#{object.name}\n      path: \#{Ree::PathHelper.abs_object_path(object)}\n      error: Duplicate link :\#{link.object_name}\n    DOC\n\n    raise Ree::Error.new(msg, :invalid_dsl_usage)\n  end\n\n  nil\nend\n"