Module: Iriq::Explanation

Defined in:
lib/iriq/explanation.rb

Overview

Builds a per-segment explanation for a single identifier.

Explanation.explain("https://foo.com/users/123")
# => [
#      { value: "users", type: :literal,    variable: false, hint: nil       },
#      { value: "123",   type: :integer_id, variable: true,  hint: "user_id" },
#    ]

Class Method Summary collapse

Class Method Details

.explain(input, classifier: SegmentClassifier::DEFAULT) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'lib/iriq/explanation.rb', line 12

def explain(input, classifier: SegmentClassifier::DEFAULT)
  iri = input.is_a?(Identifier) ? input : Parser.parse(input)

  if iri.urn?
    explain_urn(iri, classifier)
  else
    SegmentHints.derive(iri.path_segments, classifier)
  end
end

.explain_urn(iri, classifier) ⇒ Object



22
23
24
25
26
27
# File 'lib/iriq/explanation.rb', line 22

def explain_urn(iri, classifier)
  return [] unless iri.nss

  parts = iri.nss.include?(":") ? iri.nss.split(":", 2) : [iri.nss]
  SegmentHints.derive(parts, classifier)
end