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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f52334e0ac6ba38a848d59f0c5c39b30d0897f7b6c3b066339781539ac004a4a
4
- data.tar.gz: 847c834db47cac18f304e3951307b5f95081349b250861db669f365b1e6e3547
3
+ metadata.gz: 8d47b4798cd650f73da406bbbd5f933ab8e78737e8ff3f6293db2987f0aa648f
4
+ data.tar.gz: 2fd00aa95f34e6ca2071d823ca5d71ffcab4cedd753f8c1c2379ad1cf1c8a325
5
5
  SHA512:
6
- metadata.gz: cea704e02792d97d19637aadd36cadfd6815a00cf41e69e29c69458e72f2f06fd9cda8873d5eeb6666dbab43ab65c75128404d5c6230cbc2359e8de98436c98e
7
- data.tar.gz: 8c0614e9bcac61516ec4dc7bf3db4cf371fd5141aae862428b854420dc787e6e715d3e9e9f2524494ce30aac079b3e5d239800c408662e3ebcefa5c4f2bb5651
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.1.1
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-03 00:00:00.000000000 Z
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