Method: Metanorma::CollectionRenderer#read_files

Defined in:
lib/metanorma/collection_fileprocess.rb

#read_files(path) ⇒ Hash{String=>Hash}

hash for each document in collection of document identifier to: document reference (fileref or id), type of document reference, and bibdata entry for that file

Parameters:

  • path (String)

    path to collection

Returns:

  • (Hash{String=>Hash})


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/metanorma/collection_fileprocess.rb', line 15

def read_files(path) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
  files = {}
  @xml.xpath(ns("//docref")).each do |d|
    identifier = d.at(ns("./identifier")).children.to_xml
    files[identifier] = file_entry(d, identifier, path)
    if files[identifier][:attachment]
      files[identifier][:bibdata] = Metanorma::Document
        .attachment_bibitem(identifier).root
    else
      file, _filename = targetfile(files[identifier], read: true)
      xml = Nokogiri::XML(file)
      add_document_suffix(identifier, xml)
      files[identifier][:anchors] = read_anchors(xml)
      files[identifier][:bibdata] = xml.at(ns("//bibdata"))
    end
    files[identifier][:bibitem] = files[identifier][:bibdata].dup
    files[identifier][:bibitem].name = "bibitem"
    files[identifier][:bibitem]["hidden"] = "true"
    files[identifier][:bibitem]&.at("./*[local-name() = 'ext']")&.remove
  end
  add_section_split(files)
end