Class: Ukiryu::VersionSchemeResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/ukiryu/version_scheme_resolver.rb

Overview

Resolves version scheme specifications to Versionian scheme objects.

Schemes are defined inline in implementation YAML files in the register. This resolver handles two modes:

  1. Reference to Versionian built-in schemes (semantic, calver, etc.)

  2. Inline declarative scheme definitions (Hash)

Examples:

Reference built-in scheme

scheme = VersionSchemeResolver.resolve(:semantic)

Inline declaration

scheme = VersionSchemeResolver.resolve(
  { 'name' => 'custom', 'type' => 'declarative', 'components' => [...] }
)

Class Method Summary collapse

Class Method Details

.inline?(scheme_spec) ⇒ Boolean

Check if a scheme spec is inline (Hash) or reference (String/Symbol)

Parameters:

  • scheme_spec (String, Hash, Symbol)

    Scheme specification

Returns:

  • (Boolean)

    true if inline declaration



40
41
42
# File 'lib/ukiryu/version_scheme_resolver.rb', line 40

def inline?(scheme_spec)
  scheme_spec.is_a?(Hash)
end

.reference?(scheme_spec) ⇒ Boolean

Check if a scheme spec is a reference (String/Symbol)

Parameters:

  • scheme_spec (String, Hash, Symbol)

    Scheme specification

Returns:

  • (Boolean)

    true if reference



48
49
50
# File 'lib/ukiryu/version_scheme_resolver.rb', line 48

def reference?(scheme_spec)
  scheme_spec.is_a?(String) || scheme_spec.is_a?(Symbol)
end

.resolve(scheme_spec) ⇒ Versionian::VersionScheme

Resolve a scheme specification to a Versionian VersionScheme object.

Parameters:

  • scheme_spec (String, Hash, Symbol)

    Scheme name (symbol/string) or inline declaration (hash)

Returns:

  • (Versionian::VersionScheme)

    Resolved scheme object



26
27
28
29
30
31
32
33
34
# File 'lib/ukiryu/version_scheme_resolver.rb', line 26

def resolve(scheme_spec)
  if scheme_spec.is_a?(Hash)
    load_inline_scheme(scheme_spec)
  elsif scheme_spec.is_a?(String) || scheme_spec.is_a?(Symbol)
    load_builtin_scheme(scheme_spec)
  else
    raise ArgumentError, "Invalid scheme specification: #{scheme_spec.inspect}"
  end
end