Class: RelatonIso::Index

Inherits:
Object
  • Object
show all
Defined in:
lib/relaton_iso/index.rb

Overview

Index.

Instance Method Summary collapse

Constructor Details

#initialize(file = nil) ⇒ Index

Initialise index. If file path is given, read index from file. If file is not given, look for it in a ‘/home/USER/.relaton/iso` directory. If file doesn’t exist, or is outdated then fetch index from GitHub.

Parameters:

  • file (String, nil) (defaults to: nil)

    path to index file.



11
12
13
# File 'lib/relaton_iso/index.rb', line 11

def initialize(file = nil)
  @file = file
end

Instance Method Details

#<<(item) ⇒ void

This method returns an undefined value.

Add or update index entry.

Parameters:

  • item (RelatonIsoBib::IsoBibliographicItem)

    document



31
32
33
34
35
36
37
38
39
# File 'lib/relaton_iso/index.rb', line 31

def <<(item)
  id = item.docidentifier.detect(&:primary).id
  row = self[id] || begin
    r = { id: id }
    index << r
    r
  end
  row[:title] = item.title.first.title.content
end

#[](id) ⇒ Hash

Fetch document from index by ID.

Parameters:

  • id (String)

    document ID

Returns:

  • (Hash)

    index entry



48
49
50
# File 'lib/relaton_iso/index.rb', line 48

def [](id)
  index.detect { |i| i[:id] == id }
end

#indexArray<Hash>

Create index.

Returns:

  • (Array<Hash>)

    index



20
21
22
# File 'lib/relaton_iso/index.rb', line 20

def index
  @index ||= read_index || read_from_user_dir || fetch_index
end

#savevoid

This method returns an undefined value.

Save index to file.



57
58
59
# File 'lib/relaton_iso/index.rb', line 57

def save
  serialize_and_save index
end