ttl2html 1.1.1 → 1.2.0
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/lib/ttl2html/template.rb +30 -2
- data/lib/ttl2html/version.rb +1 -1
- data/lib/ttl2html.rb +24 -34
- data/templates/layout.html.erb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9d57dc99fea0827d317a9dc3597cae9c69d1ac38dbcd66000327f1b913dea03
|
4
|
+
data.tar.gz: d30441245cd56e6322fe3ab0b27351a83900b6c6826b3c5a6d611bffa8245d3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c5068b43cc54072f3958f46b5192c5fe118d5942c0b53d4f2fc35f8e35560a6768a2905d1cd946efc8462faa51b2d2ea4d844f8f73f982e18fb73ea5a812ee5
|
7
|
+
data.tar.gz: 6dc8f656583fc5d8a96baab454b1ea47e446e5694c55f457b3e236e91945595d8b2838d7a7b628d918d7a9c85bb138e081e8919453edce96228572a93dd617eb
|
data/lib/ttl2html/template.rb
CHANGED
@@ -12,7 +12,7 @@ module TTL2HTML
|
|
12
12
|
include I18n::Base
|
13
13
|
def initialize(template, param = {})
|
14
14
|
@template = template
|
15
|
-
@param = param
|
15
|
+
@param = param.dup
|
16
16
|
@template_path = [ Dir.pwd, File.join(Dir.pwd, "templates") ]
|
17
17
|
@template_path << File.join(File.dirname(__FILE__), "..", "..", "templates")
|
18
18
|
I18n.load_path << Dir[File.join(File.dirname(__FILE__), "..", "..", "locales") + "/*.yml"]
|
@@ -113,6 +113,33 @@ module TTL2HTML
|
|
113
113
|
end
|
114
114
|
|
115
115
|
# helper method:
|
116
|
+
def uri_mapping_to_path(uri, suffix = ".html")
|
117
|
+
path = nil
|
118
|
+
if @param[:uri_mappings]
|
119
|
+
@param[:uri_mappings].each do |mapping|
|
120
|
+
local_file = uri.sub(@param[:base_uri], "")
|
121
|
+
if mapping["regexp"] =~ local_file
|
122
|
+
path = local_file.sub(mapping["regexp"], mapping["path"])
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
if path.nil?
|
127
|
+
if suffix == ".html"
|
128
|
+
if @param[:data_global] and @param[:data_global].keys.find{|e| e.start_with?(uri + "/") }
|
129
|
+
path = uri + "/index"
|
130
|
+
elsif uri.end_with?("/")
|
131
|
+
path = uri + "index"
|
132
|
+
else
|
133
|
+
path = uri
|
134
|
+
end
|
135
|
+
else
|
136
|
+
path = uri
|
137
|
+
end
|
138
|
+
end
|
139
|
+
path = path.sub(@param[:base_uri], "") if @param[:base_uri]
|
140
|
+
path << suffix
|
141
|
+
path
|
142
|
+
end
|
116
143
|
def relative_path(dest)
|
117
144
|
src = @param[:output_file]
|
118
145
|
src = Pathname.new(src).relative_path_from(Pathname.new(@param[:output_dir])) if @param[:output_dir]
|
@@ -123,6 +150,7 @@ module TTL2HTML
|
|
123
150
|
def relative_path_uri(dest_uri, base_uri)
|
124
151
|
if dest_uri.start_with? base_uri
|
125
152
|
dest = dest_uri.sub(base_uri, "")
|
153
|
+
dest = uri_mapping_to_path(dest, "")
|
126
154
|
relative_path(dest)
|
127
155
|
else
|
128
156
|
dest_uri
|
@@ -173,7 +201,7 @@ module TTL2HTML
|
|
173
201
|
def format_object(object, data)
|
174
202
|
if object =~ /\Ahttps?:\/\//
|
175
203
|
rel_path = relative_path_uri(object, param[:base_uri])
|
176
|
-
if
|
204
|
+
if param[:data_global][object]
|
177
205
|
"<a href=\"#{rel_path}\">#{get_title(param[:data_global][object]) or object}</a>"
|
178
206
|
else
|
179
207
|
"<a href=\"#{rel_path}\">#{object}</a>"
|
data/lib/ttl2html/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
TTL2HTML::VERSION = "1.
|
1
|
+
TTL2HTML::VERSION = "1.2.0"
|
data/lib/ttl2html.rb
CHANGED
@@ -11,7 +11,6 @@ require "ttl2html/template"
|
|
11
11
|
module TTL2HTML
|
12
12
|
class App
|
13
13
|
def initialize(config = "config.yml")
|
14
|
-
@template = {}
|
15
14
|
@config = load_config(config)
|
16
15
|
if not @config[:base_uri]
|
17
16
|
raise "load_config: base_uri not found"
|
@@ -67,50 +66,41 @@ module TTL2HTML
|
|
67
66
|
def format_turtle(subject, depth = 1)
|
68
67
|
turtle = RDF::Turtle::Writer.new
|
69
68
|
result = ""
|
70
|
-
if subject
|
71
|
-
result << "<#{subject}>\n#{" "*depth}"
|
72
|
-
else
|
69
|
+
if subject =~ /^_:/
|
73
70
|
result << "[\n#{" "*depth}"
|
71
|
+
else
|
72
|
+
result << "<#{subject}>\n#{" "*depth}"
|
74
73
|
end
|
75
|
-
result << @
|
74
|
+
result << @data[subject.to_s].keys.sort.map do |predicate|
|
76
75
|
str = "<#{predicate}> "
|
77
|
-
str << @
|
78
|
-
if object
|
79
|
-
@graph.query([object, nil, nil]).statements.sort_by{|e|
|
80
|
-
[ e.predicate, e.object ]
|
81
|
-
}.map{|e|
|
82
|
-
[ e.predicate, e.object ]
|
83
|
-
}
|
84
|
-
else
|
85
|
-
object
|
86
|
-
end
|
87
|
-
end.map do |object|
|
88
|
-
if object.resource? and not object.iri? # blank node:
|
76
|
+
str << @data[subject.to_s][predicate].sort.map do |object|
|
77
|
+
if object =~ /^_:/ # blank node:
|
89
78
|
format_turtle(object, depth + 1)
|
79
|
+
elsif object =~ RDF::URI::IRI
|
80
|
+
turtle.format_uri(RDF::URI.new object)
|
81
|
+
elsif object.respond_to?(:first) and object.first.kind_of?(Symbol)
|
82
|
+
turtle.format_literal(RDF::Literal.new(object[1], language: object[0]))
|
90
83
|
else
|
91
|
-
|
92
|
-
when RDF::URI
|
93
|
-
turtle.format_uri(object)
|
94
|
-
else
|
95
|
-
turtle.format_literal(object)
|
96
|
-
end
|
84
|
+
turtle.format_literal(object)
|
97
85
|
end
|
98
86
|
end.join(", ")
|
99
87
|
str
|
100
88
|
end.join(";\n#{" "*depth}")
|
101
|
-
result << " ." if subject
|
89
|
+
result << " ." if not subject =~ /^_:/
|
102
90
|
result << "\n"
|
103
|
-
result << "#{" "*(depth-1)}]" if
|
91
|
+
result << "#{" "*(depth-1)}]" if subject =~ /^_:/
|
104
92
|
result
|
105
93
|
end
|
106
94
|
def format_turtle_inverse(object)
|
107
|
-
turtle = RDF::Turtle::Writer.new
|
108
95
|
result = ""
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
96
|
+
return result if not object.start_with? @config[:base_uri]
|
97
|
+
return result if not @data_inverse.has_key? object
|
98
|
+
turtle = RDF::Turtle::Writer.new
|
99
|
+
@data_inverse[object].keys.sort.each do |predicate|
|
100
|
+
@data_inverse[object.to_s][predicate].sort.each do |subject|
|
101
|
+
next if subject =~ /^_:/
|
102
|
+
result << "<#{subject}> <#{predicate}> <#{object}>.\n"
|
103
|
+
end
|
114
104
|
end
|
115
105
|
result
|
116
106
|
end
|
@@ -122,7 +112,7 @@ module TTL2HTML
|
|
122
112
|
end
|
123
113
|
end
|
124
114
|
def output_html_files
|
125
|
-
template = Template.new("")
|
115
|
+
template = Template.new("", @config)
|
126
116
|
shapes = @graph.query([nil,
|
127
117
|
RDF::URI("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
|
128
118
|
RDF::URI("http://www.w3.org/ns/shacl#NodeShape")])
|
@@ -230,8 +220,8 @@ module TTL2HTML
|
|
230
220
|
Dir.mkdir @config[:output_dir] if not File.exist? @config[:output_dir]
|
231
221
|
file = File.join(@config[:output_dir], file)
|
232
222
|
end
|
233
|
-
str = format_turtle(
|
234
|
-
str << format_turtle_inverse(
|
223
|
+
str = format_turtle(uri)
|
224
|
+
str << format_turtle_inverse(uri)
|
235
225
|
open(file, "w") do |io|
|
236
226
|
io.puts str.strip
|
237
227
|
end
|
data/templates/layout.html.erb
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
<hr>
|
23
23
|
<footer>
|
24
24
|
<%- if param[:uri] -%>
|
25
|
-
<p class="pull-right"><a href="<%=h param[:uri] %>.ttl"><img src="https://www.w3.org/RDF/icons/rdf_flyer.24" alt="<%=h t("layout.
|
25
|
+
<p class="pull-right"><a href="<%=h param[:uri] %>.ttl"><img src="https://www.w3.org/RDF/icons/rdf_flyer.24" alt="<%=h t("layout.rdf-data") %>"></a></p>
|
26
26
|
<%- end -%>
|
27
27
|
</footer>
|
28
28
|
|
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.
|
4
|
+
version: 1.2.0
|
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-11-
|
11
|
+
date: 2021-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|