ttl2html 1.3.2 → 1.3.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 536529ac6440329179bab71d30e570dc92efb464526f5a0a019c59823f67098c
4
- data.tar.gz: 4f251ed59bc227e77f80fe3ea88ea1e14e99c10ece1bb7b156d0b19f98518663
3
+ metadata.gz: 64841e5acabefa8d0ff72ab9a5b342d2cb8c6a5f3ecbcce5d70d9c223ae6f694
4
+ data.tar.gz: 4c17bd90212017eccb86e6b96d3d2d1fe87c13841f5a0003a8f19d3e011aa1c0
5
5
  SHA512:
6
- metadata.gz: 7e760bdb6848470e2e2327803e7f527684fa8e703f053cd0fda5eadc374bcaa7aeb837064f018a353f2e7c80b4845994db26106c8b139cdde9bf4e6c501f1254
7
- data.tar.gz: 7cb13bd5ae523ef8ac62c843f27f1ce5f65efd70e035c35f35b6062e104b5c89e87d19c8ac4e7778ca0ce6b9881e1bbca92c5c34cda37793cc96add9679d66ff
6
+ metadata.gz: dd727e999f72c76af779008495bb858eb27bbf05f4e79b8ac9aeee0c61e3b225f8d5710209dcc29538fa7133c0c4da93573e864b2144447840b36ddb22306b36
7
+ data.tar.gz: 24fd2e31ebd3df0eb3ee62c62005356f6c66ab7b43697a7e1d82206314d1c038038bc44f145035f7aae87506878f19e458c265a1ebcb2a6fe9b389e70f40ce66
data/bin/ttl2html CHANGED
@@ -37,6 +37,5 @@ end
37
37
  if opt_cleanup
38
38
  ttl2html.cleanup
39
39
  else
40
- ttl2html.output_html_files
41
- ttl2html.output_turtle_files
40
+ ttl2html.output_files
42
41
  end
@@ -15,7 +15,7 @@ module TTL2HTML
15
15
  def initialize(template, param = {})
16
16
  @template = template
17
17
  @param = param.dup
18
- @template_path = [ Dir.pwd, File.join(Dir.pwd, "templates") ]
18
+ @template_path = [ File.join(Dir.pwd, "templates") ]
19
19
  @template_path << File.join(File.dirname(__FILE__), "..", "..", "templates")
20
20
  I18n.load_path << Dir[File.join(File.dirname(__FILE__), "..", "..", "locales") + "/*.yml"]
21
21
  I18n.load_path << Dir[File.expand_path("locales") + "/*.yml"]
@@ -39,7 +39,7 @@ module TTL2HTML
39
39
  @param.update(param)
40
40
  template = find_template_path(template)
41
41
  tmpl = open(template){|io| io.read }
42
- erb = ERB.new(tmpl, nil, "-")
42
+ erb = ERB.new(tmpl, trim_mode: "-")
43
43
  erb.filename = template
44
44
  erb.result(binding)
45
45
  end
@@ -143,10 +143,16 @@ module TTL2HTML
143
143
  path
144
144
  end
145
145
  def relative_path(dest)
146
- src = @param[:output_file]
147
- src = Pathname.new(src).relative_path_from(Pathname.new(@param[:output_dir])) if @param[:output_dir]
148
- path = Pathname(dest).relative_path_from(Pathname(File.dirname src))
149
- path = path.to_s + "/" if File.directory? path
146
+ path = nil
147
+ dest_uri = RDF::IRI.parse(dest)
148
+ if dest_uri.absolute?
149
+ path = dest
150
+ else
151
+ src = @param[:output_file]
152
+ src = Pathname.new(src).relative_path_from(Pathname.new(@param[:output_dir])) if @param[:output_dir]
153
+ path = Pathname(dest).relative_path_from(Pathname(File.dirname src))
154
+ path = path.to_s + "/" if File.directory? path
155
+ end
150
156
  path
151
157
  end
152
158
  def relative_path_uri(dest_uri, base_uri)
@@ -160,8 +166,12 @@ module TTL2HTML
160
166
  end
161
167
  def html_title(param)
162
168
  titles = []
