43 lines
916 B
Ruby
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
|