Class: OpenBD::Resources::Onix::DescriptiveDetail

Inherits:
BaseResource
  • Object
show all
Defined in:
lib/openbd/resources/onix/descriptive_detail.rb

Overview

Block 1: Product description

Instance Attribute Summary collapse

Attributes inherited from BaseResource

#src

Instance Method Summary collapse

Constructor Details

#initialize(src) ⇒ DescriptiveDetail

Returns a new instance of DescriptiveDetail.



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 98

def initialize(src)
  super
  @product_composition = nil
  @product_form = nil
  @product_form_detail = nil
  @height = nil
  @width = nil
  @product_parts = nil
  @collection_sequence = nil
  @series_number = nil
  @series = nil
  @series_collationkey = nil
  @label = nil
  @label_collationkey = nil
  @title = nil
  @title_collationkey = nil
  @subtitle = nil
  @subtitle_collationkey = nil
  @authors = []
  @languages = []
  @pages = nil
  @subject_heading_text = nil
  @ccode = nil
  @genre_code = nil
  @jp_childrens_audience_code = nil
  @onix_adult_audience_rating = nil
  parse(src)
end

Instance Attribute Details

#authorsArray<OpenBD::Resources::Onix::Contributor> (readonly)

Contributors / Authors (著者)



68
69
70
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 68

def authors
  @authors
end

#ccodeString (readonly)

Japanese book trade C-Code (Cコード)

Returns:

  • (String)


85
86
87
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 85

def ccode
  @ccode
end

#collection_sequenceObject (readonly)

Collection Sequence/Publication order (配本回数)



36
37
38
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 36

def collection_sequence
  @collection_sequence
end

#genre_codeString (readonly)

Japanese book trade Genre Code (ジャンルコード)

Returns:

  • (String)


89
90
91
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 89

def genre_code
  @genre_code
end

#heightString (readonly)

Height (サイズ・タテ)

Returns:

  • (String)


26
27
28
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 26

def height
  @height
end

#jp_childrens_audience_codeObject (readonly)

Japanese Chidren’s audience code (児童書読者コード)



92
93
94
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 92

def jp_childrens_audience_code
  @jp_childrens_audience_code
end

#labelObject (readonly)

Collection level / Label (レーベル)



49
50
51
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 49

def label
  @label
end

#label_collationkeyObject (readonly)

Collationkey of Label (レーベル読み)



52
53
54
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 52

def label_collationkey
  @label_collationkey
end

#languagesArray<String> (readonly)

Languages (言語設定)

Returns:

  • (Array<String>)


72
73
74
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 72

def languages
  @languages
end

#onix_adult_audience_ratingObject (readonly)

ONIX Adult audience rating (成人指定) onix-codelists.io/codelist/203



96
97
98
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 96

def onix_adult_audience_rating
  @onix_adult_audience_rating
end

#pagesString (readonly)

Pages (ページ数)

Returns:

  • (String)


76
77
78
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 76

def pages
  @pages
end

#product_compositionObject (readonly) Also known as: bunbai

Product Composition (分売可否)



11
12
13
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 11

def product_composition
  @product_composition
end

#product_formObject (readonly)

Product Form Code



15
16
17
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 15

def product_form
  @product_form
end

#product_form_detailObject (readonly) Also known as: hankei

Product Form Detail (判型)

Onix codelists List 175: Product form detail onix-codelists.io/codelist/175



21
22
23
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 21

def product_form_detail
  @product_form_detail
end

#product_partsObject (readonly)

Product Parts (付録)



33
34
35
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 33

def product_parts
  @product_parts
end

#seriesObject (readonly)

Subcollection / Series (シリーズ名)



43
44
45
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 43

def series
  @series
end

#series_collationkeyObject (readonly)

Collationkey of Series (シリーズ読み)



46
47
48
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 46

def series_collationkey
  @series_collationkey
end

#series_numString (readonly)

Number of Series (シリーズ巻次)

Returns:

  • (String)


40
41
42
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 40

def series_num
  @series_num
end

#subject_heading_textString (readonly) Also known as: keywords

Keywords (キーワード)

Returns:

  • (String)


80
81
82
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 80

def subject_heading_text
  @subject_heading_text
end

#subtitleObject (readonly)

Subtitle (サブタイトル)



61
62
63
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 61

def subtitle
  @subtitle
end

#subtitle_collationkeyObject (readonly)

Collationkey of Subtitle (サブタイトル読み)



64
65
66
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 64

