noticesys 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|