daily_notices 0.6.2 → 0.7.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
- SHA1:
3
- metadata.gz: d725b45ca1730c335edf68833584b02478233d4e
4
- data.tar.gz: 853261a2c6961ec11103e308e1e10af77f19509b
2
+ SHA256:
3
+ metadata.gz: be073789390a9bc4b8ee8f1355b359c43a03db7b39d4a1092811c5a0df281275
4
+ data.tar.gz: 2152532d8674c8486b50fce13a6329337c08994b7cd264bc11025a12d2259db0
5
5
  SHA512:
6
- metadata.gz: e15707a65b1dd40e4ef5c6a20951d40d5ef6c41cff4a6084fe83237cfe248ac241b2d77534057201a075be080f5fd29ba093b2a35a783300c84f9e31c9068b4e
7
- data.tar.gz: 6e5664b4a662bb57afa68f699308032a34ba4bfd678ef7e0a986efafd39ff01474dff1bfd1a99f805c3d876f1e1c4fa989aba347857af4c56e6a4bfc903a48d6
6
+ metadata.gz: 6ed7f49c33b34620f0a34c6f68fd0774e474e9de64f0890de135a1af8c26a8e34637398a0babee927259850ccbb9ca0ba791dc069d2a21fcf404a69f289b3294
7
+ data.tar.gz: ac0743f609fb732536bd2e2a5b03ff60c2a29f624b92cc2e9bb2cfd9f61f59bd49017c89aabeda9958a73037c1403415166095730a44ad5d3d1e62ba41af0090
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/daily_notices.rb CHANGED
@@ -9,18 +9,18 @@ require 'fileutils'
9
9
  require 'rss_creator'
10
10
 
11
11
 
12
-
13
12
  class DailyNotices
14
13
 
15
14
  attr_accessor :title, :description, :link, :dx_xslt, :rss_xslt
16
15
 
17
16
  def initialize(filepath='', url_base: 'http:/127.0.0.1/', identifier: '',
18
17
  dx_xslt: '', rss_xslt: '', target_page: :recordset,
19
- target_xslt: '', title: 'daily notices')
18
+ target_xslt: '', title: 'daily notices', log: nil,
19
+ debug: false)
20
20
 
21
21
  @filepath, @url_base, @dx_xslt, @rss_xslt, @target_page, @target_xslt, \
22
- @identifier = filepath, url_base, dx_xslt, rss_xslt, target_page, \
23
- target_xslt, identifier
22
+ @identifier, @log, @debug = filepath, url_base, dx_xslt, rss_xslt, \
23
+ target_page, target_xslt, identifier, log, debug
24
24
 
25
25
 
26
26
  @schema ||= 'items[title, identifier]/item(title, description, time, link)'
@@ -78,14 +78,15 @@ class DailyNotices
78
78
  end
79
79
 
80
80
  def create(id: Time.now.to_i.to_s,
81
- item: {time: Time.now.strftime('%H:%M %p - %d %b %Y'), title: nil})
81
+ item: {time: Time.now.strftime('%H:%M %p - %d %b %Y'), title: nil})
82
82
 
83
+ @log.info 'daily_notices/create: item: ' + item.inspect if @log
83
84
  h = item
84
85
 
85
86
  new_day() if @day != Time.now.day
86
87
 
87
88
  if @dx.all.any? and
88
- @dx.all.first.description == CGI.unescape(h[:description]) then
89
+ @dx.all.first.description == CGI.unescape(h[:description].to_s) then
89
90
 
90
91
  return :duplicate
91
92
 
@@ -97,35 +98,12 @@ class DailyNotices
97
98
  h[:time] ||= Time.now.strftime('%H:%M %p - %d %b %Y')
98
99
 
99
100
  #@dx.create({description: description, time: time}, id: id)
101
+ puts 'before @dx.create' if @debug
100
102
  @dx.create(h, id: id)
103
+ puts 'after @dx.create' if @debug
101
104
  @dx.save @indexpath
102
105
 
103
- if @target_page == :recordset then
104
- File.write File.join(@filepath, @archive_path, 'index.html'), \
105
- @dx.to_html(domain: @url_base)
106
- else
107
-
108
- target_path = File.join(@filepath, @archive_path, id, 'index.html')
109
- FileUtils.mkdir_p File.dirname(target_path)
110
-
111
- rx = @dx.find(id)
112
-
113
- kvx = rx.to_kvx
114
- yield kvx if block_given?
115
-
116
- rxdoc = Rexle.new(kvx.to_xml)
117
- rxdoc.instructions << ['xml-styelsheet',\
118
- "title='XSL_formatting' type='text/xsl' href='#{@target_xslt}'"]
119
- File.write target_path.sub(/\.html$/,'.xml', ), rxdoc.xml(pretty: true)
120
-
121
- unless File.exists? @target_xslt then
122
- File.write @target_xslt,
123
- RxSliml.new(fields: %i(description time)).to_xslt
124
- end
125
-
126
- File.write target_path, rx.to_html(xslt: @target_xslt)
127
-
128
- end
106
+ render_html_files(id)
129
107
 
