relaton-bib 1.13.4 → 1.13.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/lib/relaton_bib/formatted_string.rb +56 -1
- data/lib/relaton_bib/localized_string.rb +4 -46
- data/lib/relaton_bib/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: 0bb1128da936b194ce7e29899a6092f2767e85b4f7e7963306cdb65789af8c65
|
|
4
|
+
data.tar.gz: a3c52753f1459b6898d9780d10899b560708fbbccb5f5a8e168c8b9945bcb5c1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: edbdefdccca25da59d741f1013e5008a63ea53beff1350f5a248c52e8810f94ef3d08040a14976005ebdb0c79405b839534784550a893b368866ed6a561c6e33
|
|
7
|
+
data.tar.gz: f0ba59355807104e7915ff731da8bbe55197299af8b10e1ae90c6ba2a23c36e643d356c629dd307bf3fbf5094257c91a4509e908bbaca510cab5f1d65764e896
|
|
@@ -31,6 +31,61 @@ module RelatonBib
|
|
|
31
31
|
super
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
+
#
|
|
35
|
+
# Encode content.
|
|
36
|
+
#
|
|
37
|
+
# @param [String] cnt content
|
|
38
|
+
#
|
|
39
|
+
# @return [String] encoded content
|
|
40
|
+
#
|
|
41
|
+
def encode(cnt) # rubocop:disable Metrics/MethodLength
|
|
42
|
+
return escp(cnt) unless format == "text/html"
|
|
43
|
+
|
|
44
|
+
parts = cnt.scan(%r{
|
|
45
|
+
<(?<tago>\w+)(?<attrs>[^>]*)> | # tag open
|
|
46
|
+
</(?<tagc>\w+)> | # tag close
|
|
47
|
+
(?<cmt><!--.*?-->) | # comment
|
|
48
|
+
(?<cnt>.+?)(?=<|$) # content
|
|
49
|
+
}x)
|
|
50
|
+
scan_xml parts
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
#
|
|
54
|
+
# Scan XML and escape HTML entities.
|
|
55
|
+
#
|
|
56
|
+
# @param [Array<Array<String,nil>>] parts XML parts
|
|
57
|
+
#
|
|
58
|
+
# @return [String] output string
|
|
59
|
+
#
|
|
60
|
+
def scan_xml(parts) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity,Metrics/MethodLength
|
|
61
|
+
return "" unless parts.any?
|
|
62
|
+
|
|
63
|
+
out = ""
|
|
64
|
+
while parts.any? && (parts.first[3] || parts.first[4])
|
|
65
|
+
_, _, _, cmt, cnt = parts.shift
|
|
66
|
+
out += "#{cmt}#{escp(cnt)}"
|
|
67
|
+
end
|
|
68
|
+
unless out.empty?
|
|
69
|
+
out += scan_xml(parts) if parts.any? && parts.first[0]
|
|
70
|
+
return out
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
tago, attrs, tagc, = parts.shift
|
|
74
|
+
out = if tago && attrs && attrs[-1] == "/"
|
|
75
|
+
"<#{tago}#{attrs}>"
|
|
76
|
+
elsif tago
|
|
77
|
+
inr = scan_xml parts
|
|
78
|
+
_, _, tagc, = parts.shift
|
|
79
|
+
if tago == tagc
|
|
80
|
+
"<#{tago}#{attrs}>#{inr}</#{tagc}>"
|
|
81
|
+
else
|
|
82
|
+
"#{escp("<#{tago}#{attrs}>")}#{inr}#{escp("</#{tagc}>")}"
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
out += scan_xml(parts) if parts.any? && (parts.first[0] || parts.first[3] || parts.first[4])
|
|
86
|
+
out
|
|
87
|
+
end
|
|
88
|
+
|
|
34
89
|
# @return [Hash]
|
|
35
90
|
def to_hash
|
|
36
91
|
hash = super
|
|
@@ -46,7 +101,7 @@ module RelatonBib
|
|
|
46
101
|
# @return [String]
|
|
47
102
|
def to_asciibib(prefix = "", count = 1, has_attrs = false)
|
|
48
103
|
has_attrs ||= !(format.nil? || format.empty?)
|
|
49
|
-
pref = prefix.empty? ? prefix : prefix
|
|
104
|
+
pref = prefix.empty? ? prefix : "#{prefix}."
|
|
50
105
|
# out = count > 1 ? "#{prefix}::\n" : ""
|
|
51
106
|
out = super
|
|
52
107
|
out += "#{pref}format:: #{format}\n" if format
|
|
@@ -76,51 +76,7 @@ module RelatonBib
|
|
|
76
76
|
# @return [String] encoded content
|
|
77
77
|
#
|
|
78
78
|
def encode(cnt) # rubocop:disable Metrics/MethodLength
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
parts = cnt.scan(%r{
|
|
82
|
-
<(?<tago>\w+)(?<attrs>[^>]*)> | # tag open
|
|
83
|
-
</(?<tagc>\w+)> | # tag close
|
|
84
|
-
(?<cmt><!--.*?-->) | # comment
|
|
85
|
-
(?<cnt>.+?)(?=<|$) # content
|
|
86
|
-
}x)
|
|
87
|
-
scan_xml parts
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
#
|
|
91
|
-
# Scan XML and escape HTML entities.
|
|
92
|
-
#
|
|
93
|
-
# @param [Array<Array<String,nil>>] parts XML parts
|
|
94
|
-
#
|
|
95
|
-
# @return [String] output string
|
|
96
|
-
#
|
|
97
|
-
def scan_xml(parts) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity,Metrics/MethodLength
|
|
98
|
-
return "" unless parts.any?
|
|
99
|
-
|
|
100
|
-
out = ""
|
|
101
|
-
while parts.any? && (parts.first[3] || parts.first[4])
|
|
102
|
-
_, _, _, cmt, cnt = parts.shift
|
|
103
|
-
out += "#{cmt}#{escp(cnt)}"
|
|
104
|
-
end
|
|
105
|
-
unless out.empty?
|
|
106
|
-
out += scan_xml(parts) if parts.any? && parts.first[0]
|
|
107
|
-
return out
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
tago, attrs, tagc, = parts.shift
|
|
111
|
-
out = if tago && attrs && attrs[-1] == "/"
|
|
112
|
-
"<#{tago}#{attrs}>"
|
|
113
|
-
elsif tago
|
|
114
|
-
inr = scan_xml parts
|
|
115
|
-
_, _, tagc, = parts.shift
|
|
116
|
-
if tago == tagc
|
|
117
|
-
"<#{tago}#{attrs}>#{inr}</#{tagc}>"
|
|
118
|
-
else
|
|
119
|
-
"#{escp("<#{tago}#{attrs}>")}#{inr}#{escp("</#{tagc}>")}"
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
out += scan_xml(parts) if parts.any? && (parts.first[0] || parts.first[3] || parts.first[4])
|
|
123
|
-
out
|
|
79
|
+
escp cnt
|
|
124
80
|
end
|
|
125
81
|
|
|
126
82
|
#
|
|
@@ -131,7 +87,9 @@ module RelatonBib
|
|
|
131
87
|
# @return [String] output string
|
|
132
88
|
#
|
|
133
89
|
def escp(str)
|
|
134
|
-
|
|
90
|
+
return unless str
|
|
91
|
+
|
|
92
|
+
HTMLEntities.new.encode str.dup.force_encoding("UTF-8")
|
|
135
93
|
end
|
|
136
94
|
|
|
137
95
|
# @return [Hash]
|
data/lib/relaton_bib/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: relaton-bib
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.13.
|
|
4
|
+
version: 1.13.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: 2022-09-
|
|
11
|
+
date: 2022-09-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: byebug
|