Class: RelatonBib::Series

Inherits:
Object show all
Defined in:
lib/relaton_bib/series.rb

Overview

Series class.

Constant Summary collapse

TYPES =
%w[main alt].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**args) ⇒ Series

Returns a new instance of Series.

Parameters:



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/relaton_bib/series.rb', line 53

def initialize(**args)
  unless args[:title].is_a?(RelatonBib::TypedTitleString) ||
      args[:formattedref]
    raise ArgumentError, "argument `title` or `formattedref` should present"
  end

  if args[:type] && !TYPES.include?(args[:type])
    warn "[relaton-bib] Series type is invalid: #{args[:type]}"
  end

  @type         = args[:type] # if %w[main alt].include? args[:type]
  @title        = args[:title]
  @formattedref = args[:formattedref]
  @place        = args[:place]
  @organization = args[:organization]
  @abbreviation = args[:abbreviation]
  @from         = args[:from]
  @to           = args[:to]
  @number       = args[:number]
  @partnumber   = args[:partnumber]
end

Instance Attribute Details

#abbreviationRelatonBib::LocalizedString, NilClass (readonly)

Returns:



26
27
28
# File 'lib/relaton_bib/series.rb', line 26

def abbreviation
  @abbreviation
end

#formattedrefRelatonBib::FormattedRef, NilClass (readonly)

Returns:



14
15
16
# File 'lib/relaton_bib/series.rb', line 14

def formattedref
  @formattedref
end

#fromString, NilClass (readonly)

Returns date or year.

Returns:

  • (String, NilClass)

    date or year



29
30
31
# File 'lib/relaton_bib/series.rb', line 29

def from
  @from
end

#numberString, NilClass (readonly)

Returns:

  • (String, NilClass)


35
36
37
# File 'lib/relaton_bib/series.rb', line 35

def number
  @number
end

#organizationString, NilClass (readonly)

Returns:

  • (String, NilClass)


23
24
25
# File 'lib/relaton_bib/series.rb', line 23

def organization
  @organization
end

#partnumberString, NilClass (readonly)

Returns:

  • (String, NilClass)


38
39
40
# File 'lib/relaton_bib/series.rb', line 38

def partnumber
  @partnumber
end

#placeString, NilClass (readonly)

Returns:

  • (String, NilClass)


20
21
22
# File 'lib/relaton_bib/series.rb', line 20

def place
  @place
end

#titleRelatonBib::FormattedString, NilClass (readonly)

Returns title.

Returns:



17
18
19
# File 'lib/relaton_bib/series.rb', line 17

def title
  @title
end

#toString, NilClass (readonly)

Returns date or year.

Returns:

  • (String, NilClass)

    date or year



32
33
34
# File 'lib/relaton_bib/series.rb', line 32

def to
  @to
end

#typeString, NilClass (readonly)

Returns allowed values: “main” or “alt”.

Returns:

  • (String, NilClass)

    allowed values: “main” or “alt”



11
12
13
# File 'lib/relaton_bib/series.rb', line 11

def type
  @type
end

Instance Method Details

#to_asciibib(prefix = "", count = 1) ⇒ String

Parameters:

  • prefix (String) (defaults to: "")
  • count (Integer) (defaults to: 1)

Returns:

  • (String)


118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/relaton_bib/series.rb', line 118

def to_asciibib(prefix = "", count = 1) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength,Metrics/PerceivedComplexity
  pref = prefix.empty? ? "series" : prefix + ".series"
  out = count > 1 ? "#{pref}::\n" : ""
  out += "#{pref}.type:: #{type}\n" if type
  out += formattedref.to_asciibib pref if formattedref
  out += title.to_asciibib pref if title
  out += "#{pref}.place:: #{place}\n" if place
  out += "#{pref}.organization:: #{organization}\n" if organization
  out += abbreviation.to_asciibib "#{pref}.abbreviation" if abbreviation
  out += "#{pref}.from:: #{from}\n" if from
  out += "#{pref}.to:: #{to}\n" if to
  out += "#{pref}.number:: #{number}\n" if number
  out += "#{pref}.partnumber:: #{partnumber}\n" if partnumber
  out
end

#to_hashHash

Returns:

  • (Hash)


100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/relaton_bib/series.rb', line 100

def to_hash # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
  hash = {}
  hash["type"] = type if type
  hash["formattedref"] = formattedref.to_hash if formattedref
  hash["title"] = title.to_hash if title
  hash["place"] = place if place
  hash["organization"] = organization if organization
  hash["abbreviation"] = abbreviation.to_hash if abbreviation
  hash["from"] = from if from
  hash["to"] = to if to
  hash["number"] = number if number
  hash["partnumber"] = partnumber if partnumber
  hash
end

#to_xml(builder) ⇒ Object

Parameters:

  • builder (Nokogiri::XML::Builder)


79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/relaton_bib/series.rb', line 79

def to_xml(builder) # rubocop:disable Metrics/MethodLength
  xml = builder.series do
    if formattedref
      formattedref.to_xml builder
    else
      builder.title { title.to_xml builder }
      builder.place place if place
      builder.organization organization if organization
      builder.abbreviation { abbreviation.to_xml builder } if abbreviation
      builder.from from if from
      builder.to to if to
      builder.number number if number
      builder.partnumber partnumber if partnumber
    end
  end
  xml[:type] = type if type
end