class DTK::DSL::Template::V1::ComponentLink
Public Class Methods
elements_collection_type()
click to toggle source
Canonical form is an array
# File lib/dsl/template/v1/component_link.rb, line 41 def self.elements_collection_type :hash end
generate_elements(component_links_content, parent)
click to toggle source
For generation
# File lib/dsl/template/v1/component_link.rb, line 68 def self.generate_elements(component_links_content, parent) # Parsing form can be a hash, but canonical form is an array component_links_content.map { |link_name, component_link| generate_canonical_element(link_name, component_link) } end
parse_elements(input_hash, parent_info)
click to toggle source
# File lib/dsl/template/v1/component_link.rb, line 45 def self.parse_elements(input_hash, parent_info) input_hash.inject(file_parser_output_hash) do |h, (name, value)| h.merge(name => parse_element({ 'value' => value}, parent_info, :index => name)) end end
parse_transform_to_hash_form(input_links, parent)
click to toggle source
# File lib/dsl/template/v1/component_link.rb, line 57 def self.parse_transform_to_hash_form(input_links, parent) if input_links.kind_of?(::Hash) input_links elsif input_links.kind_of?(::Array) input_links.inject(empty_input_hash) { |h, link| h.merge(ComponentLink.parse_transform_link_to_hash_form(link, parent)) } else raise parent.parsing_error(:WrongObjectType, input_links, [::Hash, ::Array]) end end
Private Class Methods
dependent_component_ref(component_link)
click to toggle source
# File lib/dsl/template/v1/component_link.rb, line 107 def self.dependent_component_ref(component_link) component_ref = component_link.req(:Value) if external_service_name = component_link.val(:ExternalServiceName) ExternalServiceName.dependent_component_ref(external_service_name, component_ref) else component_ref end end
generate_canonical_element(link_name, component_link)
click to toggle source
# File lib/dsl/template/v1/component_link.rb, line 98 def self.generate_canonical_element(link_name, component_link) dependent_ref = dependent_component_ref(component_link) if ImplicitLinkName.implicit_link_name(dependent_ref) == link_name dependent_ref else { link_name => dependent_ref } end end
parse_transform_link_to_hash_form(link_input, parent)
click to toggle source
# File lib/dsl/template/v1/component_link.rb, line 75 def self.parse_transform_link_to_hash_form(link_input, parent) if link_input.kind_of?(::Hash) link_input elsif link_input.kind_of?(::String) { ImplicitLinkName.parse(link_input, parent: parent) => link_input } else parent.parsing_error(:WrongObjectType, link_input, [::Hash, ::String]) end end
Public Instance Methods
parse!()
click to toggle source
# File lib/dsl/template/v1/component_link.rb, line 51 def parse! dependency, external_service_name = parse_value set :Value, dependency set? :ExternalServiceName, external_service_name end
parser_output_type()
click to toggle source
For parsing
# File lib/dsl/template/v1/component_link.rb, line 36 def parser_output_type :hash end
Private Instance Methods
parse_value()
click to toggle source
returns [dependency, external_service_name]; second can be nil
# File lib/dsl/template/v1/component_link.rb, line 86 def parse_value dependency = external_service_name = nil string = input_key_value(:Value) # only the service instance dsl can have external service name if file_obj.file_type < FileType::ServiceInstance dependency, external_service_name = ExternalServiceName.parse?(string) end dependency ||= string [dependency, external_service_name] end