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 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