Class: CalendariumRomanum::SanctoraleWriter

Inherits:
Object
  • Object
show all
Defined in:
lib/calendarium-romanum/sanctorale_writer.rb

Overview

Understands a custom plaintext calendar format and knows how to transform the Celebrations in a Sanctorale to this format.

For specification of the data format see README of the data directory, For a complete example see e.g. the file describing General Roman Calendar.

Since:

  • 0.8.0

Constant Summary collapse

RANK_CODES =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Since:

  • 0.8.0

{
  Ranks::TRIDUUM => 's1.1',
  Ranks::PRIMARY => 's1.2',
  Ranks::SOLEMNITY_GENERAL => 's',
  Ranks::SOLEMNITY_PROPER => 's1.4',

  Ranks::FEAST_LORD_GENERAL => 'f2.5',
  Ranks::SUNDAY_UNPRIVILEGED => 'f2.6',
  Ranks::FEAST_GENERAL => 'f',
  Ranks::FEAST_PROPER => 'f2.8',
  Ranks::FERIAL_PRIVILEGED => 'f2.9',

  Ranks::MEMORIAL_GENERAL => 'm',
  Ranks::MEMORIAL_PROPER => 'm3.11',
  Ranks::MEMORIAL_OPTIONAL => 'm3.12',
  Ranks::FERIAL => 'm3.13',

  Ranks::COMMEMORATION => '4.0'
}.freeze
COLOUR_CODES =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Since:

  • 0.8.0

{
  Colours::WHITE => 'W',
  Colours::VIOLET => 'V',
  Colours::GREEN => 'G',
  Colours::RED => 'R'
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(front_matter: true) ⇒ SanctoraleWriter

Returns a new instance of SanctoraleWriter.

Parameters:

  • front_matter (Boolean) (defaults to: true)

    Should YAML front matter be written?

Since:

  • 0.8.0



46
47
48
# File 'lib/calendarium-romanum/sanctorale_writer.rb', line 46

def initialize(front_matter: true)
  @write_front_matter = front_matter
end

Instance Method Details

#write(src, dest = nil) ⇒ String Also known as: write_to_string

Write to an object which understands #<<

Parameters:

  • src (Sanctorale)

    source of the loaded data

  • dest (String, File, #<<) (defaults to: nil)

    object to populate. If not provided, a new String instance will be created and returned

Returns:

  • (String)

Since:

  • 0.8.0



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/calendarium-romanum/sanctorale_writer.rb', line 58

def write(src, dest = nil)
  dest ||= String.new

  # Write metadata to YAML if present
  unless (!@write_front_matter) || src..nil? || src..empty?
    dest << src..to_yaml
    dest << "---\n"
  end

  # Write each celebration, grouped by month with headings
  current_month = 0
  src.each_day.sort_by{ |date, _| date }.each do |date, celebrations|
    if date.month > current_month
      current_month = date.month
      dest << "\n= #{current_month}\n"
    end

    celebrations.each do |c|
      dest << celebration_line(date, c)
      dest << "\n"
    end
  end

  dest
end

#write_to_file(sanctorale, filename, encoding = 'utf-8') ⇒ void

This method returns an undefined value.

Write to a filesystem path

Parameters:

  • sanctorale (Sanctorale)
  • filename (String)
  • encoding (String) (defaults to: 'utf-8')

Since:

  • 0.8.0



92
93
94
95
96
# File 'lib/calendarium-romanum/sanctorale_writer.rb', line 92

def write_to_file(sanctorale, filename, encoding = 'utf-8')
  File.open(filename, 'w', encoding: encoding) do |f|
    write(sanctorale, f)
  end
end