Module: OrefinderEstimate::Version

Defined in:
lib/orefinder_estimate/version.rb

Constant Summary collapse

UNDERSCORE =
/\A(?:java|bedrock)_(\d+)_(\d+)(?:_(\d+))?\z/.freeze
DOTTED =
/(\d+)\.(\d+)(?:\.(\d+))?/.freeze
LOOSE =
/(\d{1,2})[^0-9]+(\d{1,2})/.freeze

Class Method Summary collapse

Class Method Details

.era(mc_minor) ⇒ Object



12
13
14
# File 'lib/orefinder_estimate/version.rb', line 12

def era(mc_minor)
  mc_minor >= 18 ? 'modern' : 'legacy'
end

.parse_version(raw) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/orefinder_estimate/version.rb', line 16

def parse_version(raw)
  return nil unless raw.is_a?(String)

  trimmed = raw.strip
  return nil if trimmed.empty?

  s = trimmed.downcase
  edition = s.include?('bedrock') ? 'bedrock' : 'java'

  if (m = UNDERSCORE.match(s))
    mc_minor = m[2].to_i
    patch = m[3] ? m[3].to_i : 0
    return { 'edition' => edition, 'era' => era(mc_minor), 'mcMinor' => mc_minor, 'patch' => patch, 'raw' => trimmed }
  end
  if (m = DOTTED.match(s))
    mc_minor = m[2].to_i
    patch = m[3] ? m[3].to_i : 0
    return { 'edition' => edition, 'era' => era(mc_minor), 'mcMinor' => mc_minor, 'patch' => patch, 'raw' => trimmed }
  end
  if (m = LOOSE.match(s))
    mc_minor = m[2].to_i
    return { 'edition' => edition, 'era' => era(mc_minor), 'mcMinor' => mc_minor, 'patch' => 0, 'raw' => trimmed }
  end

  nil
end