163
- titles << param[:title]
164
- titles << param[:site_title]
169
+ if @template.start_with? "about.html"
170
+ titles << t("about.title", title: param[:site_title])
171
+ else
172
+ titles << param[:title]
173
+ titles << param[:site_title]
174
+ end
165
175
  titles.compact.join(" - ")
166
176
  end
167
177
  def shorten_title(title, length = 140)
@@ -172,6 +182,7 @@ module TTL2HTML
172
182
  end
173
183
  end
174
184
  def get_title(data, default_title = "no title")
185
+ return default_title if data.nil?
175
186
  if @param[:title_property_perclass] and data["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"]
176
187
  @param[:title_property_perclass].each do |klass, property|
177
188
  if data["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"].include?(klass) and data[property]
@@ -1 +1 @@
1
- TTL2HTML::VERSION = "1.3.2"
1
+ TTL2HTML::VERSION = "1.3.3"
data/lib/ttl2html.rb CHANGED
@@ -22,9 +22,11 @@ module TTL2HTML
22
22
  end
23
23
 
24
24
  def load_config(file)
25
- config = {}
26
- YAML.load_file(file).each do |k, v|
27
- config[k.intern] = v
25
+ config = { output_turtle: true }
26
+ open(file) do |io|
27
+ YAML.safe_load(io, permitted_classes: [Regexp]).each do |k, v|
28
+ config[k.intern] = v
29
+ end
28
30
  end
29
31
  config
30
32
  end
@@ -140,7 +142,7 @@ module TTL2HTML
140
142
  template = Template.new("default.html.erb", @config)
141
143
  param = @config.dup
142
144
  param[:uri] = uri
143
- param[:turtle_uri] = uri_mapping_to_path(uri, ".ttl")
145
+ param[:turtle_uri] = uri + ".ttl"
144
146
  param[:data] = v
145
147
  param[:data_inverse] = @data_inverse[uri]
146
148
  param[:data_global] = @data
@@ -167,6 +169,7 @@ module TTL2HTML
167
169
  else
168
170
  template = Template.new("index.html.erb", @config)
169
171
  param = @config.dup
172
+ param[:class_label] = template.get_title(@data[@config[:top_class]], nil)
170
173
  param[:data_global] = @data
171
174
  param[:versions] = versions
172
175
  param[:toplevel] = toplevel
@@ -177,11 +180,12 @@ module TTL2HTML
177
180
  template.output_to(index_html, param)
178
181
  end
179
182
  end
180
- if shapes.size > 0 or versions.size > 0 or toplevel.size > 0
183
+ if template.find_template_path("about.html") or shapes.size > 0 or versions.size > 0 or toplevel.size > 0
181
184
  about_html = @config[:about_file] || "about.html"
182
185
  about_html = File.join(@config[:output_dir], about_html) if @config[:output_dir]
183
186
  template = Template.new("about.html.erb", @config)
184
187
  param = @config.dup
188
+ param[:content] = template.to_html_raw("about.html", {}) if template.find_template_path("about.html")
185
189
  param[:data_global] = @data
186
190
  param[:versions] = versions
187
191
  param[:toplevel] = toplevel
@@ -204,6 +208,7 @@ module TTL2HTML
204
208
  label: label,
205
209
  comment: comment,
206
210
  html: template.expand_shape(@data, subject.to_s, @prefix),
211
+ target_class: target_class,
207
212
  }
208
213
  end
209
214
  template.output_to(about_html, param)
@@ -240,33 +245,37 @@ module TTL2HTML
240
245
  results
241
246
  end
242
247
 
243
- def shapes2labels(shapes)
244
- labels = {}
248
+ def shapes_parse(shapes)
245
249
  shapes.subjects.each do |shape|
246
250
  target_class = @data[shape.to_s]["http://www.w3.org/ns/shacl#targetClass"]&.first
247
251
  if target_class
