Sha256: be902dd05ef4580ff2204439102c83e0e9e5e0bee6681e13b7dcab642028eebe
Contents?: true
Size: 1.19 KB
Versions: 5
Compression:
Stored size: 1.19 KB
Contents
module RelatonBib class TypedTitleString TITLE_TYPES = %w[alternative original unofficial subtitle main].freeze # @return [String] attr_reader :type # @return [RelatonBib::FormattedString] attr_reader :title # rubocop:disable Metrics/AbcSize, Metrics/MethodLength # @param type [String] # @param title [RelatonBib::FormattedString, Hash] # @param content [String] # @param language [String] # @param script [String] def initialize(**args) if args[:type] && !TITLE_TYPES.include?(args[:type]) raise ArgumentError, %{The type #{args[:type]} is invalid.} end unless args[:title] || args[:content] raise ArgumentError, %{Keyword "title" or "content" should be passed.} end @type = args[:type] if args[:title] @title = args[:title] else fsargs = args.select { |k, _v| %i[content language script format].include? k } @title = FormattedString.new(fsargs) end end # rubocop:enable Metrics/AbcSize, Metrics/MethodLength # @param builder [Nokogiri::XML::Builder] def to_xml(builder) builder.parent[:type] = type if type title.to_xml builder end end end
Version data entries
5 entries across 5 versions & 1 rubygems