class ActiveSupport::Duration::HumanStringSerializer
Based on: active_support/duration/iso8601_serializer.rb Inherits: normalize
Public Class Methods
new(duration, precision: nil, separator: '', delimiter: ' ', use_2_digit_numbers: false)
click to toggle source
# File lib/active_support/duration/human_string.rb, line 62 def initialize(duration, precision: nil, separator: '', delimiter: ' ', use_2_digit_numbers: false) @duration = duration @precision = precision @separator = separator @delimiter = delimiter @use_2_digit_numbers = use_2_digit_numbers end
Public Instance Methods
serialize()
click to toggle source
Builds and returns output_parts string.
# File lib/active_support/duration/human_string.rb, line 71 def serialize parts, sign = normalize output_parts = [] output_parts << [parts[:years], 'y'] if parts.key?(:years) output_parts << [parts[:months], 'm'] if parts.key?(:months) output_parts << [parts[:weeks], 'w'] if parts.key?(:weeks) output_parts << [parts[:days], 'd'] if parts.key?(:days) output_parts << [parts[:hours], 'h'] if parts.key?(:hours) output_parts << [parts[:minutes], 'm'] if parts.key?(:minutes) if parts.key?(:seconds) output_parts << [sprintf(@precision ? "%0.0#{@precision}f" : '%g', parts[:seconds]), 's'] end output_parts.map!.with_index { |(n, units), i| if @use_2_digit_numbers && i >= 1 n = sprintf('%02d', n) end "#{n}#{@separator}#{units}" } output = output_parts.join(@delimiter) "#{sign}#{output}" end