noticesys 0.1.1 → 0.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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/noticesys.rb +145 -0
- metadata +42 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d47b4798cd650f73da406bbbd5f933ab8e78737e8ff3f6293db2987f0aa648f
|
4
|
+
data.tar.gz: 2fd00aa95f34e6ca2071d823ca5d71ffcab4cedd753f8c1c2379ad1cf1c8a325
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d01f5892de2b3b9ecb016406c91bb88d57fa63066c8337d51c171b50f52d5c14b8c8f32835fafa8abc052298a9c128f551dee57632c2c870ddd5ad1fb0484643
|
7
|
+
data.tar.gz: e85808cf07aab7fab2801ca6f448bbfa9202c23391fdf28bd2d6ee46c1d3f838c72b3031df05244929448b918b4617c16375017c1942eb2ddbc699ee729e2759
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/noticesys.rb
CHANGED
@@ -3,9 +3,12 @@
|
|
3
3
|
# file: noticesys.rb
|
4
4
|
|
5
5
|
require 'down' # file downloader
|
6
|
+
require 'weblet' # HTML retrieval
|
7
|
+
require 'dynarex' # flat file storage system
|
6
8
|
require 'ogextractor' # extract metadata
|
7
9
|
|
8
10
|
|
11
|
+
|
9
12
|
module NoticeSys
|
10
13
|
|
11
14
|
class Client
|
@@ -123,5 +126,147 @@ module NoticeSys
|
|
123
126
|
end
|
124
127
|
|
125
128
|
end
|
129
|
+
|
130
|
+
class StatusView
|
131
|
+
|
132
|
+
def initialize(basepath, xslfile, css_url, weblet_file=nil)
|
133
|
+
|
134
|
+
@basepath, @xslfile, @css_url = basepath, xslfile, css_url
|
135
|
+
weblet_file ||= File.join(File.dirname(__FILE__), '..',
|
136
|
+
'data', 'microblog.txt')
|
137
|
+
@w = Weblet.new(weblet_file, binding)
|
138
|
+
|
139
|
+
end
|
140
|
+
|
141
|
+
def render(topic, rawid, referer)
|
142
|
+
|
143
|
+
id = rawid[0..9].to_i
|
144
|
+
|
145
|
+
filepath = File.join(@basepath, topic)
|
146
|
+
a = [Time.at(id).strftime("%Y/%b/%-d").downcase, rawid]
|
147
|
+
xmlfile = File.join(filepath, "%s/%s/index.xml" % a)
|
148
|
+
xslfile = File.join(@basepath, "/xsl/notices/#{topic}.xsl")
|
149
|
+
|
150
|
+
unless File.exists? xslfile then
|
151
|
+
xslfile = @xslfile
|
152
|
+
end
|
153
|
+
|
154
|
+
dx = Dynarex.new(File.join(filepath, 'feed.xml'))
|
155
|
+
doc = Rexle.new(File.read(xmlfile))
|
156
|
+
|
157
|
+
doc.root.element('summary/title').text = dx.title
|
158
|
+
e = doc.root.element('summary/image')
|
159
|
+
|
160
|
+
if e.nil? then
|
161
|
+
e = Rexle::Element.new 'image'
|
162
|
+
doc.root.element('summary').add e
|
163
|
+
end
|
164
|
+
|
165
|
+
doc.root.element('summary/image').text = dx.image
|
166
|
+
|
167
|
+
# remove the card from the description
|
168
|
+
desc = doc.root.element('body/description')
|
169
|
+
desc.xpath('img|div').each(&:delete)
|
170
|
+
|
171
|
+
doc = Nokogiri::XML(doc.root.xml)
|
172
|
+
xslt = Nokogiri::XSLT(File.read(xslfile))
|
173
|
+
|
174
|
+
s = xslt.transform(doc)
|
175
|
+
doc = Rexle.new(s.to_s)
|
176
|
+
|
177
|
+
rx = Kvx.new(xmlfile)
|
178
|
+
|
179
|
+
rawcard = rx.card
|
180
|
+
|
181
|
+
|
182
|
+
card2, meta = if rawcard and rawcard.length > 10 then
|
183
|
+
|
184
|
+
card = JSON.parse(rawcard, symbolize_names: true)
|
185
|
+
|
186
|
+
if card.is_a? Hash then
|
187
|
+
|
188
|
+
type = card.keys.first
|
189
|
+
h = card[type]
|
190
|
+
#img = h[:img].sub(/small(?=\.\w+$)/,'large')
|
191
|
+
img = h[:img]
|
192
|
+
metadata = @w.render(:meta, binding)
|
193
|
+
[render_card(dx, rx, card), metadata]
|
194
|
+
|
195
|
+
end
|
196
|
+
else
|
197
|
+
'<span/>'
|
198
|
+
end
|
199
|
+
|
200
|
+
|
201
|
+
e = doc.root.at_css '#notice'
|
202
|
+
desc = e.at_css '#desc'
|
203
|
+
desc.add Rexle.new(card2).root
|
126
204
|
|
205
|
+
ref = referer
|
206
|
+
svg = @w.render 'svg/backarrow', binding
|
207
|
+
|
208
|
+
back = if ref then
|
209
|
+
"<div id='back'><a href='#{ref}' title='back'>#{svg}</a></div>"
|
210
|
+
else
|
211
|
+
''
|
212
|
+
end
|
213
|
+
|
214
|
+
@w.render :status, binding
|
215
|
+
|
216
|
+
end
|
217
|
+
|
218
|
+
private
|
219
|
+
|
220
|
+
def render_card(dx, rx, card)
|
221
|
+
|
222
|
+
card2 = case card.keys.first
|
223
|
+
when :images
|
224
|
+
|
225
|
+
card[:images].map.with_index do |img, i|
|
226
|
+
|
227
|
+
href = [dx.link.sub(/\/$/,''), rx.topic, 'status', rx.id,
|
228
|
+
'photo', (i+1).to_s ].join('/')
|
229
|
+
url, align = img[:url], img[:align]
|
230
|
+
"<a href='%s'><div class='top-crop %s'><img class='img1' src='%s'/></div></a>" % [href, align, url]
|
231
|
+
|
232
|
+
end.join
|
233
|
+
|
234
|
+
when :summary_large_image
|
235
|
+
|
236
|
+
h2 = card[:summary_large_image]
|
237
|
+
|
238
|
+
rawdesc = h2[:desc]
|
239
|
+
|
240
|
+
desc = rawdesc.length > 147 ? rawdesc[0..147] + '...' : rawdesc
|
241
|
+
site = h2[:url][/https?:\/\/([^\/]+)/,1].sub(/^www\./,'')
|
242
|
+
title = h2[:title]
|
243
|
+
img = h2[:img]
|
244
|
+
url = h2[:url]
|
245
|
+
|
246
|
+
@w.render('card', binding)
|
247
|
+
|
248
|
+
when :summary
|
249
|
+
|
250
|
+
h2 = card[:summary]
|
251
|
+
|
252
|
+
rawdesc = h2[:desc]
|
253
|
+
|
254
|
+
desc = rawdesc.length > 95 ? rawdesc[0..95] + '...' : rawdesc
|
255
|
+
site = h2[:url][/https?:\/\/([^\/]+)/,1].sub(/^www\./,'')
|
256
|
+
title = h2[:title].length > 46 ? h2[:title][0..46] + '...' : h2[:title]
|
257
|
+
img = h2[:img]
|
258
|
+
url = h2[:url]
|
259
|
+
|
260
|
+
img_element = if img then
|
261
|
+
"<img src='#{img}'>"
|
262
|
+
else
|
263
|
+
@w.render('svg/article')
|
264
|
+
end
|
265
|
+
|
266
|
+
@w.render('card2', binding)
|
267
|
+
|
268
|
+
end
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
127
272
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: noticesys
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
iGAgDWBQqM/kdjDslqjBGtyWyFyuYHzXMU1gO/P0aE3rh1enqahZ8BqY+gxXLGrR
|
36
36
|
sU+WFV9qPqoqNOG0tOknOZXN
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2021-04-
|
38
|
+
date: 2021-04-04 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: down
|
@@ -57,6 +57,46 @@ dependencies:
|
|
57
57
|
- - "~>"
|
58
58
|
- !ruby/object:Gem::Version
|
59
59
|
version: '5.2'
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: weblet
|
62
|
+
requirement: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0.3'
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.3.2
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0.3'
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 0.3.2
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: dynarex
|
82
|
+
requirement: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - "~>"
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '1.8'
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.8.27
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.8'
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 1.8.27
|
60
100
|
- !ruby/object:Gem::Dependency
|
61
101
|
name: ogextractor
|
62
102
|
requirement: !ruby/object:Gem::Requirement
|
metadata.gz.sig
CHANGED
Binary file
|