rss_creator 0.3.11 → 0.5.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
- SHA1:
3
- metadata.gz: 1b48716e7acf270cc271e7f08dfea964952dad2d
4
- data.tar.gz: ce18f4992cb68bc6fdda8fba689aa85eeec0daba
2
+ SHA256:
3
+ metadata.gz: 2953523eae0c1cb5f12dc29fae51dc7447649c04e04d666b1400d2c1e6bfdc94
4
+ data.tar.gz: c13d015c8d922c498d14e398bd7910a8e8ba50d376393c5e887e638acd09e259
5
5
  SHA512:
6
- metadata.gz: 6781c75299dd6da72fe6e370725ac99f4507de30a7248be28d42634cf9ef39b4f34da5c34c5b6d6a4091f35a57cb1b184b41046058c5e7ffc243780d7cb82501
7
- data.tar.gz: 368d77c54ff09ed8e0f42f4055106ad6a3799339522f11452ebe1e4282189248966a1ea523adab6281b82f5ab6f3ab59ea17e90669a0c2ec1ef09051e0f90b9c
6
+ metadata.gz: 3918f5754234ff6e513bcb4d0367b85a66076300ca3a6bd9986743c0f5a401944ab3fc63e06e4cf6affd1ebf70b3df2b67b83afae54b1dabb7307a4bd81fd170
7
+ data.tar.gz: 4ca1d32ee4b26e1b1e240a8b9578819f4e68034e984e3d0337a93d66c19b48a91e7dee86be0a98189c334de59c2247460a972b2b9c431a05ff17e95b2395ce9b
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/rss_creator.rb CHANGED
@@ -7,48 +7,53 @@ require 'rss_to_dynarex'
7
7
 
8
8
 
9
9
  class RSScreator
10
+ include RXFHelperModule
10
11
 
11
- attr_accessor :title, :description, :link, :limit, :xslt
12
+ attr_accessor :title, :description, :link, :limit, :xslt, :image_url,
13
+ :image_target_url
12
14
 
13
- def initialize(filepath='rss.xml', dx_xslt: nil,
14
- dx_filename: 'feed.xml', custom_fields: [], limit: 10)
15
+ def initialize(filepath='rss.xml', dx_xslt: nil, dx_filename: 'feed.xml',
16
+ custom_fields: [], limit: 10, debug: false)
15
17
 
16
18
 
17
- @filepath = filepath
19
+ @filepath, @debug = filepath, debug
18
20
 
19
21
  dxfilepath = File.join(File.dirname(filepath), dx_filename)
20
-
22
+
21
23
  if filepath and File.exists? dxfilepath then
22
24
 
23
25
  @dx = Dynarex.new dxfilepath
24
26
  @title, @description, @link = @dx.title, @dx.description, @dx.link
27
+ @image_url = @dx.image
25
28
 
26
29
  else
27
30
  if filepath and File.exists? filepath
28
-
31
+
29
32
  rtd = RSStoDynarex.new filepath
30
33
  @dx = rtd.to_dynarex
31
34
 
32
35
  @title, @description, @link = @dx.title, @dx.description, @dx.link
33
-
36
+ @image_url = @dx.image if @dx.image and @dx.image.length > 1
37
+ @image_target_url = @link if @link and @link.length > 1
38
+
34
39
  else
35
40
 
36
-
37
- schema = 'channel[title, description, link]/' + \
41
+
42
+ schema = 'channel[title, description, link, image]/' + \
38
43
  'item(title, link, description, date'
39
44
  schema += ', ' + custom_fields.join(', ') if custom_fields.any?
40
45
  schema += ')'
41
-
46
+
42
47
  @dx = Dynarex.new schema
43
48
  end
44
49
 
45
- @dx.order = 'descending'
50
+ @dx.order = 'descending'
46
51
  @dx.default_key = 'uid'
47
- @dx.xslt = dx_xslt if dx_xslt
52
+ @dx.xslt = dx_xslt if dx_xslt
53
+
48
54
 
49
-
50
55
  end
51
-
56
+
52
57
  @dx.xslt_schema = 'channel[title:title,description:description,' + \
53
58
  'link:link]/item(title:title,description:description,' + \
54
59
  'link:link,pubDate:date)'
@@ -61,31 +66,31 @@ class RSScreator
61
66
 
62
67
  end
63
68
 
64
- def add(item: {title: '', link: '', description: ''}, id: nil)
69
+ def add(itemx={title: '', link: '', description: ''}, item: itemx, id: nil)
65
70
 
66
71
  unless item[:title] and item[:link] then
67
- raise 'RSScreator: title or link can\'t be blank'
72
+ raise 'RSScreator: title or link can\'t be blank'
68
73
  end
69
-
74
+
70
75
  record = {date: Time.now.strftime("%a, %d %b %Y %H:%M:%S %z")}.merge(item)
71
76
  @dx.create(record, id: id)
