Class: Zakuro::Context::VersionClassResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/zakuro/context/version_class_resolver.rb

Overview

VersionClassResolver 暦リゾルバー

Constant Summary collapse

CLASSES =

Returns 関連.

Returns:

  • (Hash<String, String>)

    関連

{
  'remainder' => 'Zakuro::Version::$VERSION::Cycle::Remainder',
  'solar_term' => 'Zakuro::Version::$VERSION::Cycle::SolarTerm',
  'annual_range' => 'Zakuro::Version::$VERSION::Range::AnnualRange',
  'dropped_date_parameter' => 'Zakuro::Version::$VERSION::Option::DroppedDate::Parameter',
  'vanished_date_parameter' => 'Zakuro::Version::$VERSION::Option::VanishedDate::Parameter'
}.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(version_name:) ⇒ VersionClassResolver

初期化

Parameters:

  • version_name (String)

    暦名



52
53
54
# File 'lib/zakuro/context/version_class_resolver.rb', line 52

def initialize(version_name:)
  @version_name = version_name
end

Instance Attribute Details

#version_nameString (readonly)

Returns 暦名.

Returns:

  • (String)

    暦名



36
37
38
# File 'lib/zakuro/context/version_class_resolver.rb', line 36

def version_name
  @version_name
end

Class Method Details

.get_class(version_name:, class_name:) ⇒ Object

該当の暦のクラスを取得する

Parameters:

  • version_name (String)

    暦名

  • class_name (String)

    クラス名

Returns:

  • (Object)

    該当クラス

Raises:

  • (ArgumentError)

    引数エラー



116
117
118
119
120
121
122
123
124
# File 'lib/zakuro/context/version_class_resolver.rb', line 116

def get_class(version_name:, class_name:)
  constant = CLASSES.fetch(class_name, '')

  raise ArgumentError.new, 'invalid class name' if constant == ''

  resolved_constant = constant.gsub('$VERSION', version_name)

  Object.const_get(resolved_constant)
end

Instance Method Details

#annual_rangeClass

年間範囲クラスを返す

Returns:

  • (Class)

    年間範囲クラス



79
80
81
# File 'lib/zakuro/context/version_class_resolver.rb', line 79

def annual_range
  self.class.get_class(version_name: @version_name, class_name: 'annual_range')
end

#dropped_date_parameterClass

没日引数を返す

Returns:

  • (Class)

    没日引数クラス



88
89
90
91
92
# File 'lib/zakuro/context/version_class_resolver.rb', line 88

def dropped_date_parameter
  self.class.get_class(
    version_name: @version_name, class_name: 'dropped_date_parameter'
  )
end

#remainderClass

大余小余(暦別)クラスを返す

Returns:

  • (Class)

    大余小余(暦別)クラス



61
62
63
# File 'lib/zakuro/context/version_class_resolver.rb', line 61

def remainder
  self.class.get_class(version_name: @version_name, class_name: 'remainder')
end

#solar_termClass

二十四節気クラスを返す

Returns:

  • (Class)

    二十四節気クラス



70
71
72
# File 'lib/zakuro/context/version_class_resolver.rb', line 70

def solar_term
  self.class.get_class(version_name: @version_name, class_name: 'solar_term')
end

#vanished_date_parameterClass

滅日引数を返す

Returns:

  • (Class)

    没日引数クラス



99
100
101
102
103
# File 'lib/zakuro/context/version_class_resolver.rb', line 99

def vanished_date_parameter
  self.class.get_class(
    version_name: @version_name, class_name: 'vanished_date_parameter'
  )
end