class Zotero::Entities::Collection

Attributes

name[R]

Public Class Methods

new(api, data) click to toggle source
# File lib/zotero/entities/collection.rb, line 4
def initialize(api, data)
  @api = api

  @key = data['key']
  @no_entries = 0 == data['meta']['numItems']
  @no_collections = 0 == data['meta']['numCollections']
  @name = data['data']['name']
end

Public Instance Methods

collections() click to toggle source
# File lib/zotero/entities/collection.rb, line 13
def collections
  @collections ||= get_collections
end
entries() click to toggle source
# File lib/zotero/entities/collection.rb, line 17
def entries
  @entries ||= get_entries
end
preload() click to toggle source

Eager-load all entries and child collections

# File lib/zotero/entities/collection.rb, line 30
def preload
  entries
  collections.each &:preload
  nil
end
to_h() click to toggle source
# File lib/zotero/entities/collection.rb, line 21
def to_h
  {
    name: name, 
    collections: collections.collect(&:to_h),
    entries: entries.collect(&:to_h)
  }.symbolize_keys
end

Private Instance Methods

get_collections() click to toggle source
# File lib/zotero/entities/collection.rb, line 38
def get_collections
  return [] if @no_collections

  @api.get("collections/#{@key}/collections").collect {|data|
    ::Zotero::Entities::Collection.new @api, data
  }.sort {|a, b|
    a.name <=> b.name
  }
end
get_entries() click to toggle source
# File lib/zotero/entities/collection.rb, line 48
def get_entries
  return [] if @no_entries

  @api.get("collections/#{@key}/items").select {|data|
    'attachment' != data['data']['itemType']
  }.collect { |data|
    ::Zotero::Entities::Entry.new data
  }.sort {|a, b|
    a.creator_sort_string <=> b.creator_sort_string
  }
end