Module: DTK::DSL::Template::V1::ComponentLink::ExternalServiceName

Defined in:
lib/dsl/template/v1/component_link/external_service_name.rb

Constant Summary collapse

SERVICE_NAME_VAR =
'*'
COMPONENT_VAR =
'+'
MAPPINGS =
{
  short_form: {
    generate: "#{SERVICE_NAME_VAR}/#{COMPONENT_VAR}",
    parse_regexp: /^([^\/\]\[]+)\/(.+$)/
  },
  long_form: {
    generate: "service[#{SERVICE_NAME_VAR}]/#{COMPONENT_VAR}",
    parse_regexp:  /^service\[([^\]]+)\]\/(.+$)/
      }
}
PARSE_REGEXPS =
MAPPINGS.values.map { |info| info[:parse_regexp] }
CANONICAL_FORM =
:short_form

Class Method Summary collapse

Class Method Details

.dependent_component_ref(external_service_name, component_ref) ⇒ Object



37
38
39
# File 'lib/dsl/template/v1/component_link/external_service_name.rb', line 37

def self.dependent_component_ref(external_service_name, component_ref)
  MAPPINGS[CANONICAL_FORM][:generate].sub(SERVICE_NAME_VAR, external_service_name).sub(COMPONENT_VAR, component_ref)
end

.parse?(input_string) ⇒ Boolean

returns [dependency, external_service_name] or nil if no external_service_name

Returns:

  • (Boolean)


42
43
44
45
46
47
48
49
50
51
# File 'lib/dsl/template/v1/component_link/external_service_name.rb', line 42

def self.parse?(input_string)
  # assume that cant have form ATOMIC-TERM/... where ATOMIC-TERM is not a external name
  PARSE_REGEXPS.each do |regexp|
    if input_string =~ regexp
      external_service_name, dependency = [$1, $2]
      return [dependency, external_service_name]
    end
  end
  nil
end