Sha256: f29517ac8b97c5403dbfc14cba1ffeffd7d26c0fa12969a9399472bcb3a25ebf
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 KB
Contents
# frozen_string_literal: true require 'time' module IsoBibItem # Bibliographic date. class BibliographicDate # @return [String] attr_reader :type # @return [Time] attr_reader :from # @return [Time] attr_reader :to # @return [Time] attr_reader :on # @param type [String] "published", "accessed", "created", "activated" # @param from [String] # @param to [String] def initialize(type:, on: nil, from: nil, to: nil) raise ArgumentError, 'expected :on or :form argument' unless on || from @type = type @on = parse_date on @from = parse_date from @to = parse_date to end # rubocop:disable Metric/AbcSize # @param builder [Nokogiri::XML::Builder] # @return [Nokogiri::XML::Builder] def to_xml(builder, **opts) builder.date(type: type) do if on builder.on(opts[:no_year] ? '--' : on.year) else builder.from(opts[:no_year] ? '--' : from.year) builder.to to.year if to end end end # rubocop:enable Metric/AbcSize private # @params date [String] 'yyyy' or 'yyyy-mm' def parse_date(date) return unless date if date =~ /^\d{4}$/ Time.strptime date, '%Y' else Time.strptime date, '%Y-%m' end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
iso-bib-item-0.4.4 | lib/iso_bib_item/bibliographic_date.rb |