130
108
  # Add it to the RSS document
131
109
 
@@ -141,6 +119,34 @@ class DailyNotices
141
119
 
142
120
  alias add create
143
121
 
122
+
123
+ def delete(id)
124
+
125
+ [@dx, @rss].each {|x| x.delete(id.to_s); x.save}
126
+
127
+ archive_path = Time.at(id.to_i).strftime("%Y/%b/%-d").downcase
128
+ indexpath = File.join(@filepath, archive_path, id.to_s)
129
+
130
+ FileUtils.rm_rf indexpath
131
+
132
+ id.to_s + ' deleted'
133
+
134
+ end
135
+
136
+ def description()
137
+ @rss.description
138
+ end
139
+
140
+ def description=(val)
141
+ @rss.description = val
142
+ end
143
+
144
+ def image=(val)
145
+ image_url, target_url = val.split
146
+ @rss.image_url = image_url
147
+ @rss.image_target_url = target_url
148
+ end
149
+
144
150
  def title()
145
151
  @rss.title
146
152
  end
@@ -156,14 +162,7 @@ class DailyNotices
156
162
  def link=(val)
157
163
  @rss.link = val
158
164
  end
159
-
160
- def description()
161
- @rss.description
162
- end
163
-
164
- def description=(val)
165
- @rss.description = val
166
- end
165
+
167
166
 
168
167
  # If you wish override this method or use it in block form to add a
169
168
  # notifier, callback routine or webhook, whenever a new record is added.
@@ -178,6 +177,10 @@ class DailyNotices
178
177
  @rss.save @rssfile
179
178
  end
180
179
 
180
+ def to_dx()
181
+ Dynarex.new @dx.to_xml
182
+ end
183
+
181
184
  private
182
185
 
183
186
  def create_link(id)
@@ -188,6 +191,8 @@ class DailyNotices
188
191
  #
189
192
  def new_day()
190
193
 
194
+ puts 'inside new_day' if @debug
195
+
191
196
  @archive_path = Time.now.strftime("%Y/%b/%-d").downcase
192
197
 
193
198
  @indexpath = File.join(@filepath, @archive_path, 'index.xml')
@@ -197,7 +202,9 @@ class DailyNotices
197
202
  if File.exists? @indexpath then
198
203
  @dx = Dynarex.new @indexpath
199
204
  else
200
- @dx = Dynarex.new @schema
205
+
206
+ puts 'creating a new dx file' if @debug
207
+ @dx = Dynarex.new @schema, debug: @debug
201
208
  @dx.order = 'descending'
202
209
  @dx.default_key = @default_key
203
210
  @dx.xslt = @dx_xslt
@@ -205,6 +212,46 @@ class DailyNotices
205
212
  @dx.identifier = @identifier
206
213
  end
207
214
 
215
+ end
216
+
217
+ def render_html_files(id)
218
+
219
+ puts 'inside render_html_files' if @debug
220
+
221
+ if @target_page == :recordset then
222
+ File.write File.join(@filepath, @archive_path, 'index.html'), \
223
+ @dx.to_html(domain: @url_base)
224
+ else
225
+
226
+ target_path = File.join(@filepath, @archive_path, id, 'index.html')
227
+ FileUtils.mkdir_p File.dirname(target_path)
228
+
229
+ rx = @dx.find(id)
230
+
231
+ puts 'rx: ' + rx.inspect if @debug
232
+ kvx = rx.to_kvx
233
+
234
+ yield kvx if block_given?
235
+ puts 'before kvx.to_xml' if @debug
236
+ puts 'kvx.to_xml : ' + kvx.to_xml.inspect
237
+ puts 'before 2 kvx.to_xml' if @debug
238
+ rxdoc = Rexle.new(kvx.to_xml)
239
+ puts 'after kvx.to_xml' if @debug
240
+
241
+ rxdoc.instructions << ['xml-styelsheet',\
242
+ "title='XSL_formatting' type='text/xsl' href='#{@target_xslt}'"]
243
+ File.write target_path.sub(/\.html$/,'.xml', ), rxdoc.xml(pretty: true)
244
+
245
+ unless File.exists? @target_xslt then
246
+
247
+ File.write @target_xslt,
248
+ RxSliml.new(fields: %i(description time)).to_xslt
249
+ end
250
+
251
+ File.write target_path, rx.to_html(xslt: @target_xslt)
252
+
253
+ end
254
+
208
255
  end
