Class: Obp::Access
- Inherits:
-
Object
- Object
- Obp::Access
- 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
-
#urn ⇒ Object
readonly
Returns the value of attribute urn.
Class Method Summary collapse
- .fetch(urn) ⇒ Object
- .fetch_all(urn, languages:) ⇒ Object
-
.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).
- .resolve_languages(primary, requested, available) ⇒ Object
Instance Method Summary collapse
- #available_languages ⇒ Object
-
#html ⇒ Object
Raw sts-standard HTML fragment as served by the OBP.
-
#initialize(urn, html: nil, caption: nil, titles: nil) ⇒ Access
constructor
A new instance of Access.
- #to_sts ⇒ Object
-
#to_tables ⇒ Object
YAML serialization of every table in the OBP preview HTML (TableMapper's generic table model).
-
#to_terms ⇒ Object
YAML serialization of term entries extracted from the document's term-carrying tables (TableTermExtractor over the table model).
- #to_xml(pretty: false) ⇒ Object
- #to_xml_file ⇒ Object
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
#urn ⇒ Object (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
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.
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_languages ⇒ Object
131 132 133 |
# File 'lib/obp/access.rb', line 131 def available_languages parser.available_languages end |
#html ⇒ Object
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_sts ⇒ Object
109 110 111 |
# File 'lib/obp/access.rb', line 109 def to_sts Sts::NisoSts::Standard.from_xml(to_xml) end |
#to_tables ⇒ Object
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_terms ⇒ Object
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_file ⇒ Object
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 |