daily_notices 0.7.1 → 0.7.2
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/lib/daily_notices.rb +114 -90
- data.tar.gz.sig +0 -0
- metadata +10 -10
- 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: 1400c073a869a84b88e4010d56897d7f9ffdc9ed1a0eab4df780d62a32576818
|
|
4
|
+
data.tar.gz: dca472da26bafb356cfe6219924238874d99371aef62936e88e67989a22c414b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4a1f148b6047942cc48d9852727a82c5fa115d5f7fa5cf3b899ae32374022f5c305942a32fa704c8cb04f0480f90dcb45a7f9b535c224250f844c2295a212482
|
|
7
|
+
data.tar.gz: 79edc93dca8fc50d85c8455186f1bc777ac42dd791f73bda1a162fd369abb44a679cfaada36e8e562f12bfeb2d21be1494c75da238943777e62d0f200ee6664e
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/lib/daily_notices.rb
CHANGED
|
@@ -10,38 +10,39 @@ require 'rss_creator'
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class DailyNotices
|
|
13
|
-
|
|
13
|
+
include RXFHelperModule
|
|
14
|
+
|
|
14
15
|
attr_accessor :title, :description, :link, :dx_xslt, :rss_xslt
|
|
15
16
|
|
|
16
|
-
def initialize(filepath='', url_base: 'http:/127.0.0.1/', identifier: '',
|
|
17
|
-
dx_xslt: '', rss_xslt: '', target_page: :recordset,
|
|
18
|
-
target_xslt: '', title: 'daily notices', log: nil,
|
|
17
|
+
def initialize(filepath='', url_base: 'http:/127.0.0.1/', identifier: '',
|
|
18
|
+
dx_xslt: '', rss_xslt: '', target_page: :recordset,
|
|
19
|
+
target_xslt: '', title: 'daily notices', log: nil,
|
|
19
20
|
debug: false)
|
|
20
|
-
|
|
21
|
+
|
|
21
22
|
@filepath, @url_base, @dx_xslt, @rss_xslt, @target_page, @target_xslt, \
|
|
22
23
|
@identifier, @log, @debug = filepath, url_base, dx_xslt, rss_xslt, \
|
|
23
24
|
target_page, target_xslt, identifier, log, debug
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
|
|
26
27
|
# note: card is intended for storing meta data in JSON format
|
|
27
|
-
|
|
28
|
-
@schema
|
|
29
|
-
'card, time, link)'
|
|
30
|
-
@default_key
|
|
31
|
-
|
|
28
|
+
|
|
29
|
+
@schema = 'items[title, identifier, image, bio, location, website,' +
|
|
30
|
+
' banner_image]/item(title, description, card, time, link)'
|
|
31
|
+
@default_key = 'uid'
|
|
32
|
+
|
|
32
33
|
if dx_xslt.nil? then
|
|
33
34
|
|
|
34
35
|
subdir = File.basename filepath
|
|
35
36
|
dir = url_base[/http:\/\/[^\/]+\/(.*)/,1]
|
|
36
37
|
|
|
37
38
|
dxxsltfilename = "dx#{Time.now.to_i.to_s}.xsl"
|
|
38
|
-
dxxsltfilepath = '/' + [dir, subdir, dxxsltfilename].join('/')
|
|
39
|
-
|
|
39
|
+
dxxsltfilepath = '/' + [dir, subdir, dxxsltfilename].join('/')
|
|
40
|
+
FileX.write File.join(filepath, dxxsltfilename), \
|
|
40
41
|
DxSliml.new(dx: @schema).to_xslt
|
|
41
|
-
|
|
42
|
+
|
|
42
43
|
@dx_xslt = dxxsltfilepath
|
|
43
44
|
end
|
|
44
|
-
|
|
45
|
+
|
|
45
46
|
if rss_xslt.nil? then
|
|
46
47
|
|
|
47
48
|
subdir = File.basename filepath
|
|
@@ -49,97 +50,120 @@ class DailyNotices
|
|
|
49
50
|
|
|
50
51
|
rssxsltfilename = "rssx#{Time.now.to_i.to_s}.xsl"
|
|
51
52
|
rssxsltfilepath = '/' + [dir, subdir, rssxsltfilename].join('/')
|
|
52
|
-
|
|
53
|
+
FileX.write File.join(filepath, rssxsltfilename), \
|
|
53
54
|
RssSliml.new().to_xslt
|
|
54
|
-
|
|
55
|
+
|
|
55
56
|
@rss_xslt = rssxsltfilepath
|
|
56
|
-
end
|
|
57
|
-
|
|
57
|
+
end
|
|
58
|
+
|
|
58
59
|
@day = Time.now.day
|
|
59
60
|
@title = title
|
|
60
61
|
new_day()
|
|
61
|
-
|
|
62
|
+
|
|
62
63
|
# open the Dynarex file or create a new Dynarex file
|
|
63
64
|
|
|
64
65
|
@rssfile = File.join(@filepath, 'rss.xml')
|
|
65
66
|
|
|
66
|
-
if
|
|
67
|
-
@rss = RSScreator.new @rssfile, dx_xslt: @rss_xslt,
|
|
67
|
+
if FileX.exists? @rssfile then
|
|
68
|
+
@rss = RSScreator.new @rssfile, dx_xslt: @rss_xslt,
|
|
68
69
|
custom_fields: ['topic']
|
|
69
70
|
else
|
|
70
71
|
|
|
71
|
-
@rss = RSScreator.new @rssfile, dx_xslt: @rss_xslt,
|
|
72
|
+
@rss = RSScreator.new @rssfile, dx_xslt: @rss_xslt,
|
|
72
73
|
custom_fields: ['topic']
|
|
73
74
|
@rss.xslt = @rss_xslt
|
|
74
75
|
@rss.title = @title || identifier.capitalize + ' daily notices'
|
|
75
76
|
@rss.description = 'Generated using the daily_notices gem'
|
|
76
77
|
@rss.link = @url_base
|
|
77
|
-
end
|
|
78
|
-
|
|
78
|
+
end
|
|
79
|
+
|
|
79
80
|
# :recordset or : record
|
|
80
81
|
@target_page = target_page
|
|
81
82
|
end
|
|
82
|
-
|
|
83
|
-
def create(id: Time.now.to_i.to_s,
|
|
84
|
-
item: {time: Time.now.strftime('%H:%M %p - %d %b %Y'),
|
|
83
|
+
|
|
84
|
+
def create(id: Time.now.to_i.to_s,
|
|
85
|
+
item: {time: Time.now.strftime('%H:%M %p - %d %b %Y'),
|
|
86
|
+
title: nil})
|
|
85
87
|
|
|
86
88
|
@log.info 'daily_notices/create: item: ' + item.inspect if @log
|
|
87
89
|
h = item
|
|
88
90
|
|
|
89
91
|
new_day() if @day != Time.now.day
|
|
90
92
|
|
|
91
|
-
if @dx.all.any? and
|
|
93
|
+
if @dx.all.any? and
|
|
92
94
|
@dx.all.first.description == CGI.unescape(h[:description].to_s) then
|
|
93
95
|
|
|
94
96
|
return :duplicate
|
|
95
97
|
|
|
96
98
|
end
|
|
97
99
|
|
|
98
|
-
h[:link] ||= create_link(id)
|
|
100
|
+
h[:link] ||= create_link(id)
|
|
99
101
|
h[:title] ||= h[:description]
|
|
100
102
|
.split(/\n/,2).first.gsub(/\<\/?\w+[^>]*>/,'')[0..140]
|
|
101
|
-
h[:time] ||= Time.now.strftime('%H:%M %p · %b %d %Y')
|
|
103
|
+
h[:time] ||= Time.now.strftime('%H:%M %p · %b %d %Y')
|
|
104
|
+
|
|
102
105
|
|
|
103
106
|
#@dx.create({description: description, time: time}, id: id)
|
|
104
107
|
puts 'before @dx.create' if @debug
|
|
105
|
-
|
|
108
|
+
|
|
109
|
+
# deep clone the Hash object
|
|
110
|
+
h3 = Marshal.load( Marshal.dump(h) )
|
|
111
|
+
h[:card] = h[:card].to_json if h[:card] and h[:card].is_a? Hash
|
|
112
|
+
|
|
113
|
+
@dx.create(h, id: id)
|
|
106
114
|
puts 'after @dx.create' if @debug
|
|
115
|
+
|
|
107
116
|
@dx.save @indexpath
|
|
108
|
-
|
|
117
|
+
|
|
109
118
|
render_html_files(id)
|
|
110
119
|
|
|
111
120
|
# Add it to the RSS document
|
|
112
121
|
|
|
113
|
-
|
|
114
|
-
|
|
122
|
+
if h3[:card] and h3[:card].is_a? Hash then
|
|
123
|
+
|
|
124
|
+
card = h3[:card]
|
|
125
|
+
h2 = card[card.keys.first]
|
|
126
|
+
|
|
127
|
+
content = case card.keys.first
|
|
128
|
+
when :summary_large_image
|
|
129
|
+
"\n<h1>%s</h1><p>%s</p>" % [h2[:title], h2[:desc]]
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
h3[:title] += h2[:title] if h3[:title].empty?
|
|
133
|
+
h3[:description] += content
|
|
134
|
+
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
@rss.add(item: h3, id: id)
|
|
115
138
|
@rss.save @rssfile
|
|
116
|
-
|
|
139
|
+
# open up the RSS file and fill in the title and description fields
|
|
140
|
+
|
|
117
141
|
on_add(@indexpath, id)
|
|
118
|
-
|
|
142
|
+
|
|
119
143
|
return true
|
|
120
144
|
|
|
121
145
|
end
|
|
122
|
-
|
|
146
|
+
|
|
123
147
|
alias add create
|
|
124
|
-
|
|
125
|
-
|
|
148
|
+
|
|
149
|
+
|
|
126
150
|
def delete(id)
|
|
127
|
-
|
|
151
|
+
|
|
128
152
|
[@dx, @rss].each {|x| x.delete(id.to_s); x.save}
|
|
129
153
|
|
|
130
154
|
archive_path = Time.at(id.to_i).strftime("%Y/%b/%-d").downcase
|
|
131
|
-
indexpath = File.join(@filepath, archive_path, id.to_s)
|
|
155
|
+
indexpath = File.join(@filepath, archive_path, id.to_s)
|
|
156
|
+
|
|
157
|
+
FileUtils.rm_rf indexpath
|
|
132
158
|
|
|
133
|
-
FileUtils.rm_rf indexpath
|
|
134
|
-
|
|
135
159
|
id.to_s + ' deleted'
|
|
136
|
-
|
|
160
|
+
|
|
137
161
|
end
|
|
138
|
-
|
|
162
|
+
|
|
139
163
|
def description()
|
|
140
164
|
@rss.description
|
|
141
165
|
end
|
|
142
|
-
|
|
166
|
+
|
|
143
167
|
def description=(val)
|
|
144
168
|
@rss.description = val
|
|
145
169
|
end
|
|
@@ -148,64 +172,64 @@ class DailyNotices
|
|
|
148
172
|
image_url, target_url = val.split
|
|
149
173
|
@rss.image_url = image_url
|
|
150
174
|
@rss.image_target_url = target_url
|
|
151
|
-
end
|
|
152
|
-
|
|
175
|
+
end
|
|
176
|
+
|
|
153
177
|
def title()
|
|
154
178
|
@rss.title
|
|
155
179
|
end
|
|
156
|
-
|
|
180
|
+
|
|
157
181
|
def title=(val)
|
|
158
182
|
@rss.title = val
|
|
159
183
|
end
|
|
160
|
-
|
|
184
|
+
|
|
161
185
|
def link()
|
|
162
186
|
@rss.link
|
|
163
187
|
end
|
|
164
|
-
|
|
188
|
+
|
|
165
189
|
def link=(val)
|
|
166
190
|
@rss.link = val
|
|
167
191
|
end
|
|
168
192
|
|
|
169
|
-
|
|
170
|
-
# If you wish override this method or use it in block form to add a
|
|
193
|
+
|
|
194
|
+
# If you wish override this method or use it in block form to add a
|
|
171
195
|
# notifier, callback routine or webhook, whenever a new record is added.
|
|
172
196
|
#
|
|
173
197
|
def on_add(xmlpath, id)
|
|
174
|
-
|
|
198
|
+
|
|
175
199
|
yield(xmlpath, id) if block_given?
|
|
176
|
-
|
|
177
|
-
end
|
|
178
|
-
|
|
200
|
+
|
|
201
|
+
end
|
|
202
|
+
|
|
179
203
|
def save()
|
|
180
|
-
@rss.save @rssfile
|
|
204
|
+
@rss.save @rssfile
|
|
181
205
|
end
|
|
182
|
-
|
|
206
|
+
|
|
183
207
|
def to_dx()
|
|
184
208
|
Dynarex.new @dx.to_xml
|
|
185
209
|
end
|
|
186
|
-
|
|
187
|
-
private
|
|
188
|
-
|
|
210
|
+
|
|
211
|
+
private
|
|
212
|
+
|
|
189
213
|
def create_link(id)
|
|
190
214
|
[File.join(@url_base, File.basename(@filepath), 'status', id)].join('/')
|
|
191
215
|
end
|
|
192
|
-
|
|
216
|
+
|
|
193
217
|
# configures the target page (using a Dynarex document) for a new day
|
|
194
218
|
#
|
|
195
219
|
def new_day()
|
|
196
|
-
|
|
220
|
+
|
|
197
221
|
puts 'inside new_day' if @debug
|
|
198
|
-
|
|
222
|
+
|
|
199
223
|
@archive_path = Time.now.strftime("%Y/%b/%-d").downcase
|
|
200
|
-
|
|
224
|
+
|
|
201
225
|
@indexpath = File.join(@filepath, @archive_path, 'index.xml')
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
if
|
|
226
|
+
FileX.mkdir_p File.dirname(@indexpath)
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
if FileX.exists? @indexpath then
|
|
206
230
|
@dx = Dynarex.new @indexpath
|
|
207
231
|
else
|
|
208
|
-
|
|
232
|
+
|
|
209
233
|
puts 'creating a new dx file' if @debug
|
|
210
234
|
@dx = Dynarex.new @schema, debug: @debug
|
|
211
235
|
@dx.order = 'descending'
|
|
@@ -213,48 +237,48 @@ class DailyNotices
|
|
|
213
237
|
@dx.xslt = @dx_xslt
|
|
214
238
|
@dx.title = @title
|
|
215
239
|
@dx.identifier = @identifier
|
|
216
|
-
end
|
|
217
|
-
|
|
240
|
+
end
|
|
241
|
+
|
|
218
242
|
end
|
|
219
|
-
|
|
243
|
+
|
|
220
244
|
def render_html_files(id)
|
|
221
|
-
|
|
245
|
+
|
|
222
246
|
puts 'inside render_html_files' if @debug
|
|
223
|
-
|
|
247
|
+
|
|
224
248
|
if @target_page == :recordset then
|
|
225
|
-
|
|
249
|
+
FileX.write File.join(@filepath, @archive_path, 'index.html'), \
|
|
226
250
|
@dx.to_html(domain: @url_base)
|
|
227
251
|
else
|
|
228
252
|
|
|
229
253
|
target_path = File.join(@filepath, @archive_path, id, 'index.html')
|
|
230
|
-
|
|
254
|
+
FileX.mkdir_p File.dirname(target_path)
|
|
231
255
|
|
|
232
256
|
rx = @dx.find(id)
|
|
233
257
|
|
|
234
258
|
puts 'rx: ' + rx.inspect if @debug
|
|
235
259
|
kvx = rx.to_kvx
|
|
236
|
-
|
|
237
|
-
yield kvx if block_given?
|
|
260
|
+
|
|
261
|
+
yield kvx if block_given?
|
|
238
262
|
puts 'before kvx.to_xml' if @debug
|
|
239
263
|
puts 'kvx.to_xml : ' + kvx.to_xml.inspect
|
|
240
264
|
puts 'before 2 kvx.to_xml' if @debug
|
|
241
265
|
rxdoc = Rexle.new(kvx.to_xml)
|
|
242
266
|
puts 'after kvx.to_xml' if @debug
|
|
243
|
-
|
|
267
|
+
|
|
244
268
|
rxdoc.instructions << ['xml-styelsheet',\
|
|
245
269
|
"title='XSL_formatting' type='text/xsl' href='#{@target_xslt}'"]
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
unless File.exists? @target_xslt then
|
|
270
|
+
FileX.write target_path.sub(/\.html$/,'.xml', ), rxdoc.xml(pretty: true)
|
|
249
271
|
|
|
250
|
-
|
|
272
|
+
unless FileX.exists? @target_xslt then
|
|
273
|
+
|
|
274
|
+
FileX.write @target_xslt,
|
|
251
275
|
RxSliml.new(fields: %i(description time)).to_xslt
|
|
252
276
|
end
|
|
253
|
-
|
|
254
|
-
File.write target_path, rx.to_html(xslt: @target_xslt)
|
|
255
277
|
|
|
256
|
-
|
|
278
|
+
FileX.write target_path, rx.to_html(xslt: @target_xslt)
|
|
279
|
+
|
|
280
|
+
end
|
|
257
281
|
|
|
258
282
|
end
|
|
259
|
-
|
|
283
|
+
|
|
260
284
|
end
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: daily_notices
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.7.
|
|
4
|
+
version: 0.7.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- James Robertson
|
|
@@ -35,28 +35,28 @@ cert_chain:
|
|
|
35
35
|
mq989lGt58a/Y5CLIB7CrHXwKhKPrMrl9wrNJQaGhmKCpC48MvGPzmGUKYO3OTRK
|
|
36
36
|
QCT4F3Esm7/YTYtL3CQJWI1T
|
|
37
37
|
-----END CERTIFICATE-----
|
|
38
|
-
date:
|
|
38
|
+
date: 2022-01-17 00:00:00.000000000 Z
|
|
39
39
|
dependencies:
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
41
|
name: rss_creator
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
|
-
- - "~>"
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: '0.4'
|
|
47
44
|
- - ">="
|
|
48
45
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: 0.
|
|
46
|
+
version: 0.5.0
|
|
47
|
+
- - "~>"
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: '0.5'
|
|
50
50
|
type: :runtime
|
|
51
51
|
prerelease: false
|
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
53
53
|
requirements:
|
|
54
|
-
- - "~>"
|
|
55
|
-
- !ruby/object:Gem::Version
|
|
56
|
-
version: '0.4'
|
|
57
54
|
- - ">="
|
|
58
55
|
- !ruby/object:Gem::Version
|
|
59
|
-
version: 0.
|
|
56
|
+
version: 0.5.0
|
|
57
|
+
- - "~>"
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: '0.5'
|
|
60
60
|
- !ruby/object:Gem::Dependency
|
|
61
61
|
name: dx_sliml
|
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
metadata.gz.sig
CHANGED
|
Binary file
|