metanorma-utils 1.6.4 → 1.6.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|