209
256
 
210
- end
257
+ end
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.6.2
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,28 +10,32 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
- YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
- 8ixkARkWAmV1MB4XDTE2MTExMjE4MjMwOFoXDTE3MTExMjE4MjMwOFowSDESMBAG
16
- A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
- EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
- ggEBAN/1BcxutxrU9edYSqrP6O3pPpH/G1u2vibUnPIYfaMj8p2wUlzNp7Z7rH5K
19
- Q1e2ILBaEwx48x+fgd1wXqCv5+dyiEaUC9THNUCGluRDs56rXXWdPd5tW0p53Q1F
20
- i8pFwGMVle+wZ18/XVYhhGoLlpuFkBk1PKBXOxk6MLDJFxb5a451xAtbwpRkF/Ze
21
- jQXl15pHDnCBCsUaMs+kkPE3qjn5GFPScVvOhIPPERpiRIeT3zvQENnrXuEP6eKj
22
- SOB1c3BrZuUD6W84K7q1W7bYw1ian7hrD6G9hDD6mD3OwDK0aAMXA7lsu2uFsgM5
23
- EVbGp+1uN07r/emN3ctFOUh5n4kCAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
- DwQEAwIEsDAdBgNVHQ4EFgQUNgnoUSu+we+fhkcQsAAZZM5fWXcwJgYDVR0RBB8w
25
- HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
26
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAAy2H3A1O
27
- qiilNUTDnZ7l7FH2R68rT/ixu0A+tgDxIO4xWW0FacBYjSJ9FG8/ogIcbBZ+1psc
28
- p/ztWPercXClXMC5RKajkQA2fsBfhHAtKw7Kn8Jb3jQxF98R6c6/l3NKxTFheJHD
29
- MAZ26TlLYXrNlKBoSHeSZeCuSdgn1haaUPgzePVmC41gX7+YRvrezwf0FakFtlNL
30
- KpWSb1Kst6fM7s501Upx5VvOrlmPu3FOVSjO+JE1g0XL8NpOqDXYPS0GxubZAlI0
31
- 8he6uWzjGUd5dEdL/ASnQ9lBbvl0TStzNEnsGNBV94H/6fnjx7MHQ/CWQE/M877s
32
- zcuMgGZau1C2mg==
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjEwMjI0MTMyOTM2WhcN
15
+ MjIwMjI0MTMyOTM2WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDJvsa6
17
+ TnHpX2TYC4DnR82ZR2GNtpA1dNtRlwr/Z21VmkZxSq0YgpbNvGNLZHQFm03egVwR
18
+ KHj7RifsC3RBlzLNZTBvUkmQSJiOZvXB7tWWT3kA5HCwjyMkGuLPxOVDY7HyvEVF
19
+ kxFZgylN+66aJWV6gPSQ347jihF6WXIBfUYlDg8s4Bkl9KI8huzPTrP2UTXjK6Tz
20
+ mXBvLf5nv9FvL+TwQBOXwxreGW9zUJWRrtIpvqu+QFPVBSu4Ov4XDdik9jH2e5RZ
21
+ s1z1lSmsYiP10o3KbOaVZ4wjEDu626a+N1sjS4YU18CvHOwgESOaFqEpWjOsWKep
22
+ +6tjWbYVKSi2vfU+a/jNPEA0ssvqFieFIO00Jv1LyZFD/U3q8ZTDkMHucz4E8f80
23
+ mUJacvaFG3DTYiMDkIU9BuNy4vvIf+AoeTR5AhsoZBMSTU1A0EnH5mh790wkJab8
24
+ uY1GBwbmxeWl4OGD675ygAJSL2tQJAQBDMNKi+fB73/GWBsQAXBBR3LN5z0CAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUjkgH/7j1
26
+ kSzWPoe0UDHGVZGJPbEwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAi0SDZ62eIMvbMY5FSXEY30wSVmiq+JhcIBjfHGXL
29
+ hQkhYqAnpzXD7oq0c3USmZtTGn4N8Cy1Sm0WR3RUvbYF6Dta2o1UKQ0vIko/i0kj
30
+ cNcvG6LcQkUt1mPhEMWAVoWvBL7xySN6yU9Ls7YmpW9Y+62v74NwGqx8c6N2VZKL
31
+ Vw24Rh4OC9e5cIjO+SR0KRI4+YFm86SnPsVXycqaHvMO8rNBgxGqR1FfFYrNUn0I
32
+ jafFtIcshyvSFoAaYK5GbPD8Xw/vZ/Red1SXdjmC4+j5ZtAx2c+vgK1lErjGqsYp
33
+ /XJl7PJxLwoAHYtYjensYXkRw8RZ7Re+HsW4IAmq1IQtBEYjjgWUwEhry56jQ/1A
34
+ ovxhAIUn9BlZdnsefgTYj2Cy+7z0VyGgWOwrxb1WmGNqjIvZtlFEQzm2yGelNIB2
35
+ mq989lGt58a/Y5CLIB7CrHXwKhKPrMrl9wrNJQaGhmKCpC48MvGPzmGUKYO3OTRK
36
+ QCT4F3Esm7/YTYtL3CQJWI1T
33
37
  -----END CERTIFICATE-----
