obp-access 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +22 -9
- data/.rubocop_todo.yml +108 -1
- data/CLAUDE.md +13 -6
- data/README.adoc +132 -0
- data/lib/obp/access/element_registry.rb +3 -1
- data/lib/obp/access/elements/base.rb +8 -3
- data/lib/obp/access/elements/disp_formula.rb +53 -0
- data/lib/obp/access/elements/footnotes.rb +54 -0
- data/lib/obp/access/elements/non_normative_example.rb +28 -0
- data/lib/obp/access/elements/protected_content_note.rb +25 -0
- data/lib/obp/access/elements/root.rb +12 -20
- data/lib/obp/access/elements/table_wrap.rb +17 -3
- data/lib/obp/access/fetcher.rb +4 -1
- data/lib/obp/access/inline_renderer.rb +4 -1
- data/lib/obp/access/parser.rb +1 -1
- data/lib/obp/access/raw_html_parser.rb +41 -0
- data/lib/obp/access/renderer.rb +23 -11
- data/lib/obp/access/table_mapper.rb +117 -0
- data/lib/obp/access/table_term_extractor.rb +248 -0
- data/lib/obp/access/urn.rb +55 -0
- data/lib/obp/access/version.rb +1 -1
- data/lib/obp/access.rb +49 -2
- data/obp-access.gemspec +33 -0
- metadata +10 -2
data/lib/obp/access.rb
CHANGED
|
@@ -16,9 +16,12 @@ require_relative "access/retriever"
|
|
|
16
16
|
require_relative "access/fetcher"
|
|
17
17
|
require_relative "access/element_registry"
|
|
18
18
|
require_relative "access/parser"
|
|
19
|
+
require_relative "access/raw_html_parser"
|
|
19
20
|
require_relative "access/converter"
|
|
20
21
|
require_relative "access/imager"
|
|
21
22
|
require_relative "access/renderer"
|
|
23
|
+
require_relative "access/table_mapper"
|
|
24
|
+
require_relative "access/table_term_extractor"
|
|
22
25
|
require_relative "access/cli"
|
|
23
26
|
|
|
24
27
|
require_relative "access/elements/base"
|
|
@@ -36,6 +39,10 @@ require_relative "access/elements/table_wrap"
|
|
|
36
39
|
require_relative "access/elements/title"
|
|
37
40
|
require_relative "access/elements/paragraph"
|
|
38
41
|
require_relative "access/elements/non_normative_note"
|
|
42
|
+
require_relative "access/elements/non_normative_example"
|
|
43
|
+
require_relative "access/elements/disp_formula"
|
|
44
|
+
require_relative "access/elements/footnotes"
|
|
45
|
+
require_relative "access/elements/protected_content_note"
|
|
39
46
|
require_relative "access/elements/copyright"
|
|
40
47
|
require_relative "access/elements/bibliography"
|
|
41
48
|
require_relative "access/elements/terminology"
|
|
@@ -70,6 +77,15 @@ module Obp
|
|
|
70
77
|
resolved.map { |lang| new(Urn.new("#{urn.base}:#{lang}")) }
|
|
71
78
|
end
|
|
72
79
|
|
|
80
|
+
# Build an Access from an already-downloaded OBP HTML fragment (e.g.
|
|
81
|
+
# captured via a browser or waffle-punch). No network requests are made.
|
|
82
|
+
def self.from_html(urn:, html:, caption: nil, titles: nil)
|
|
83
|
+
raise ArgumentError, "URN is required" unless urn
|
|
84
|
+
raise ArgumentError, "HTML is required" unless html
|
|
85
|
+
|
|
86
|
+
new(Urn.new(urn), html: html, caption: caption, titles: titles)
|
|
87
|
+
end
|
|
88
|
+
|
|
73
89
|
def self.resolve_languages(primary, requested, available)
|
|
74
90
|
case requested
|
|
75
91
|
when :all then [primary] | available
|
|
@@ -78,8 +94,11 @@ module Obp
|
|
|
78
94
|
end
|
|
79
95
|
end
|
|
80
96
|
|
|
81
|
-
def initialize(urn)
|
|
97
|
+
def initialize(urn, html: nil, caption: nil, titles: nil)
|
|
82
98
|
@urn = urn
|
|
99
|
+
@raw_html = html
|
|
100
|
+
@caption = caption
|
|
101
|
+
@raw_titles = titles
|
|
83
102
|
end
|
|
84
103
|
|
|
85
104
|
def to_xml(pretty: false)
|
|
@@ -91,6 +110,18 @@ module Obp
|
|
|
91
110
|
Sts::NisoSts::Standard.from_xml(to_xml)
|
|
92
111
|
end
|
|
93
112
|
|
|
113
|
+
# YAML serialization of every table in the OBP preview HTML
|
|
114
|
+
# (TableMapper's generic table model).
|
|
115
|
+
def to_tables
|
|
116
|
+
table_mapper.to_yaml
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# YAML serialization of term entries extracted from the document's
|
|
120
|
+
# term-carrying tables (TableTermExtractor over the table model).
|
|
121
|
+
def to_terms
|
|
122
|
+
TableTermExtractor.new(tables: table_mapper.tables).to_yaml
|
|
123
|
+
end
|
|
124
|
+
|
|
94
125
|
def to_xml_file
|
|
95
126
|
path = File.join(tmpdir, "#{urn.safe}.xml")
|
|
96
127
|
File.write(path, to_xml(pretty: true))
|
|
@@ -101,10 +132,26 @@ module Obp
|
|
|
101
132
|
parser.available_languages
|
|
102
133
|
end
|
|
103
134
|
|
|
135
|
+
# Raw sts-standard HTML fragment as served by the OBP.
|
|
136
|
+
def html
|
|
137
|
+
parser.html
|
|
138
|
+
end
|
|
139
|
+
|
|
104
140
|
private
|
|
105
141
|
|
|
106
142
|
def parser
|
|
107
|
-
@parser ||=
|
|
143
|
+
@parser ||= if @raw_html
|
|
144
|
+
RawHtmlParser.new(urn:, directory: tmpdir, html: @raw_html,
|
|
145
|
+
caption: @caption, titles: @raw_titles)
|
|
146
|
+
else
|
|
147
|
+
Parser.new(urn:, directory: tmpdir)
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# Shares Parser#html (memoized) with the STS conversion path, so
|
|
152
|
+
# reading tables does not re-POST to the OBP.
|
|
153
|
+
def table_mapper
|
|
154
|
+
@table_mapper ||= TableMapper.new(source: parser.html)
|
|
108
155
|
end
|
|
109
156
|
|
|
110
157
|
def pretty_print(xml)
|
data/obp-access.gemspec
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "lib/obp/access/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = "obp-access"
|
|
7
|
+
spec.version = Obp::Access::VERSION
|
|
8
|
+
spec.authors = ["Ribose Inc."]
|
|
9
|
+
spec.email = ["open.source@ribose.com"]
|
|
10
|
+
|
|
11
|
+
spec.summary = ""
|
|
12
|
+
spec.description = ""
|
|
13
|
+
spec.homepage = ""
|
|
14
|
+
spec.required_ruby_version = ">= 3.1"
|
|
15
|
+
|
|
16
|
+
# Specify which files should be added to the gem when it is released.
|
|
17
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
18
|
+
spec.files = Dir.chdir(__dir__) do
|
|
19
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
|
20
|
+
(File.expand_path(f) == __FILE__) ||
|
|
21
|
+
f.start_with?(*%w[bin/ test/ spec/ features/ .git .github appveyor
|
|
22
|
+
Gemfile])
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
spec.bindir = "exe"
|
|
26
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
|
27
|
+
spec.require_paths = ["lib"]
|
|
28
|
+
spec.add_dependency "nokogiri"
|
|
29
|
+
spec.add_dependency "parallel"
|
|
30
|
+
spec.add_dependency "sts"
|
|
31
|
+
spec.add_dependency "thor"
|
|
32
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
|
33
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: obp-access
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-09-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: nokogiri
|
|
@@ -93,13 +93,17 @@ files:
|
|
|
93
93
|
- lib/obp/access/elements/bibliography.rb
|
|
94
94
|
- lib/obp/access/elements/bibliography/bib_ref.rb
|
|
95
95
|
- lib/obp/access/elements/copyright.rb
|
|
96
|
+
- lib/obp/access/elements/disp_formula.rb
|
|
96
97
|
- lib/obp/access/elements/figure.rb
|
|
97
98
|
- lib/obp/access/elements/figure_group.rb
|
|
99
|
+
- lib/obp/access/elements/footnotes.rb
|
|
98
100
|
- lib/obp/access/elements/index.rb
|
|
99
101
|
- lib/obp/access/elements/introduction.rb
|
|
100
102
|
- lib/obp/access/elements/list.rb
|
|
103
|
+
- lib/obp/access/elements/non_normative_example.rb
|
|
101
104
|
- lib/obp/access/elements/non_normative_note.rb
|
|
102
105
|
- lib/obp/access/elements/paragraph.rb
|
|
106
|
+
- lib/obp/access/elements/protected_content_note.rb
|
|
103
107
|
- lib/obp/access/elements/root.rb
|
|
104
108
|
- lib/obp/access/elements/section.rb
|
|
105
109
|
- lib/obp/access/elements/section_title.rb
|
|
@@ -121,10 +125,14 @@ files:
|
|
|
121
125
|
- lib/obp/access/imager.rb
|
|
122
126
|
- lib/obp/access/inline_renderer.rb
|
|
123
127
|
- lib/obp/access/parser.rb
|
|
128
|
+
- lib/obp/access/raw_html_parser.rb
|
|
124
129
|
- lib/obp/access/renderer.rb
|
|
125
130
|
- lib/obp/access/retriever.rb
|
|
131
|
+
- lib/obp/access/table_mapper.rb
|
|
132
|
+
- lib/obp/access/table_term_extractor.rb
|
|
126
133
|
- lib/obp/access/urn.rb
|
|
127
134
|
- lib/obp/access/version.rb
|
|
135
|
+
- obp-access.gemspec
|
|
128
136
|
homepage: ''
|
|
129
137
|
licenses: []
|
|
130
138
|
metadata:
|