Sha256: f3f74c214b37cfe89089e8978d7f666a9898438fb7e21c4902ea2ab1daa9c579

Contents?: true

Size: 1.26 KB

Versions: 19

Compression:

Stored size: 1.26 KB

Contents

require "thor"
require "relaton"
require_relative "cli/command"

module Relaton
  def self.db
    Cli.relaton
  end

  module Cli
    class RelatonDb
      include Singleton

      def db
        @db ||= Relaton::Db.new("#{Dir.home}/.relaton/cache", nil)
      end
    end

    def self.start(arguments)
      Relaton::Cli::Command.start(arguments)
    end

    # Relaton
    #
    # Based on current setup, we need to initiate a Db instance to
    # register all of it's supported processor backends. To make it
    # easier we have added it as a class method so we can use this
    # whenever necessary.
    #
    def self.relaton
      RelatonDb.instance.db
    end

    # @param content [Nokogiri::XML::Document]
    # @return [RelatonBib::BibliographicItem, RelatonIsoBib::IsoBibliongraphicItem]
    def self.parse_xml(doc)
      if (processor = Relaton::Registry.instance.by_type(Relaton::Cli.doctype(doc)))
        processor.from_xml(doc.to_s)
      else
        RelatonBib::XMLParser.from_xml(doc.to_s)
      end
    end

    # @param content [Nokogiri::XML::Document] Document
    # @return [String] Type prefix
    def self.doctype(doc)
      docid = doc.at "docidentifier"
      return docid[:type] if docid && docid[:type]

      docid&.text&.match(/^\w+/)&.to_s
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
relaton-cli-1.1.3 lib/relaton/cli.rb
relaton-cli-1.1.2 lib/relaton/cli.rb
relaton-cli-1.1.1 lib/relaton/cli.rb
relaton-cli-1.1.0 lib/relaton/cli.rb
relaton-cli-1.0.3 lib/relaton/cli.rb
relaton-cli-1.0.2 lib/relaton/cli.rb
relaton-cli-1.0.1 lib/relaton/cli.rb
relaton-cli-1.0.0 lib/relaton/cli.rb
relaton-cli-0.9.0 lib/relaton/cli.rb
relaton-cli-0.8.7 lib/relaton/cli.rb
relaton-cli-0.8.6 lib/relaton/cli.rb
relaton-cli-0.8.5 lib/relaton/cli.rb
relaton-cli-0.8.4 lib/relaton/cli.rb
relaton-cli-0.8.3 lib/relaton/cli.rb
relaton-cli-0.8.2 lib/relaton/cli.rb
relaton-cli-0.8.1 lib/relaton/cli.rb
relaton-cli-0.8.0 lib/relaton/cli.rb
relaton-cli-0.7.0 lib/relaton/cli.rb
relaton-cli-0.6.0 lib/relaton/cli.rb