aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/numeric/bytes.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/lib/active_support/core_ext/numeric/bytes.rb')
-rw-r--r--activesupport/lib/active_support/core_ext/numeric/bytes.rb66
1 files changed, 66 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/numeric/bytes.rb b/activesupport/lib/active_support/core_ext/numeric/bytes.rb
new file mode 100644
index 0000000000..b002eba406
--- /dev/null
+++ b/activesupport/lib/active_support/core_ext/numeric/bytes.rb
@@ -0,0 +1,66 @@
+# frozen_string_literal: true
+
+class Numeric
+ KILOBYTE = 1024
+ MEGABYTE = KILOBYTE * 1024
+ GIGABYTE = MEGABYTE * 1024
+ TERABYTE = GIGABYTE * 1024
+ PETABYTE = TERABYTE * 1024
+ EXABYTE = PETABYTE * 1024
+
+ # Enables the use of byte calculations and declarations, like 45.bytes + 2.6.megabytes
+ #
+ # 2.bytes # => 2
+ def bytes
+ self
+ end
+ alias :byte :bytes
+
+ # Returns the number of bytes equivalent to the kilobytes provided.
+ #
+ # 2.kilobytes # => 2048
+ def kilobytes
+ self * KILOBYTE
+ end
+ alias :kilobyte :kilobytes
+
+ # Returns the number of bytes equivalent to the megabytes provided.
+ #
+ # 2.megabytes # => 2_097_152
+ def megabytes
+ self * MEGABYTE
+ end
+ alias :megabyte :megabytes
+
+ # Returns the number of bytes equivalent to the gigabytes provided.
+ #
+ # 2.gigabytes # => 2_147_483_648
+ def gigabytes
+ self * GIGABYTE
+ end
+ alias :gigabyte :gigabytes
+
+ # Returns the number of bytes equivalent to the terabytes provided.
+ #
+ # 2.terabytes # => 2_199_023_255_552
+ def terabytes
+ self * TERABYTE
+ end
+ alias :terabyte :terabytes
+
+ # Returns the number of bytes equivalent to the petabytes provided.
+ #
+ # 2.petabytes # => 2_251_799_813_685_248
+ def petabytes
+ self * PETABYTE
+ end
+ alias :petabyte :petabytes
+
+ # Returns the number of bytes equivalent to the exabytes provided.
+ #
+ # 2.exabytes # => 2_305_843_009_213_693_952
+ def exabytes
+ self * EXABYTE
+ end
+ alias :exabyte :exabytes
+end