Class: Eye::Patch::ValueParser

Inherits:
Object
  • Object
show all
Defined in:
lib/eye/patch/value_parser.rb

Constant Summary collapse

TIME_MATCHER =
/\s(?<duration>(?:week|day|hour|minute|second)s?)(?:\s|\Z)/
SIZE_MATCHER =
/\s(?<size>(?:tera|giga|mega|kilo)?bytes?)(?:\s|\Z)/
MATCHERS =
{
  time: TIME_MATCHER,
  size: SIZE_MATCHER,
}.freeze

Class Method Summary collapse

Class Method Details

.parse(value) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/eye/patch/value_parser.rb', line 16

def self.parse(value)
  return value unless value.is_a?(String)

  result = MATCHERS.detect do |match_type, matcher|
    break send(:"parse_#{match_type}", value) if value.match(matcher)
  end

  result || value
end

.parse_size(value) ⇒ Object



30
31
32
33
# File 'lib/eye/patch/value_parser.rb', line 30

def self.parse_size(value)
  unit = value.match(SIZE_MATCHER)[:size]
  value.gsub(/[^\d.]/, "").to_f.send(unit)
end

.parse_time(value) ⇒ Object



26
27
28
# File 'lib/eye/patch/value_parser.rb', line 26

def self.parse_time(value)
  ChronicDuration.parse(value)
end