ubpb/metacrunch-marcxml

View on GitHub
lib/metacrunch/marcxml/record/datafield_set.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
module Metacrunch
  module Marcxml
    class Record
      class DatafieldSet
        include Enumerable

        def initialize(datafields)
          @datafields = datafields || []
        end

        def each(&block)
          @datafields.each(&block)
        end

        def to_a
          @datafields
        end

        def empty?
          @datafields.empty?
        end

        def present?
          !empty?
        end

        # @return [Metacrunch::Marcxml::Record::SubfieldSet]
        def subfields(code = nil, flatten: true)
          if flatten
            subfields = @datafields.map do |datafield|
              datafield.subfields(code)
            end.flatten(1)

            Metacrunch::Marcxml::Record::SubfieldSet.new(subfields)
          else
            @datafields.map do |datafield|
              Metacrunch::Marcxml::Record::SubfieldSet.new(datafield.subfields(code))
            end
          end
        end

      end
    end
  end
end