34
- date: 2017-07-04 00:00:00.000000000 Z
38
+ date: 2021-02-24 00:00:00.000000000 Z
35
39
  dependencies:
36
40
  - !ruby/object:Gem::Dependency
37
41
  name: rss_creator
@@ -39,20 +43,20 @@ dependencies:
39
43
  requirements:
40
44
  - - "~>"
41
45
  - !ruby/object:Gem::Version
42
- version: '0.3'
46
+ version: '0.4'
43
47
  - - ">="
44
48
  - !ruby/object:Gem::Version
45
- version: 0.3.9
49
+ version: 0.4.2
46
50
  type: :runtime
47
51
  prerelease: false
48
52
  version_requirements: !ruby/object:Gem::Requirement
49
53
  requirements:
50
54
  - - "~>"
51
55
  - !ruby/object:Gem::Version
52
- version: '0.3'
56
+ version: '0.4'
53
57
  - - ">="
54
58
  - !ruby/object:Gem::Version
55
- version: 0.3.9
59
+ version: 0.4.2
56
60
  - !ruby/object:Gem::Dependency
57
61
  name: dx_sliml
58
62
  requirement: !ruby/object:Gem::Requirement
@@ -62,7 +66,7 @@ dependencies:
62
66
  version: '0.1'
63
67
  - - ">="
64
68
  - !ruby/object:Gem::Version
65
- version: 0.1.7
69
+ version: 0.1.8
66
70
  type: :runtime
67
71
  prerelease: false
68
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -72,49 +76,49 @@ dependencies:
72
76
  version: '0.1'
73
77
  - - ">="
74
78
  - !ruby/object:Gem::Version
75
- version: 0.1.7
79
+ version: 0.1.8
76
80
  - !ruby/object:Gem::Dependency
77
81
  name: rx_sliml
78
82
  requirement: !ruby/object:Gem::Requirement
79
83
  requirements:
80
84
  - - "~>"
81
85
  - !ruby/object:Gem::Version
82
- version: '0.1'
86
+ version: '0.2'
83
87
  - - ">="
84
88
  - !ruby/object:Gem::Version
85
- version: 0.1.2
89
+ version: 0.2.1
86
90
  type: :runtime
87
91
  prerelease: false
88
92
  version_requirements: !ruby/object:Gem::Requirement
89
93
  requirements:
90
94
  - - "~>"
91
95
  - !ruby/object:Gem::Version
92
- version: '0.1'
96
+ version: '0.2'
93
97
  - - ">="
94
98
  - !ruby/object:Gem::Version
95
- version: 0.1.2
99
+ version: 0.2.1
96
100
  - !ruby/object:Gem::Dependency
97
101
  name: rss_sliml
98
102
  requirement: !ruby/object:Gem::Requirement
99
103
  requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '0.1'
103
104
  - - ">="
104
105
  - !ruby/object:Gem::Version
105
- version: 0.1.0
106
+ version: 0.2.0
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '0.2'
106
110
  type: :runtime
107
111
  prerelease: false
108
112
  version_requirements: !ruby/object:Gem::Requirement
109
113
  requirements:
110
- - - "~>"
111
- - !ruby/object:Gem::Version
112
- version: '0.1'
113
114
  - - ">="
114
115
  - !ruby/object:Gem::Version
115
- version: 0.1.0
116
+ version: 0.2.0
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '0.2'
116
120
  description:
117
- email: james@jamesrobertson.eu
121
+ email: digital.robertson@gmail.com
118
122
  executables: []
119
123
  extensions: []
120
124
  extra_rdoc_files: []
@@ -140,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
144
  version: '0'
141
145
  requirements: []
142
146
  rubyforge_project:
143
- rubygems_version: 2.6.8
147
+ rubygems_version: 2.7.10
144
148
  signing_key:
145
149
  specification_version: 4
146
150
  summary: A public facing noticeboard which is centered around an RSS feed.
metadata.gz.sig CHANGED
Binary file