72
-
77
+
73
78
  @dirty = true
74
-
79
+
75
80
  end
76
81
 
77
82
  def save(new_filepath=nil)
78
83
 
79
84
  filepath = new_filepath ? new_filepath : @filepath
80
- File.write filepath, print_rss
85
+ FileX.write filepath, print_rss
81
86
  @dx.save File.join(File.dirname(filepath), @dxfilename) if @dxfilename
82
87
  end
83
-
88
+
84
89
  def description=(val)
85
90
  @description = val
86
91
  @dirty = true
87
92
  end
88
-
93
+
89
94
  def delete(id)
90
95
  @dx.delete id.to_s
91
96
  end
@@ -97,11 +102,23 @@ class RSScreator
97
102
  @dx
98
103
  end
99
104
 
105
+ def image_url=(val)
106
+ @image_url = val
107
+ @dirty = true
108
+ end
109
+
110
+ alias image= image_url=
111
+
112
+ def image_target_url=(val)
113
+ @image_target_url = val
114
+ @dirty = true
115
+ end
116
+
100
117
  def link=(val)
101
118
  @link = val
102
119
  @dirty = true
103
- end
104
-
120
+ end
121
+
105
122
  def title=(val)
106
123
  @title = val
107
124
  @dirty = true
@@ -114,30 +131,43 @@ class RSScreator
114
131
  private
115
132
 
116
133
  def print_rss()
117
-
134
+
118
135
  return @rss unless @dirty
119
136
 
120
137
  if @title.nil? or @description.nil? then
121
- raise 'RSScreator: title or description can\'t be blank'
138
+ raise 'RSScreator: title or description can\'t be blank'
122
139
  end
123
140
 
124
141
  @dx.title, @dx.description, @dx.link = @title, @description, @link || ''
125
-
142
+ @dx.image = @image_url if @dx.respond_to? :image
143
+
126
144
  @rss = if @xslt then
127
-
145
+
128
146
  @dx.to_rss({limit: @limit}) do |doc|
129
-
147
+
130
148
  doc.instructions << ['xml-stylesheet',\
131
149
  "title='XSL_formatting' type='text/xsl' href='#{@xslt}'"]
132
-
133
- end
134
-
150
+
151
+ end
152
+
135
153
  else
136
-
137
- @dx.to_rss({limit: @limit})
138
-
154
+
155
+ @dx.to_rss({limit: @limit}) do |doc|
156
+
157
+ if @image_url then
158
+
159
+ img = Rexle::Element.new('image')
160
+ img.add Rexle::Element.new('url').add_text @image_url
161
+ img.add Rexle::Element.new('link').add_text @image_target_url
162
+
163
+ doc.root.element('channel/item').insert_before img
164
+
165
+ end
166
+
167
+ end
168
+
139
169
  end
140
-
170
+
141
171
  @dirty = false
142
172
  @rss