248
- @data[shape.to_s]["http://www.w3.org/ns/shacl#property"].each do |property|
249
- path = @data[property]["http://www.w3.org/ns/shacl#path"].first
250
- name = @data[property]["http://www.w3.org/ns/shacl#name"]
251
- labels[target_class] ||= {}
252
- labels[target_class][path] = name
252
+ properties = @data[shape.to_s]["http://www.w3.org/ns/shacl#property"]
253
+ if properties
254
+ properties.each do |property|
255
+ path = @data[property]["http://www.w3.org/ns/shacl#path"].first
256
+ yield target_class, property
257
+ end
253
258
  end
254
259
  end
255
260
  end
261
+ end
262
+ def shapes2labels(shapes)
263
+ labels = {}
264
+ shapes_parse(shapes) do |target_class, property|
265
+ path = @data[property]["http://www.w3.org/ns/shacl#path"].first
266
+ name = @data[property]["http://www.w3.org/ns/shacl#name"]
267
+ labels[target_class] ||= {}
268
+ labels[target_class][path] = name
269
+ end
256
270
  labels
257
271
  end
258
272
  def shapes2orders(shapes)
259
273
  orders = {}
260
- shapes.subjects.each do |shape|
261
- target_class = @data[shape.to_s]["http://www.w3.org/ns/shacl#targetClass"]&.first
262
- if target_class
263
- @data[shape.to_s]["http://www.w3.org/ns/shacl#property"].each do |property|
264
- path = @data[property]["http://www.w3.org/ns/shacl#path"].first
265
- order = @data[property]["http://www.w3.org/ns/shacl#order"]
266
- orders[target_class] ||= {}
267
- orders[target_class][path] = order&.first&.to_i
268
- end
269
- end
274
+ shapes_parse(shapes) do |target_class, property|
275
+ path = @data[property]["http://www.w3.org/ns/shacl#path"].first
276
+ order = @data[property]["http://www.w3.org/ns/shacl#order"]
277
+ orders[target_class] ||= {}
278
+ orders[target_class][path] = order&.first&.to_i
270
279
  end
271
280
  orders
272
281
  end
@@ -281,10 +290,12 @@ module TTL2HTML
281
290
  next if not version
282
291
  next if not version["http://www.w3.org/1999/02/22-rdf-syntax-ns#type"].include? "http://rdfs.org/ns/void#Dataset"
283
292
  description = version["http://purl.org/dc/terms/description"]
293
+ link = nil
284
294
  if not description
285
295
  qrev = version["http://www.w3.org/ns/prov#qualifiedRevision"]&.first
286
- if description = @data[qrev]
296
+ if @data[qrev]
287
297
  description = @data[qrev]["http://www.w3.org/2000/01/rdf-schema#comment"]
298
+ link = @data[qrev]["http://www.w3.org/2000/01/rdf-schema#seeAlso"]&.first
288
299
  end
289
300
  end
290
301
  subset = []
@@ -304,6 +315,7 @@ module TTL2HTML
304
315
  date: date,
305
316
  description: description,
306
317
  subset: subset,
318
+ link: link,
307
319
  }
308
320
  end
309
321
  end
@@ -321,10 +333,29 @@ module TTL2HTML
321
333
  license[:icon] = license_data["http://xmlns.com/foaf/0.1/thumbnail"]&.first
322
334
  license[:label] = license_data["http://www.w3.org/2000/01/rdf-schema#label"]
323
335
  end
336
+ if data["http://purl.org/dc/terms/publisher"]
337
+ publisher_data = @data[data["http://purl.org/dc/terms/publisher"].first]
338
+ email = publisher_data["http://xmlns.com/foaf/0.1/mbox"]&.first
339
+ contact = { email: email }
340
+ name = publisher_data["http://xmlns.com/foaf/0.1/name"]
341
+ contact[:name] = name if name
342
+ members = []
343
+ if publisher_data["http://xmlns.com/foaf/0.1/member"]
344
+ publisher_data["http://xmlns.com/foaf/0.1/member"].each do |member|
345
+ member_data = @data[member]
346
+ members << {
347
+ name: member_data["http://xmlns.com/foaf/0.1/name"],
348
+ org: member_data["http://www.w3.org/2006/vcard/ns#organization-name"]
349
+ }
350
+ end
351
+ contact[:members] = members
352
+ end
353
+ end
324
354
  result = {
325
355
  uri: toplevel.to_s,
326
356
  description: data["http://purl.org/dc/terms/description"],
327
357
  license: license,
358
+ contact: contact,
328
359
  }
