Module: FRBR::Item

Includes:
Group1, Group3
Defined in:
lib/frbr/item.rb

Instance Attribute Summary collapse

Attributes included from Group3

#related_subjects, #subject_of

Attributes included from Group1

#relationships

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Group3

#add_related_subject, #add_subject_of, check_frbr_validity, #remove_related_subject, #remove_subject_of

Methods included from Group1

check_frbr_validity, #related

Instance Attribute Details

#exemplar_ofObject (readonly) Also known as: manifestation

Returns the value of attribute exemplar_of.



5
6
7
# File 'lib/frbr/item.rb', line 5

def exemplar_of
  @exemplar_of
end

#ownersObject (readonly)

Returns the value of attribute owners.



5
6
7
# File 'lib/frbr/item.rb', line 5

def owners
  @owners
end

Class Method Details

.valid_relationshipsObject



65
66
67
# File 'lib/frbr/item.rb', line 65

def self.valid_relationships
  {:reconfiguration=>:reconfiguration_of, :accompanied_by=>:accompanies, :described_in=>:describes, :contains=>:contained_in, :reproduction=>:reproduction_of, :related=>:related}      
end

Instance Method Details

#add_owner(owner) ⇒ Object

Raises:

  • (ArgumentError)


43
44
45
46
47
48
# File 'lib/frbr/item.rb', line 43

def add_owner(owner)
  raise ArgumentError, "Owner must be a Group 2 entity" unless owner.is_a?(FRBR::Group2)
  @owners ||= []
  @owners << owner unless @owners.index(owner)
  owner.add_ownership(self) unless owner.owner_of?(self)
end


55
56
57
58
# File 'lib/frbr/item.rb', line 55

def add_related(expression)
  (action, relationship) = this_method.split("_")
  self.add_relationship_to_entity(expression, relationship.to_sym, FRBR::Item, true)
end

#clear_exemplar_ofObject Also known as: clear_item_of



27
28
29
30
31
32
33
34
# File 'lib/frbr/item.rb', line 27

def clear_exemplar_of
  if @exemplar_of && !@exemplar_of.nil?
    if @exemplar_of.exemplars && @exemplar_of.exemplars.index(self)
      @exemplar_of.remove_exemplar(self)
    end
    @exemplar_of = nil
  end
end

#equivalentsObject



8
9
10
11
12
13
14
15
16
17
# File 'lib/frbr/item.rb', line 8

def equivalents
  equivalents = []
  if self.exemplar_of
    self.exemplar_of.exemplars.each do | item |
      next if item == self
      equivalents << item
    end
  end
  equivalents
end

#has_owner?(agent) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
39
# File 'lib/frbr/item.rb', line 36

def has_owner?(agent)      
  return true if @owners && @owners.index(agent)
  return false
end

#is_exemplar_of(manifestation) ⇒ Object Also known as: is_item_of

Raises:

  • (ArgumentError)


19
20
21
22
23
# File 'lib/frbr/item.rb', line 19

def is_exemplar_of(manifestation)  
  raise ArgumentError, "Must be the exemplar of a manifestation" unless manifestation.is_a?(FRBR::Manifestation)
  @exemplar_of = manifestation
  manifestation.add_exemplar(self) unless manifestation.exemplars && manifestation.exemplars.index(self)
end

#remove_owner(owner) ⇒ Object



50
51
52
53
# File 'lib/frbr/item.rb', line 50

def remove_owner(owner)
  @owners.delete(owner)
  owner.remove_ownership(self) if owner.owner_of?(self)
end


60
61
62
63
# File 'lib/frbr/item.rb', line 60

def remove_related(expression)
  (action, relationship) = this_method.split("_")
  self.remove_relationship_from_entity(expression, relationship.to_sym, FRBR::Item, true)
end