def subtitle_collationkey
  @subtitle_collationkey
end

#titleObject (readonly)

Title (書名)



55
56
57
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 55

def title
  @title
end

#title_collationkeyObject (readonly)

Collationkey of Title (書名読み)



58
59
60
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 58

def title_collationkey
  @title_collationkey
end

#widthString (readonly)

Width (サイズ・ヨコ)

Returns:

  • (String)


30
31
32
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 30

def width
  @width
end

Instance Method Details

#parse(dd) ⇒ Object



127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
# File 'lib/openbd/resources/onix/descriptive_detail.rb', line 127

def parse(dd)
  @product_composition = dd["ProductComposition"]

  # Onix codelists, List 150: Product form
  # https://onix-codelists.io/codelist/150
  # Value: "BA" (Book), "BZ" (Other book format) or "ZA" (General merchandise, not recommended)
  @product_form = dd["ProductForm"]
  if @product_form == "BA"

    # Onix codelists List 175: Product form detail
    # https://onix-codelists.io/codelist/175
    @product_form_detail = dd["ProductFormDetail"]
  end

  if dd["Measure"]
    dd["Measure"].each do |m|

      # Onix codelists, List 48: Measure type code
      # https://onix-codelists.io/codelist/48
      case m["MeasureType"]
      when "01"
        @height = m["Measurement"] + m["MeasureUnitCode"]
      when "02"
        @width = m["Measurement"] + m["MeasureUnitCode"]
      else
        nil
      end
    end
  end

  if dd["ProductPart"]
    @product_parts = dd["ProductPart"].map do |part|
      part["ProductFormDescription"]
    end
  end

  if dd["Collection"]
    if dd["Collection"]["CollectionSequence"]
      @collection_sequence = dd["Collection"]["CollectionSequence"]["CollectionSequenceNumber"]
    end
    if dd["Collection"]["TitleDetail"] && dd["Collection"]["TitleDetail"]["TitleElement"]

      # Onix codelists, List 149: Title element level
      # https://onix-codelists.io/codelist/149
      dd["Collection"]["TitleDetail"]["TitleElement"].each do |te|
        if te["TitleElementLevel"] == "03" ## Subcollection
          if te["PartNumber"]
            @series_number = te["PartNumber"]
          end
          @series = te["TitleText"]["content"]
          @series_collationkey = te["TitleText"]["collationkey"]
        elsif te["TitleElementLevel"] == "02" ## Collection level
          @label = te["TitleText"]["content"]
          @label_collationkey = te["TitleText"]["collationkey"]
        end
      end
    end
  end

  if dd["TitleDetail"]
    @title = dd["TitleDetail"]["TitleElement"]["TitleText"]["content"]
    @title_collationkey = dd["TitleDetail"]["TitleElement"]["TitleText"]["collationkey"]
    if dd["TitleDetail"]["TitleElement"]["Subtitle"]
      @subtitle = dd["TitleDetail"]["TitleElement"]["Subtitle"]["content"]
      @subtitle_collationkey = dd["TitleDetail"]["TitleElement"]["Subtitle"]["collationkey"]
    end
  end

  if dd["Contributor"]
    @authors = dd["Contributor"].map do |author|
      OpenBD::Resources::Onix::Contributor.new(author)
    end
  end

  if dd["Language"]
    @languages = dd["Language"].map{|lang| lang["LanguageCode"]}
  end

  if dd["Extent"] && dd["Extent"][0]
    @pages = dd["Extent"][0]["ExtentValue"]
  end

  if dd["Subject"]
    dd["Subject"].each do |sbj|

      # Onix codelists, List 27: Subject scheme identifier code
      # https://onix-codelists.io/codelist/27
      case sbj["SubjectSchemeIdentifier"]
      when "20"
        @subject_heading_text = sbj["SubjectHeadingText"] ## keywords
      when "78"
        @ccode = sbj["SubjectCode"]
      when "79"
        @genre_code = sbj["SubjectCode"]
      end
    end
  end

  # ONIX Code Lists, List 29: Audience code type
  #  https://onix-codelists.io/codelist/29
  if dd["Audience"]
    dd["Audience"].each do |aud|
      if aud["AudienceCodeType"] == "21" ## JapaneseChildrensAudienceCode
        @jp_childrens_audience_code = aud["AudienceCodeValue"]
      elsif aud["AudienceCodeType"] == "22" ## OnixAdultAudienceRating
        @onix_adult_audience_rating = aud["AudienceCodeValue"]
      end
    end
  end
end