Class: Obp::Access

Inherits:
Object
  • Object
show all
Defined in:
lib/obp/access.rb,
lib/obp/access/cli.rb,
lib/obp/access/urn.rb,
lib/obp/access/imager.rb,
lib/obp/access/parser.rb,
lib/obp/access/catalog.rb,
lib/obp/access/fetcher.rb,
lib/obp/access/version.rb,
lib/obp/access/renderer.rb,
lib/obp/access/converter.rb,
lib/obp/access/retriever.rb,
lib/obp/access/deliverable.rb,
lib/obp/access/table_mapper.rb,
lib/obp/access/elements/base.rb,
lib/obp/access/elements/list.rb,
lib/obp/access/elements/root.rb,
lib/obp/access/elements/array.rb,
lib/obp/access/elements/index.rb,
lib/obp/access/elements/title.rb,
lib/obp/access/grammar_parser.rb,
lib/obp/access/elements/figure.rb,
lib/obp/access/inline_renderer.rb,
lib/obp/access/raw_html_parser.rb,
lib/obp/access/domain_extractor.rb,
lib/obp/access/element_registry.rb,
lib/obp/access/elements/section.rb,
lib/obp/access/elements/copyright.rb,
lib/obp/access/elements/footnotes.rb,
lib/obp/access/elements/paragraph.rb,
lib/obp/access/elements/table_wrap.rb,
lib/obp/access/elements/terminology.rb,
lib/obp/access/table_term_extractor.rb,
lib/obp/access/elements/bibliography.rb,
lib/obp/access/elements/disp_formula.rb,
lib/obp/access/elements/figure_group.rb,
lib/obp/access/elements/introduction.rb,
lib/obp/access/elements/section_type.rb,
lib/obp/access/elements/section_title.rb,
lib/obp/access/elements/terminology/tig.rb,
lib/obp/access/elements/terminology/base.rb,
lib/obp/access/elements/terminology/note.rb,
lib/obp/access/elements/non_normative_note.rb,
lib/obp/access/elements/terminology/source.rb,
lib/obp/access/elements/terminology/example.rb,
lib/obp/access/elements/bibliography/bib_ref.rb,
lib/obp/access/elements/non_normative_example.rb,
lib/obp/access/elements/protected_content_note.rb,
lib/obp/access/elements/terminology/definition.rb,
lib/obp/access/elements/terminology/tig_admitted.rb,
lib/obp/access/elements/terminology/tig_preferred.rb,
lib/obp/access/elements/terminology/tig_deprecated.rb

Defined Under Namespace

Modules: InlineRenderer Classes: CLI, Catalog, Converter, Deliverable, DomainExtractor, ElementRegistry, Fetcher, GrammarParser, Imager, Parser, RawHtmlParser, Renderer, Retriever, TableMapper, TableTermExtractor, Urn

Constant Summary collapse

BASE_URL =
"https://www.iso.org".freeze
API_URL =
"#{BASE_URL}/obp/ui".freeze
VERSION =
"0.1.7".freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(urn, html: nil, caption: nil, titles: nil) ⇒ Access

Returns a new instance of Access.



97
98
99
100
101
102
# File 'lib/obp/access.rb', line 97

def initialize(urn, html: nil, caption: nil, titles: nil)
  @urn = urn
  @raw_html = html
  @caption = caption
  @raw_titles = titles
end

Instance Attribute Details

#urnObject (readonly)

Returns the value of attribute urn.



65
66
67
# File 'lib/obp/access.rb', line 65

def urn
  @urn
end

Class Method Details

.fetch(urn) ⇒ Object

Raises:



67
68
69
70
71
# File 'lib/obp/access.rb', line 67

def self.fetch(urn)
  raise ArgumentError, "URN is required" unless urn

  new(Urn.new(urn))
end

.fetch_all(urn, languages:) ⇒ Object



73
74
75
76
77
78
# File 'lib/obp/access.rb', line 73

def self.fetch_all(urn, languages:)
  urn = Urn.new(urn)
  available = new(urn).available_languages
  resolved = resolve_languages(urn.language, languages, available)
  resolved.map { |lang| new(Urn.new("#{urn.base}:#{lang}")) }
end

.from_html(urn:, html:, caption: nil, titles: nil) ⇒ Object

Build an Access from an already-downloaded OBP HTML fragment (e.g. captured via a browser or waffle-punch). No network requests are made.

Raises:



82
83
84
85
86
87
# File 'lib/obp/access.rb', line 82

def self.from_html(urn:, html:, caption: nil, titles: nil)
  raise ArgumentError, "URN is required" unless urn
  raise ArgumentError, "HTML is required" unless html

  new(Urn.new(urn), html: html, caption: caption, titles: titles)
end

.resolve_languages(primary, requested, available) ⇒ Object



89
90
91
92
93
94
95
# File 'lib/obp/access.rb', line 89

def self.resolve_languages(primary, requested, available)
  case requested
  when :all then [primary] | available
  when Array then [primary] | (requested & available)
  else [primary]
  end
end

Instance Method Details

#available_languagesObject



131
132
133
# File 'lib/obp/access.rb', line 131

def available_languages
  parser.available_languages
end

#htmlObject

Raw sts-standard HTML fragment as served by the OBP.



136
137
138
# File 'lib/obp/access.rb', line 136

def html
  parser.html
end

#to_stsObject



109
110
111
# File 'lib/obp/access.rb', line 109

def to_sts
  Sts::NisoSts::Standard.from_xml(to_xml)
end

#to_tablesObject

YAML serialization of every table in the OBP preview HTML (TableMapper's generic table model).



115
116
117
# File 'lib/obp/access.rb', line 115

def to_tables
  table_mapper.to_yaml
end

#to_termsObject

YAML serialization of term entries extracted from the document's term-carrying tables (TableTermExtractor over the table model).



121
122
123
# File 'lib/obp/access.rb', line 121

def to_terms
  TableTermExtractor.new(tables: table_mapper.tables).to_yaml
end

#to_xml(pretty: false) ⇒ Object



104
105
106
107
# File 'lib/obp/access.rb', line 104

def to_xml(pretty: false)
  xml = parser.to_xml
  pretty ? pretty_print(xml) : xml
end

#to_xml_fileObject



125
126
127
128
129
# File 'lib/obp/access.rb', line 125

def to_xml_file
  path = File.join(tmpdir, "#{urn.safe}.xml")
  File.write(path, to_xml(pretty: true))
  path
end