wilsonsilva/calendario

View on GitHub
lib/calendario/rendered_year.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Calendario
  # A cal-like representation of a year:
  #
  #                             2020
  #       January               February               March
  # Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
  #           1  2  3  4                     1   1  2  3  4  5  6  7
  #  5  6  7  8  9 10 11   2  3  4  5  6  7  8   8  9 10 11 12 13 14
  # 12 13 14 15 16 17 18   9 10 11 12 13 14 15  15 16 17 18 19 20 21
  # 19 20 21 22 23 24 25  16 17 18 19 20 21 22  22 23 24 25 26 27 28
  # 26 27 28 29 30 31     23 24 25 26 27 28 29  29 30 31
  #
  #
  #        April                  May                   June
  # Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
  #           1  2  3  4                  1  2      1  2  3  4  5  6
  #  5  6  7  8  9 10 11   3  4  5  6  7  8  9   7  8  9 10 11 12 13
  # 12 13 14 15 16 17 18  10 11 12 13 14 15 16  14 15 16 17 18 19 20
  # 19 20 21 22 23 24 25  17 18 19 20 21 22 23  21 22 23 24 25 26 27
  # 26 27 28 29 30        24 25 26 27 28 29 30  28 29 30
  #                       31
  #
  #         July                 August              September
  # Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
  #           1  2  3  4                     1         1  2  3  4  5
  #  5  6  7  8  9 10 11   2  3  4  5  6  7  8   6  7  8  9 10 11 12
  # 12 13 14 15 16 17 18   9 10 11 12 13 14 15  13 14 15 16 17 18 19
  # 19 20 21 22 23 24 25  16 17 18 19 20 21 22  20 21 22 23 24 25 26
  # 26 27 28 29 30 31     23 24 25 26 27 28 29  27 28 29 30
  #                       30 31
  #
  #       October               November              December
  # Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
  #              1  2  3   1  2  3  4  5  6  7         1  2  3  4  5
  #  4  5  6  7  8  9 10   8  9 10 11 12 13 14   6  7  8  9 10 11 12
  # 11 12 13 14 15 16 17  15 16 17 18 19 20 21  13 14 15 16 17 18 19
  # 18 19 20 21 22 23 24  22 23 24 25 26 27 28  20 21 22 23 24 25 26
  # 25 26 27 28 29 30 31  29 30                 27 28 29 30 31
  #
  class RenderedYear
    # A list of lines representing a year
    #
    # @api private
    # @return [Array<String>]
    #
    attr_reader :lines

    # Initializes a rendered year
    #
    # @api private
    # @param [Array<String>] lines List of lines representing a year
    #
    def initialize(lines)
      @lines = lines
    end

    # Returns the textual representation of a year
    #
    # @api private
    # @return [String]
    #
    def to_s
      lines.join("\n")
    end
  end
end