sim.rb
1# frozen_string_literal: true
2
3require "value_semantics/monkey_patched"
4
5class SIM
6 value_semantics do
7 iccid(/\A\d+\Z/)
8 lpa_code(/\ALPA:/)
9 remaining_usage_kb Integer
10 remaining_days Integer
11 notes String
12 end
13
14 def self.extract(**kwargs)
15 kwargs = kwargs.transform_keys(&:to_sym)
16 new(kwargs.slice(
17 :iccid, :lpa_code, :remaining_usage_kb, :remaining_days, :notes
18 ))
19 end
20
21 def remaining_usage_mb
22 (remaining_usage_kb / 1024.0).round(2)
23 end
24end