Sha256: 118fa5974e229861ec15a93d7e1d065eaefb8e7a72f0bf12083c0f2fc4fadbe1

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

module Vedeu

  module Views

    # A collection of {Vedeu::Views::Line} instances.
    #
    # @api private
    #
    class Lines < Vedeu::Repositories::Collection

      # @param (see Vedeu::Repositories::Collection#initialize)
      # @macro raise_invalid_syntax
      # @return [Vedeu::Views::Lines]
      def self.coerce(collection = [], parent = nil, name = nil)
        if collection.is_a?(Vedeu::Views::Lines)
          collection

        elsif collection.is_a?(Vedeu::Views::Streams)
          if collection.empty?
            # @todo Investigate whether this is being used.
          end

        elsif collection.is_a?(Array)
          return new(collection, parent, name) if collection.empty?

          coerced_collection = []
          collection.each do |element|
            coerced_collection << element if element.is_a?(Vedeu::Views::Line)
          end

          new(coerced_collection, parent, name)

        elsif collection.is_a?(Vedeu::Views::Line)
          new([collection], parent, name)

        else
          raise Vedeu::Error::InvalidSyntax,
                'Cannot coerce for Vedeu::View::Lines, as collection ' \
                'unrecognised.'

        end
      end

      alias lines value

    end # Lines

  end # Views

end # Vedeu

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vedeu-0.8.13 lib/vedeu/views/lines.rb