329
360
  end
330
361
  result
@@ -337,13 +368,21 @@ module TTL2HTML
337
368
  Dir.mkdir @config[:output_dir] if not File.exist? @config[:output_dir]
338
369
  file = File.join(@config[:output_dir], file)
339
370
  end
340
- str = format_turtle(uri)
371
+ dir = File.dirname(file)
372
+ FileUtils.mkdir_p(dir) if not File.exist?(dir)
373
+ str = format_turtle(uri)
341
374
  str << format_turtle_inverse(uri)
342
375
  open(file, "w") do |io|
343
376
  io.puts str.strip
344
377
  end
345
378
  end
346
379
  end
380
+
381
+ def output_files
382
+ output_html_files
383
+ output_turtle_files if @config[:output_turtle]
384
+ end
385
+
347
386
  def uri_mapping_to_path(uri, suffix = ".html")
348
387
  path = nil
349
388
  if @config[:uri_mappings]
@@ -380,10 +419,10 @@ module TTL2HTML
380
419
  end.each do |uri, v|
381
420
  html_file = uri_mapping_to_path(uri, ".html")
382
421
  html_file = File.join(@config[:output_dir], html_file) if @config[:output_dir]
383
- File.unlink html_file
422
+ File.unlink html_file if File.exist? html_file
384
423
  ttl_file = uri_mapping_to_path(uri, ".ttl")
385
424
  ttl_file = File.join(@config[:output_dir], ttl_file) if @config[:output_dir]
386
- File.unlink ttl_file
425
+ File.unlink ttl_file if File.exist? ttl_file
387
426
  dir = uri.sub(@config[:base_uri], "")
388
427
  dir = File.join(@config[:output_dir], dir) if @config[:output_dir]
389
428
  Dir.rmdir dir if File.exist? dir
data/locales/en.yml CHANGED
@@ -1,11 +1,16 @@
1
1
  en:
2
2
  about:
3
3
  title: "About %{title}"
4
- The properties for the textbook resources are as follows:
4
+ shape-heading: "Resources description"
5
5
  shape-note: "The properties for the %{resource} resources are as follows:"
6
+ shape-target: Target class
6
7
  versions: Versions
7
8
  version-release: "Version %{version} released."
8
9
  version-triples: "%{triples} triples"
10
+ version-link: "Please refer to <a href=\"%{link}\">here</a> for the revision details."
11
+ contact: Contact
12
+ contact-contribution: "This dataset was developed by %{name}"
13
+ contact-email: "For dataset inquiries, please contact at <a href=\"%{email}\">%{email}</a>"
9
14
  default:
10
15
  details: Details
11
16
  inverse_data: Referred resources
data/locales/ja.yml CHANGED
@@ -1,10 +1,16 @@
1
1
  ja:
2
2
  about:
3
3
  title: "%{title}について"
4
+ shape-heading: "各リソースの説明"
4
5
  shape-note: "%{resource}リソースが持つプロパティを下表に示します"
6
+ shape-target: 対象クラス
5
7
  versions: 更新履歴
6
8
  version-release: "バージョン%{version}を公開。"
7
9
  version-triples: "%{triples}トリプル"
10
+ version-link: "更新の詳細については<a href=\"%{link}\">こちら</a>をご覧ください。"
11
+ contact: 連絡先
12
+ contact-contribution: "本データセットは %{name} が開発したものです"
13
+ contact-email: "データセットに関する問い合わせは <a href=\"%{email}\">%{email}</a> までお問い合わせください。"
8
14
  default:
9
15
  details: 詳細情報
10
16
  inverse_data: 被参照情報
@@ -17,11 +17,22 @@
17
17
  </nav>
18
18
  </div>
19
19
  </div>
20
- <%- if param[:shapes] -%>
20
+ <%- if param[:content] -%>
21
21
  <div class="row">
22
22
  <div class="col-md">
