Class: MARCSerializer

Inherits:
ASpaceExport::Serializer show all
Defined in:
backend/app/exporters/serializers/marc21.rb

Class Method Summary (collapse)

Instance Method Summary (collapse)

Methods inherited from ASpaceExport::Serializer

inherited, serializer_for, serializer_for?, with_namespace

Class Method Details

+ (Object) add_decorator(decorator)

Allow plugins to wrap the MARC record with their own behavior. Gives them the chance to change the leader, 008, add extra data fields, etc.



15
16
17
18
# File 'backend/app/exporters/serializers/marc21.rb', line 15

def self.add_decorator(decorator)
  @decorators ||= []
  @decorators << decorator
end

+ (Object) decorate_record(record)



20
21
22
23
24
# File 'backend/app/exporters/serializers/marc21.rb', line 20

def self.decorate_record(record)
  Array(@decorators).reduce(record) {|result, decorator|
    decorator.new(result)
  }
end

Instance Method Details

- (Object) build(marc, opts = {})



4
5
6
7
8
9
10
11
# File 'backend/app/exporters/serializers/marc21.rb', line 4

def build(marc, opts = {})

  builder = Nokogiri::XML::Builder.new(:encoding => "UTF-8") do |xml|
    _root(marc, xml)
  end

  builder
end

- (Object) serialize(marc, opts = {})



27
28
29
30
31
32
# File 'backend/app/exporters/serializers/marc21.rb', line 27

def serialize(marc, opts = {})

  builder = build(MARCSerializer.decorate_record(marc), opts)

  builder.to_xml
end