metanorma-utils 1.6.4 → 1.6.5
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/Gemfile +5 -1
- data/lib/utils/log.rb +38 -17
- data/lib/utils/version.rb +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: c3f777cb3ba87e217a3b56ee8caf1a2cd8f6948a8664e18900c6eb5494d162f9
|
4
|
+
data.tar.gz: 6a758b7d70a52f55c71d8db3562ea32a0f19de514948d17a48bee811850e0b16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2bf9b223b840ea02f05c3fe37cc6d12ab73044da84f5108c5f94323a096a567934deec55ddce269f616382b09e98f2be1bc8d835120b6127549ee3febd00bcaf
|
7
|
+
data.tar.gz: 5447a68582a1c245e1d8a1763573b956ae5999e7ed3a4b8f057e57b301cdc16d5cf2db99fa64bcdd6cb9f0047114fb75b812232fca7303c49ee9095a72387646
|
data/Gemfile
CHANGED
@@ -4,8 +4,12 @@ Encoding.default_internal = Encoding::UTF_8
|
|
4
4
|
source "https://rubygems.org"
|
5
5
|
git_source(:github) { |repo| "https://github.com/#{repo}" }
|
6
6
|
|
7
|
-
|
7
|
+
group :development, :test do
|
8
|
+
gem "rspec"
|
9
|
+
end
|
8
10
|
|
9
11
|
if File.exist? "Gemfile.devel"
|
10
12
|
eval File.read("Gemfile.devel"), nil, "Gemfile.devel" # rubocop:disable Security/Eval
|
11
13
|
end
|
14
|
+
|
15
|
+
gemspec
|
data/lib/utils/log.rb
CHANGED
@@ -11,23 +11,32 @@ module Metanorma
|
|
11
11
|
@mapid = {}
|
12
12
|
end
|
13
13
|
|
14
|
-
|
14
|
+
# severity: 0: abort; 1: serious; 2: not serious
|
15
|
+
def add(category, loc, msg, severity: 2)
|
15
16
|
@novalid and return
|
16
17
|
@log[category] ||= []
|
17
|
-
item = create_entry(loc, msg)
|
18
|
+
item = create_entry(loc, msg, severity)
|
18
19
|
@log[category] << item
|
19
20
|
loc = loc.nil? ? "" : "(#{current_location(loc)}): "
|
20
21
|
suppress_display?(category, loc, msg) or
|
21
22
|
warn "#{category}: #{loc}#{msg}"
|
22
23
|
end
|
23
24
|
|
25
|
+
def abort_messages
|
26
|
+
@log.values.each_with_object([]) do |v, m|
|
27
|
+
v.each do |e|
|
28
|
+
e[:severity].zero? and m << e[:message]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
24
33
|
def suppress_display?(category, _loc, _msg)
|
25
34
|
["Metanorma XML Syntax"].include?(category)
|
26
35
|
end
|
27
36
|
|
28
|
-
def create_entry(loc, msg)
|
37
|
+
def create_entry(loc, msg, severity)
|
29
38
|
msg = msg.encode("UTF-8", invalid: :replace, undef: :replace)
|
30
|
-
item = { location: current_location(loc),
|
39
|
+
item = { location: current_location(loc), severity: severity,
|
31
40
|
message: msg, context: context(loc), line: line(loc, msg) }
|
32
41
|
if item[:message].include?(" :: ")
|
33
42
|
a = item[:message].split(" :: ", 2)
|
@@ -101,7 +110,11 @@ module Metanorma
|
|
101
110
|
<<~HTML
|
102
111
|
<html><head><title>#{file} errors</title>
|
103
112
|
<meta charset="UTF-8"/>
|
104
|
-
<style> pre { white-space: pre-wrap; }
|
113
|
+
<style> pre { white-space: pre-wrap; }
|
114
|
+
thead th { font-weight: bold; background-color: aqua; }
|
115
|
+
.severity0 { font-weight: bold; background-color: lightpink }
|
116
|
+
.severity1 { font-weight: bold; }
|
117
|
+
.severity2 { } </style>
|
105
118
|
</head><body><h1>#{file} errors</h1>
|
106
119
|
HTML
|
107
120
|
end
|
@@ -118,25 +131,31 @@ module Metanorma
|
|
118
131
|
def write_key(file, key)
|
119
132
|
file.puts <<~HTML
|
120
133
|
<h2>#{key}</h2>\n<table border="1">
|
121
|
-
<thead><th width="5%">Line</th><th width="20%">ID</th
|
134
|
+
<thead><th width="5%">Line</th><th width="20%">ID</th>
|
135
|
+
<th width="30%">Message</th><th width="40%">Context</th><th width="5%">Severity</th></thead>
|
122
136
|
<tbody>
|
123
137
|
HTML
|
124
138
|
@log[key].sort_by { |a| [a[:line], a[:location], a[:message]] }
|
125
139
|
.each do |n|
|
126
|
-
|
140
|
+
write_entry(file, render_preproc_entry(n))
|
127
141
|
end
|
128
142
|
file.puts "</tbody></table>\n"
|
129
143
|
end
|
130
144
|
|
131
|
-
def
|
132
|
-
|
133
|
-
line = nil if line == "000000"
|
134
|
-
|
135
|
-
|
145
|
+
def render_preproc_entry(entry)
|
146
|
+
ret = entry.dup
|
147
|
+
ret[:line] = nil if ret[:line] == "000000"
|
148
|
+
ret[:location] = loc_link(entry)
|
149
|
+
ret[:message] = break_up_long_str(entry[:message], 10, 2)
|
136
150
|
.gsub(/`([^`]+)`/, "<code>\\1</code>")
|
137
|
-
|
151
|
+
ret[:context] = context_render(entry)
|
152
|
+
ret.compact
|
153
|
+
end
|
154
|
+
|
155
|
+
def context_render(entry)
|
156
|
+
entry[:context] or return nil
|
157
|
+
entry[:context].split("\n").first(5)
|
138
158
|
.join("\n").gsub("><", "> <")
|
139
|
-
write_entry(file, line, loc, msg, context)
|
140
159
|
end
|
141
160
|
|
142
161
|
def mapid(old, new)
|
@@ -160,10 +179,12 @@ module Metanorma
|
|
160
179
|
Metanorma::Utils.break_up_long_str(str, threshold, punct)
|
161
180
|
end
|
162
181
|
|
163
|
-
def write_entry(file,
|
164
|
-
context &&= @c.encode(break_up_long_str(context, 40, 2))
|
182
|
+
def write_entry(file, entry)
|
183
|
+
entry[:context] &&= @c.encode(break_up_long_str(entry[:context], 40, 2))
|
165
184
|
file.print <<~HTML
|
166
|
-
<tr
|
185
|
+
<tr class="severity#{entry[:severity]}">
|
186
|
+
<td>#{entry[:line]}</td><th><code>#{entry[:location]}</code></th>
|
187
|
+
<td>#{entry[:message]}</td><td><pre>#{entry[:context]}</pre></td><td>#{entry[:severity]}</td></tr>
|
167
188
|
HTML
|
168
189
|
end
|
169
190
|
end
|
data/lib/utils/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciidoctor
|