Module: AppInfo::Helper::HumanFileSize

Included in:
AAB, APK, DSYM::MachO, IPA, Macos
Defined in:
lib/app_info/helper.rb

Constant Summary collapse

FILE_SIZE_UNITS =
%w[B KB MB GB TB].freeze

Instance Method Summary collapse

Instance Method Details

#file_to_human_size(file, human_size:) ⇒ Object



38
39
40
41
# File 'lib/app_info/helper.rb', line 38

def file_to_human_size(file, human_size:)
  number = File.size(file)
  human_size ? number_to_human_size(number) : number
end

#number_to_human_size(number) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/app_info/helper.rb', line 45

def number_to_human_size(number)
  if number.to_i < 1024
    exponent = 0
  else
    max_exp = FILE_SIZE_UNITS.size - 1
    exponent = (Math.log(number) / Math.log(1024)).to_i
    exponent = max_exp if exponent > max_exp
    number = format('%<number>.2f', number: (number / (1024**exponent.to_f)))
  end

  "#{number} #{FILE_SIZE_UNITS[exponent]}"
end