23
+ <%= param[:content] %>
24
+ </div>
25
+ </div>
26
+ <%- end -%>
27
+ <%- if param[:shapes].size > 0 -%>
28
+ <div class="row">
29
+ <div class="col-md">
30
+ <h2 id="shapes"><%=h t("about.shape-heading") %></h2>
23
31
  <%- param[:shapes].keys.sort.each do |shape| -%>
24
32
  <h3><%=h param[:shapes][shape][:label] %></h3>
33
+ <%- if param[:shapes][shape][:target_class] -%>
34
+ <ul><li><%= t("about.shape-target") %>: <a href="<%=h param[:shapes][shape][:target_class] %>"><%=h param[:shapes][shape][:target_class] %></a></li></ul>
35
+ <%- end -%>
25
36
  <p><%= param[:shapes][shape][:comment] %></p>
26
37
  <p><%=h t("about.shape-note", resource: param[:shapes][shape][:label]) %></p>
27
38
  <%= param[:shapes][shape][:html] -%>
@@ -29,7 +40,7 @@
29
40
  </div>
30
41
  </div>
31
42
  <%- end -%>
32
- <%- if param[:versions] -%>
43
+ <%- if param[:versions].size > 0 -%>
33
44
  <div class="row">
34
45
  <div class="col-md">
35
46
  <h2 id="versions"><%=h t("about.versions") %> <i class="bi bi-info-circle"></i></h2>
@@ -41,4 +52,27 @@
41
52
  </div>
42
53
  </div>
43
54
  <%- end -%>
55
+ <%- if param[:toplevel] and param[:toplevel][:contact] -%>
56
+ <div class="row">
57
+ <div class="col-md">
58
+ <h2 id="contact"><%=h t("about.contact") %></h2>
59
+ <%- if param[:toplevel][:contact][:name] -%>
60
+ <p><%=h t("about.contact-contribution", name: get_language_literal(param[:toplevel][:contact][:name])) %></p>
61
+ <%- end -%>
62
+ <%- if param[:toplevel][:contact][:members] -%>
63
+ <ul>
64
+ <%- param[:toplevel][:contact][:members].each do |member| -%>
65
+ <li><%=h get_language_literal(member[:name]) %>
66
+ <%- if member[:org] -%>
67
+ (<%=h get_language_literal(member[:org]) %>)
68
+ <%- end -%>
69
+ <%- end -%>
70
+ </ul>
71
+ <%- end -%>
72
+ <%- if param[:toplevel][:contact][:email] -%>
73
+ <p><%= t("about.contact-email", email: param[:toplevel][:contact][:email]) %></p>
74
+ <%- end -%>
75
+ </div>
76
+ </div>
77
+ <%- end -%>
44
78
  </div>
@@ -3,34 +3,72 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
6
- <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
7
6
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
8
7
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.1/font/bootstrap-icons.css">
8
+ <%- if param[:css_file] -%>
9
+ <link rel="stylesheet" href="<%=h relative_path(param[:css_file]) %>">
10
+ <%- end -%>
11
+ <%- if param[:custom_css] -%>
12
+ <style type="text/css"><%=h param[:custom_css] %></style>
13
+ <%- end -%>
9
14
  <title><%=h html_title(param) %></title>
10
15
  <meta name="twitter:card" content="summary">
11
16
  <meta name="twitter:title" content="<%=h html_title(param) %>">
17
+ <meta property="og:title" content="<%=h html_title(param) %>">
18
+ <meta property="og:type" content="website">
19
+ <%- if param[:uri] -%>
20
+ <meta property="og:url" content="<%=h param[:uri] %>">
21
+ <%- end -%>
22
+ <%- if param[:logo] -%>
23
+ <meta property="og:image" content="<%=h URI.parse(param[:base_uri]) + param[:logo] %>">
24
+ <%- end -%>
25
+ <%- if param[:google_analytics] -%>
26
+ <script async src="https://www.googletagmanager.com/gtag/js?id=<%=h param[:google_analytics] %>"></script>
27
+ <script>
28
+ window.dataLayer = window.dataLayer || [];
29
+ function gtag(){dataLayer.push(arguments);}
30
+ gtag('js', new Date());
31
+ gtag('config', '<%=u param[:google_analytics] %>');
32
+ </script>
33
+ <%- end -%>
12
34
  </head>
