Sha256: 81c1b740b4a390f46833bbff0127247be3940884b487a1815d52486a85f77abb

Contents?: true

Size: 1.54 KB

Versions: 5

Compression:

Stored size: 1.54 KB

Contents

module CSL
  class Style

    class Date < Node
      attr_defaults :'date-parts' => 'year-month-day'

      attr_struct :name, :form, :'range-delimiter', :'date-parts', :variable,
        *Schema.attr(:display, :formatting, :delimiter)

      attr_children :'date-part'

      alias date_parts date_part
      alias parts date_part

      private :date_part

      def initialize(attributes = {})
        super(attributes, &nil)
        children[:'date-part'] = []

        yield self if block_given?
      end

      # @return [Array<String>] the localized date parts to be used
      def date_parts_filter
        attributes[:'date-parts'].to_s.split(/-/)
      end
      alias parts_filter date_parts_filter

      def delimiter
        attributes.fetch(:delimiter, '')
      end

      def has_variable?
        attribute?(:variable)
      end

      def variable
        attributes[:variable]
      end

      def has_form?
        attribute?(:form)
      end
      alias localized? has_form?

      def form
        attributes[:form].to_s
      end

      def numeric?
        attributes[:form].to_s =~ /^numeric$/i
      end

      def text?
        attributes[:form].to_s =~ /^text$/i
      end

      def has_date_parts?
        !date_parts.empty?
      end
      alias has_parts? has_date_parts?

      def has_overrides?
        localized? && has_parts?
      end
    end

    class DatePart < Node
      has_no_children

      attr_struct :name, :form, :'range-delimiter',
        *Schema.attr(:formatting, :periods)

      include CSL::DatePart
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
csl-1.0.0.pre23 lib/csl/style/date.rb
csl-1.0.0.pre22 lib/csl/style/date.rb
csl-1.0.0.pre21 lib/csl/style/date.rb
csl-1.0.0.pre20 lib/csl/style/date.rb
csl-1.0.0.pre19 lib/csl/style/date.rb