Module: NEU::MODS::Builders

Included in:
Document
Defined in:
lib/neu/mods/builders.rb

Overview

Node CREATION for the write path. Cerberus's MODSMerge builds every element it adds through these, so their names and signatures are part of the contract. See docs/editing.md.

Instance Method Summary collapse

Instance Method Details

#build_corporate_name(name:, role: "Creator") ⇒ Object

A plain corporate creator: one name part and a text roleTerm.



33
34
35
36
37
38
39
# File 'lib/neu/mods/builders.rb', line 33

def build_corporate_name(name:, role: "Creator")
  node = build_node("name")
  node["type"] = "corporate"
  node.add_child(name_part(name)) unless name.to_s.strip.empty?
  node.add_child(role_node(role))
  node
end

#build_node(name, text = nil) ⇒ Object

A MODS element reusing the root's namespace declaration, matched by URI: built outside MODS, an element is invisible to every XPath here.



15
16
17
18
19
20
# File 'lib/neu/mods/builders.rb', line 15

def build_node(name, text = nil)
  node = Nokogiri::XML::Node.new(name, doc)
  node.namespace = mods_namespace_definition
  node.content = text unless text.nil?
  node
end

#build_personal_name(given:, family:, role: "Creator") ⇒ Object

A plain personal creator: given and family parts and a text roleTerm.



23
24
25
26
27
28
29
30
# File 'lib/neu/mods/builders.rb', line 23

def build_personal_name(given:, family:, role: "Creator")
  name = build_node("name")
  name["type"] = "personal"
  name.add_child(name_part(given, "given")) unless given.to_s.strip.empty?
  name.add_child(name_part(family, "family")) unless family.to_s.strip.empty?
  name.add_child(role_node(role))
  name
end