Class: ONIX::ProductPart

Inherits:
SubsetDSL show all
Includes:
IdentifiersMethods::Ean, IdentifiersMethods::ProprietaryId
Defined in:
lib/onix/product_part.rb

Overview

product part use full Product to provide file protection and file size

Instance Attribute Summary collapse

Attributes included from Attributes

#attributes

High level collapse

Shortcuts collapse

Low level collapse

Instance Method Summary collapse

Methods included from IdentifiersMethods::ProprietaryId

#proprietary_ids

Methods included from IdentifiersMethods::Ean

#ean

Methods inherited from SubsetDSL

element, elements, #get_class, get_class, inherited, #initialize, n, #parse, ref_to_short, register_elements, register_scopes, #register_subset_array, registered_elements, #registered_elements, registered_scopes, scope, short_to_ref

Methods inherited from Subset

parse, #parse, #tag_match, #unsupported

Methods included from Attributes

attribute_class, #parse_attributes, #serialized_attributes

Constructor Details

This class inherits a constructor from ONIX::SubsetDSL

Instance Attribute Details

#part_ofObject

this ProductPart is part of Product



37
38
39
# File 'lib/onix/product_part.rb', line 37

def part_of
  @part_of
end

#productProduct

full Product if referenced in ONIXMessage

Returns:



34
35
36
# File 'lib/onix/product_part.rb', line 34

def product
  @product
end

Instance Method Details

#content_typesArray<ProductContentType>

shortcut for #product_content_types

Returns:



17
# File 'lib/onix/product_part.rb', line 17

elements "ProductContentType", :subset, :shortcut => :content_types, :cardinality => 0..n

#country_of_manufactureCountryOfManufacture

Returns:

  • (CountryOfManufacture)


21
# File 'lib/onix/product_part.rb', line 21

element "CountryOfManufacture", :subset, :cardinality => 0..1

#file_descriptionArray<String>

Returns:

  • (Array<String>)


16
# File 'lib/onix/product_part.rb', line 16

elements "ProductFormDescription", :text, :shortcut => :file_description, :cardinality => 0..n

#file_formatString

digital file format string (Epub,Pdf,AmazonKindle)

Returns:

  • (String)


43
44
45
# File 'lib/onix/product_part.rb', line 43

def file_format
  file_formats.first.human if file_formats.first
end

#file_formatsObject



23
24
25
# File 'lib/onix/product_part.rb', line 23

def file_formats
  @product_form_details.select { |fd| fd.code =~ /^E1.*/ }
end

#file_mimetypeString

digital file format mimetype

Returns:

  • (String)


49
50
51
52
53
# File 'lib/onix/product_part.rb', line 49

def file_mimetype
  if file_formats.first
    file_formats.first.mimetype
  end
end

#filesizeInteger

digital file filesize in bytes

Returns:

  • (Integer)


96
97
98
99
100
# File 'lib/onix/product_part.rb', line 96

def filesize
  if product
    product.filesize
  end
end

#formProductForm

shortcut for #product_form

Returns:



9
# File 'lib/onix/product_part.rb', line 9

element "ProductForm", :subset, :shortcut => :form, :cardinality => 1

#form_detailsArray<ProductFormDetail>

shortcut for #product_form_details

Returns:



10
# File 'lib/onix/product_part.rb', line 10

elements "ProductFormDetail", :subset, :shortcut => :form_details, :cardinality => 0..n

#identifiersArray<ProductIdentifier>

shortcut for #product_identifiers

Returns:



8
# File 'lib/onix/product_part.rb', line 8

elements "ProductIdentifier", :subset, :shortcut => :identifiers, :cardinality => 0..n

#measuresArray<Measure>

Returns:



18
# File 'lib/onix/product_part.rb', line 18

elements "Measure", :subset, :cardinality => 0..n

#number_of_copiesInteger

Returns:

  • (Integer)


20
# File 'lib/onix/product_part.rb', line 20

element "NumberOfCopies", :integer, :cardinality => 0..1

#number_of_items_of_this_formInteger

Returns:

  • (Integer)


19
# File 'lib/onix/product_part.rb', line 19

element "NumberOfItemsOfThisForm", :integer, :cardinality => 0..1

#primary_partBoolean

Returns:

  • (Boolean)


7
# File 'lib/onix/product_part.rb', line 7

element "PrimaryPart", :bool, :cardinality => 0..1

#product_content_typesArray<ProductContentType>

Returns:



17
# File 'lib/onix/product_part.rb', line 17

elements "ProductContentType", :subset, :shortcut => :content_types, :cardinality => 0..n

#product_formProductForm

Returns:



9
# File 'lib/onix/product_part.rb', line 9

element "ProductForm", :subset, :shortcut => :form, :cardinality => 1

#product_form_descriptionProductFormDescription

Returns:

  • (ProductFormDescription)


28
29
30
# File 'lib/onix/product_part.rb', line 28

def product_form_description
  product_form_descriptions.first
end

#product_form_descriptionsArray<String>

Returns:

  • (Array<String>)


16
# File 'lib/onix/product_part.rb', line 16

elements "ProductFormDescription", :text, :shortcut => :file_description, :cardinality => 0..n

#product_form_detailsArray<ProductFormDetail>

Returns:



10
# File 'lib/onix/product_part.rb', line 10

elements "ProductFormDetail", :subset, :shortcut => :form_details, :cardinality => 0..n

#product_form_featuresArray<ProductFormFeature>

Returns:



11
# File 'lib/onix/product_part.rb', line 11

elements "ProductFormFeature", :subset, :cardinality => 0..n

#product_identifiersArray<ProductIdentifier>

Returns:



8
# File 'lib/onix/product_part.rb', line 8

elements "ProductIdentifier", :subset, :shortcut => :identifiers, :cardinality => 0..n

#protection_typeString

Protection type string (None, Watermarking, DRM, AdobeDRM)

Returns:

  • (String)


72
73
74
75
76
77
78
79
80
# File 'lib/onix/product_part.rb', line 72

def protection_type
  if product
    product.protection_type
  else
    if part_of
      part_of.protection_type
    end
  end
end

#protectionsArray<String>

List of protections type string (None, Watermarking, DRM, AdobeDRM)

Returns:

  • (Array<String>)


84
85
86
87
88
89
90
91
92
# File 'lib/onix/product_part.rb', line 84

def protections
  if product
    product.protections
  else
    if part_of
      part_of.protections
    end
  end
end

#raw_file_descriptionString

raw part file description string without HTML

Returns:

  • (String)


64
65
66
67
68
# File 'lib/onix/product_part.rb', line 64

def raw_file_description
  if product_form_description
    Helper.strip_html(product_form_description).gsub(/\s+/, " ").strip
  end
end

#reflowable?Boolean

is digital file reflowable ?

Returns:

  • (Boolean)


57
58
59
60
# File 'lib/onix/product_part.rb', line 57

def reflowable?
  return true if @product_form_details.select { |fd| fd.code == "E200" }.length > 0
  return false if @product_form_details.select { |fd| fd.code == "E201" }.length > 0
end