No commit activity in last 3 years
No release in over 3 years
Gem created for comparing eLibri xml objects. More info coming soon. Currently working and tested only on REE. Basic usage: Elibri::XmlVersions.new(product_ver1, product_ver2).diff it will return hash: {:added => [], :changes => [], :deleted => []}
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Build Status

Gem created for comparing eLibri xml objects.

Currently working and tested on 1.8 version of Ruby (REE, jRuby 1.8, Ruby 1.8.7).

Basic usage: Elibri::XmlVersions.new(product_ver1, product_ver2).diff

product_ver1 and product_ver2 must be same classes

It will return hash:

{
  :added => [],
  :changes => [], 
  :deleted => []
  }

In case of comparising Elibri products:

  • added and deleted may contain only: contributors, related_products, languages, measures, supply_details, measures, title_details, collections, extents, subjects, audience_ranges, text_contents, supporting_resources, sales_restrictions, authors, ghostwriters, scenarists, originators, illustrators, photographers, author_of_prefaces, drawers, cover_designers, inked_or_colored_bys, editors, revisors, translators, editor_in_chiefs, read_bys

  • changes may contain all previous mentioned elements as a keys for embedded hashes (meaning changes in embedded elements) and also may contain additional attributes: elibri_dialect, height, width, thickness, weight, ean, isbn13, number_of_pages, duration, file_size, publisher_name, publisher_id, imprint_name, current_state, reading_age_from, reading_age_to, table_of_contents, description, reviews, excerpts, series, title, subtitle, collection_title, collection_part, full_title, original_title, trade_title, parsed_publishing_date, record_reference, deletion_text, cover_type, cover_price, vat, pkwiu, product_composition, product_form, imprint, publisher, product_form, no_contributor, edition_statement, number_of_illustrations, publishing_status, publishing_date, premiere, front_cover, series_names, elibri_product_category1_id, elibri_product_category2_id, preview_exists, short_description

  • If attribute appear as a symbol in changes array, that it means it has been changed between compared products.

  • If hash appears in changes, that means that key of that hash is a embedded relation that has been changed, and in values you will find array containing hashes. In that most inner hashes, key means Elibri internal id of element changed and value is symbol for attribute changed.

  • In added and deleted arrays you will find objects that needed to be removed or added to your local copy of Elibri object.

under changes key, will be array of symbol and/or hashes. If there is change deeper in structure it will be represented like this: :changes => [{:contributors => [{2167055520 => :key_names}] Symbols represents attributes that in product_ver2 are different then in product_ver1. If there is hash in changes key, it represents some changes in object that is in one <-> one relation with product_ver2.

Added and deleted contains array of hashes. Every hash has symbol as a key, that is used to access array of elements where changes occures. As a value it contains array of elements that has been added/deleted from product_ver2, in comparision to product_ver1.

Example of result, when comparing two elibri products, when full_title changed and in contributors name of one changes. Also it adds a new language and delete one text_content.

{
  :added => [<Elibri::ONIX::Release_3_0::Language>],
  :changes => [:full_title, {:contributors => [ {123456 => :name} ] } ],
  :deleted => [<Elibri::ONIX::Release_3_0::TextContent>]
}