repubmark/lib/repubmark/setup.rb

43 lines
916 B
Ruby

# frozen_string_literal: true
module Repubmark
class Setup
def initialize(**kwargs)
kwargs.each { |key, value| public_send :"#{key}=", value }
yield self if block_given?
freeze
end
attr_reader :prologue, :epilogue
def prologue=(prologue)
prologue = String(prologue).strip.freeze
prologue = nil if prologue.empty?
@prologue = prologue
end
def epilogue=(epilogue)
epilogue = String(epilogue).strip.freeze
epilogue = nil if epilogue.empty?
@epilogue = epilogue
end
##########
# Locale #
##########
LOCALE_RE = /\A[a-z]{2,3}\z/
DEFAULT_LOCALE = :en
def locale = @locale || DEFAULT_LOCALE
def locale=(locale)
locale = String(locale).to_sym
raise 'Invalid locale' unless LOCALE_RE.match? locale
raise 'Locale has already been set' if @locale
@locale = locale
end
end
end