143
173
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rss_creator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.11
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,27 +10,32 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTgwMjAzMTUwNDA0WhcN
15
- MTkwMjAzMTUwNDA0WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8S9l5
17
- AGhl51t0jbvY3cN3SbRio0nFH7pL0z+QWeDCf1IvkRegRk2mu0rm2L6CoS46rB4G
18
- dRfaqrIj3T+5BkGjvnWyh3BIIQVRrYSKt9QWJMyjXIjZp1CyAhzd3rEkHhJmyQnv
19
- vIc/g4CjQ1Ep7kQeaSnF+A7p2VSdMaXA/5EhVLEgioANWHP+VfTk5L+JqXzSdM+p
20
- KF0DkmOZm7Vro46fgOGB+/HiSljfd5a5KxJFtQM3wQrNCIG0GQaRBS2CrCBHteAh
21
- BY+P3YwLP3v2mARKyaEIWbTljM22CzD8Yea00lt7tCloQQ6Hy1ZN0hUEIGy1FfCL
22
- 4cc2hvCcOXrlXQvTAgMBAAGjgYowgYcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
23
- HQYDVR0OBBYEFF4sAsOGtX/+4Nxylr7s9kl51M+mMCYGA1UdEQQfMB2BG2dlbW1h
24
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTAmBgNVHRIEHzAdgRtnZW1tYXN0ZXJAamFt
25
- ZXNyb2JlcnRzb24uZXUwDQYJKoZIhvcNAQEFBQADggEBALmCAgE81r7fevjq1Nus
26
- qyyU4PIsFlrpDlbY7uowmbd9OJxmSkSJLFk59bwmIaQLeGiBDRSxWqEBxtzc+5r+
27
- jFK33YIP0+sI/iW8zCawlxBJBVacfUtDyEOdfrb4mLIEjEbpYWtVH4AM2gm/BlME
28
- +X8XYihYtiqJuANlhwivTE09FfZ2a3xoISOZ1dU79pLConNkkzELF4yarOxaqaAa
29
- h4aCSVetgdtOMaZHIhYz7KwlIVs+K5bYdWSFrs5G4ZmVAaQO3pg+kTCHPmXXhqhc
30
- ereR/A3lLBufjE1Bw4pUqjqWyauq8luIZ9O/y2DLGFLlJWppq6LiCVsn4eufzI2Q
31
- yn8=
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjEwMjI0MTEzNTE4WhcN
15
+ MjIwMjI0MTEzNTE4WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC/EdPv
17
+ Z9PmSgZQ31H8hgTyVkC5Ww2VyrxJbX9LA2xX++xTEMm2LvLs4G9vGeNWiUpLdSZt
18
+ EkPMLX58IhDJoETYMF4UpAw/tOPMlvzrmM9vFTdsZXKXwTwS3blbWahUgRAlXWpV
19
+ pbNj+SQlnIZklZ8FR/rvXE98wAFO4IIldQcyuUi9ehrYfazpS6fOg3f3Yg6ffPMs
20
+ xWUmhF4zQs+J6utjoJeWyVHWwHFpcmzMIEcLbnGOsn6JHdPmDaCTyAWjbrTsbMRn
21
+ o4BHS81Mn9ao3FDOR+Rj/zxZJNwEoEdWtQXCqCRFtBNehODqjSGNEBlYQmG0gQJ1
22
+ 2PiXAf8lcqVo2KJPMVPjMSwKDQKdfMf8/EqZjwH+OrrH38AjrjJgOXH7/amVutBb
23
+ gCyoseuD+sB5tXXuw1pHsMYJJ/NB7GZ+ASmc3B2dQAXOWFgykpVcYIRfvMmwZP4v
24
+ +Vb0c3yg0FFzrwqVM3VkiAdEDWN2Rre0p5DOTkRnq+lFBGa4PG3aGouyBlMCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUhDWnNVwu
26
+ b9LRBkr5cLvEtdMUsJgwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAo0n6mqehv/bgKVFYMGIfB/tq2NKDBvELxb8LRVpZ
29
+ NS4iZKtM+N5OD+zmxM8bseB08B2Yxks9y1997X5wVWWdK54oJej5qSVomfHQIqTh
30
+ Fg8+FDZk6gkDBTIia5jZOK+s9AUxoYpftcorQOio3liFq+yCqW+s6hP64RkY94sR
31
+ voFGWhBW0WG1QEGqkqUHTit2G70yBhhIp/rm7WsyG5aRuzPONcyLY8VFXhSINKmj
32
+ 0Y+xZNDlcsrWogXVkGsZ0PoRNZZ4g4iyErPMwE452ObevrSVrIwbpNtsEdELB3nT
33
+ GhAiUqHiF6mNOkTz5Rj+RnhU07eAcTtHI+EesCu+U0UwvV0NAWG9/E/FkHO0a5Zj
34
+ GoDraKZUzvcj/SsP13HRpvscyV1L0cxGWubkEtJYKFGKlkjHU1WdV3xLvWLQSquN
35
+ CmoNNvIZ3zS4vUkMoFR7S0bXN/xdxzLVn5uGLJ8FwP76BqKlR2+xV5Bj+40hyMDP
36
+ s+qwrtoA3kBtGhpVjCn/TE5q
32
37
  -----END CERTIFICATE-----
33
- date: 2018-02-03 00:00:00.000000000 Z
38
+ date: 2022-01-17 00:00:00.000000000 Z
34
39
  dependencies:
35
40
  - !ruby/object:Gem::Dependency
36
41
  name: rss_to_dynarex
@@ -56,24 +61,24 @@ dependencies:
56
61
  name: rss_sliml
57
62
  requirement: !ruby/object:Gem::Requirement
58
63
  requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.1'
62
64
  - - ">="
63
65
  - !ruby/object:Gem::Version
64
- version: 0.1.0
66
+ version: 0.2.0
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.2'
65
70
  type: :runtime
66
71
  prerelease: false
67
72
  version_requirements: !ruby/object:Gem::Requirement
68
73
  requirements:
69
- - - "~>"
70
- - !ruby/object:Gem::Version
71
- version: '0.1'
72
74
  - - ">="
73
75
  - !ruby/object:Gem::Version
74
- version: 0.1.0
76
+ version: 0.2.0
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '0.2'
75
80
  description:
76
- email: james@jamesrobertson.eu
81
+ email: digital.robertson@gmail.com
77
82
  executables: []
78
83
  extensions: []
79
84
  extra_rdoc_files: []
@@ -99,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
104
  version: '0'
100
105
  requirements: []
101
106
  rubyforge_project:
102
- rubygems_version: 2.6.13
107
+ rubygems_version: 2.7.10
103
108
  signing_key:
104
109
  specification_version: 4
105
110
  summary: A gem for creating RSS feeds
metadata.gz.sig CHANGED
Binary file