13
35
  <body>
14
- <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
36
+ <nav class="navbar navbar-expand-lg navbar-light">
37
+ <%- if param[:logo] -%>
38
+ <a class="navbar-brand" href="<%=h relative_path_uri(param[:base_uri], param[:base_uri]) %>"><img src="<%=h relative_path(param[:logo]) %>" height="30"></a>
39
+ <%- end -%>
15
40
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
16
41
  <span class="navbar-toggler-icon"></span>
17
42
  </button>
18
43
  <div class="collapse navbar-collapse" id="navbarSupportedContent">
19
44
  <ul class="navbar-nav mr-auto">
20
- <li class="nav-item<%= ' class="active"' if param[:active] == :home %>">
21
- <a class="navbar-brand" href="/">Home</a>
45
+ <li class="nav-item<%= ' active' if @template == "index.html.erb" %>">
46
+ <a class="nav-link" href="<%=h relative_path_uri(param[:base_uri], param[:base_uri]) %>">Home</a>
22
47
  </li>
23
- <li class="nav-item<%= ' class="active"' if param[:active] == :about %>">
24
- <a class="navbar-brand" href="/about">About</a>
48
+ <li class="nav-item<%= ' active' if @template == "about.html.erb" %>">
49
+ <a class="nav-link" href="<%=h relative_path(param[:about_file] || "about.html") %>">About</a>
25
50
  </li>
51
+ <%- if param[:additional_link] -%>
52
+ <%- param[:additional_link].each do |link| -%>
53
+ <li class="nav-item"><a class="nav-link" href="<%=h link["href"] %>"><%=h link["label"] %></a></li>
54
+ <%- end -%>
55
+ <%- end -%>
26
56
  </ul>
27
57
  </div>
28
58
  </nav>
29
59
  <%= param[:content] %>
30
60
  <hr>
31
61
  <footer>
32
- <%- if param[:uri] -%>
33
- <p class="text-right"><a href="<%=h relative_path(param[:turtle_uri]) %>"><img src="https://www.w3.org/RDF/icons/rdf_flyer.24" alt="<%=h t("layout.rdf-data") %>"></a></p>
62
+ <%- if param[:turtle_uri] -%>
63
+ <p class="float-right"><a href="<%=h param[:turtle_uri] %>"><img src="https://www.w3.org/RDF/icons/rdf_flyer.24" alt="<%=h t("layout.rdf-data") %>"></a></p>
64
+ <%- end -%>
65
+ <%- if param[:admin_name] -%>
66
+ <p>
67
+ <%- if param[:copyright_year] -%>
68
+ &copy; <%=h param[:copyright_year] %>
69
+ <%- end -%>
70
+ <%=h param[:admin_name] %>
71
+ </p>
34
72
  <%- end -%>
35
73
  </footer>
36
74
 
@@ -1,6 +1,10 @@
1
1
  <dt><%=h param[:data][:date] %></dt>
2
2
  <dd><%=h t("about.version-release", version: param[:data][:version]) %></dd>
3
- <dd><%=h get_language_literal(param[:data][:description]) %></dd>
3
+ <dd><%=h get_language_literal(param[:data][:description]) %>
4
+ <%- if param[:data][:link] -%>
5
+ <%= t("about.version-link", link: param[:data][:link]) %>
6
+ <%- end -%>
7
+ </dd>
4
8
  <%- if param[:data][:datadump] -%>
5
9
  <dd><ul>
6
10
  <li><a href="<%=h param[:data][:datadump] %>"><%=h File.basename(param[:data][:datadump]) %></a>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ttl2html
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masao Takaku
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-14 00:00:00.000000000 Z
11
+ date: 2022-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -180,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
180
180
  - !ruby/object:Gem::Version
181
181
  version: '0'
182
182
  requirements: []
183
- rubygems_version: 3.2.32
183
+ rubygems_version: 3.3.3
184
184
  signing_key:
185
185
  specification_version: 4
186
186
  summary: ttl2html