Sha256: 670dfce92434b94985498192d56bbd6a2363837aaf9064a8badea2b1c2f49d2b

Contents?: true

Size: 1.41 KB

Versions: 56

Compression:

Stored size: 1.41 KB

Contents

# encoding: utf-8
class Antiquity

  def initialize(periods)
    @periods = periods.sort { |a,b| a.start_date <=> b.start_date }
  end

  def days(upto_date=Date.today)
    @periods.inject(0) { |total, period| total + period.days(upto_date) }
  end

  def months(upto_date=Date.today)
    @periods.inject(0) { |total, period| total + period.months(upto_date) }
  end

  def years(upto_date=Date.today)
    months(upto_date).divmod(12).first
  end

  def to_s(upto_date=Date.today)
    date = (@periods.last && @periods.last.end_date) || upto_date
    result = ""
    return result if @periods.empty?
    if date >= @periods.first.start_date
      years_upto_date = years(date)
      months_upto_date = months(date)
      result += years_upto_date > 1 ? "#{years_upto_date} años" : "#{years_upto_date} año" unless years_upto_date == 0
      result += ", " if years_upto_date >= 1 && !(months_upto_date.modulo(12).eql?(0))
      result += months_upto_date.modulo(12) > 1 ? "#{months_upto_date.modulo(12)} meses" : "#{months_upto_date.modulo(12)} mes" unless months_upto_date.modulo(12) == 0
      result += "#{(date - @periods.last.start_date).to_i} dias" if months_upto_date.modulo(12) == 0 && years_upto_date == 0 && date > @periods.last.start_date
      result += "Hoy!" if months_upto_date.modulo(12) == 0 && date == @periods.last.start_date
    end
    result += "En unos días..." if date < @periods.first.start_date
    result
  end
end

Version data entries

56 entries across 56 versions & 1 rubygems

Version Path
sinatra-hexacta-1.7.20 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.19 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.18 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.17 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.16 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.15 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.14 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.13 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.12 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.11 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.10 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.9 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.8 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.7 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.6 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.5 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.4 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.3 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.2 lib/sinatra/extensions/antiquity.rb
sinatra-hexacta-1.7.0 lib/sinatra/extensions/antiquity.rb