Class: RelatonGb::GbBibliographicItem

Inherits:
RelatonIsoBib::IsoBibliographicItem
  • Object
show all
Defined in:
lib/relaton_gb/gb_bibliographic_item.rb

Overview

GB bibliographic item class.

Constant Summary collapse

SUBDOCTYPES =
%w[specification method-of-test vocabulary code-of-practice].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**args) ⇒ GbBibliographicItem

Returns a new instance of GbBibliographicItem.

[View source]

32
33
34
35
36
37
38
39
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 32

def initialize(**args)
  super
  @committee = GbTechnicalCommittee.new(**args[:committee]) if args[:committee]
  @ccs = args[:ccs].map { |c| c.is_a?(Cnccs::Ccs) ? c : Cnccs.fetch(c) }
  @gbtype = GbStandardType.new(**args[:gbtype])
  @gbplannumber = args[:gbplannumber] ||
    structuredidentifier&.project_number
end

Instance Attribute Details

#ccsArray<Cnccs::Ccs> (readonly)

Returns:


24
25
26
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 24

def ccs
  @ccs
end

#committeeRelatonGb::GbTechnicalCommittee (readonly)


15
16
17
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 15

def committee
  @committee
end

#gbplannumberString (readonly)

Returns:

  • (String)

30
31
32
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 30

def gbplannumber
  @gbplannumber
end

#gbtypeRelatonGb::GbStandardType (readonly)


18
19
20
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 18

def gbtype
  @gbtype
end

#plan_numberString (readonly)

Returns:

  • (String)

27
28
29
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 27

def plan_number
  @plan_number
end

#topicString (readonly)

Returns:

  • (String)

21
22
23
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 21

def topic
  @topic
end

#typeString (readonly)

Returns:

  • (String)

30
31
32
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 30

def type
  @type
end

Class Method Details

.from_hash(hash) ⇒ RelatonGb::GbBibliographicItem

Parameters:

  • hash (Hash)

Returns:

[View source]

47
48
49
50
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 47

def self.from_hash(hash)
  item_hash = ::RelatonGb::HashConverter.hash_to_bib(hash)
  new(**item_hash)
end

Instance Method Details

#ext_schemaObject

[View source]

41
42
43
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 41

def ext_schema
  @ext_schema ||= schema_versions["relaton-model-gb"]
end

#has_ext?Boolean

Returns:

  • (Boolean)
[View source]

86
87
88
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 86

def has_ext?
  super || ccs&.any? || committee || gbplannumber || gbtype
end

#inspectString

Returns:

  • (String)
[View source]

99
100
101
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 99

def inspect
  "<#{self.class}:#{format('%<id>#.14x', id: object_id << 1)}>"
end

#makeid(id, attribute, _delim = "") ⇒ Object

[View source]

108
109
110
111
112
113
114
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 108

def makeid(id, attribute, _delim = "")
  return nil if attribute && !@id_attribute

  id ||= @docidentifier.reject { |i| i.type == "DOI" }[0]
  idstr = id.id
  idstr.gsub(/\s/, "").strip
end

#to_asciibib(prefix = "") ⇒ String

Parameters:

  • prefix (String) (defaults to: "")

Returns:

  • (String)
[View source]

92
93
94
95
96
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 92

def to_asciibib(prefix = "")
  out = super
  ccs.each { |c| out += c.to_aciibib prefix, ccs.size }
  out
end

#to_hashHash

Returns:

  • (Hash)
[View source]

77
78
79
80
81
82
83
84
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 77

def to_hash # rubocop:disable Metrics/AbcSize
  hash = super
  hash["ext"]["ccs"] = single_element_array(ccs) if ccs&.any?
  hash["ext"]["committee"] = committee.to_hash if committee
  hash["ext"]["plannumber"] = gbplannumber if gbplannumber
  hash["ext"]["gbtype"] = gbtype.to_hash if gbtype
  hash
end

#to_sString

Returns:

  • (String)
[View source]

104
105
106
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 104

def to_s
  inspect
end

#to_xml(**opts) ⇒ String

Returns XML.

Parameters:

  • opts (Hash)

Options Hash (**opts):

  • :builder (Nokogiri::XML::Builder)

    XML builder

  • :bibdata (Boolean)
  • :date_format (Symbol, NilClass) — default: :short

    , :full

  • :lang (String, Symbol)

    language

Returns:

  • (String)

    XML

[View source]

58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/relaton_gb/gb_bibliographic_item.rb', line 58

def to_xml(**opts) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
  super(**opts) do |b|
    if opts[:bibdata] && has_ext?
      ext = b.ext do
        doctype&.to_xml b
        b.horizontal horizontal unless horizontal.nil?
        # b.docsubtype docsubtype if docsubtype
        committee&.to_xml b
        ics.each { |i| i.to_xml b }
        structuredidentifier&.to_xml b
        b.stagename stagename if stagename
        render_gbxml(b)
      end
      ext["schema-version"] = ext_schema unless opts[:embedded]
    end
  end
end