scms 4.0.3 → 4.1.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 +8 -8
- data/assets/air-monkey-hook.js +2 -1
- data/lib/scms.rb +64 -153
- data/lib/scms/scms-pageoptions.rb +7 -1
- data/lib/scms/scms-parser.rb +76 -0
- data/lib/scms/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NTRkMmQ1YTk0OWNlYmUxMTQ5ZWE5N2IwMTE1YmFjZmYzY2E3OWJiNg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MzcxZTg1YmMwNThmMjE1MGZhOTk4NDRiZDBkZTY5NjFlNzVlMTNiMw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YTBiZGE3NmYzZTUyMmI5YjAyZWI3NDJjOTYzNGMwM2ZlZWQ1NzhmNzU2NzYz
|
10
|
+
MTJmZDIzMmZlMGNiZTM1YTRlMDVlZTE1MmZjZWZkNTVjMWJhZjg3ZDFmODBm
|
11
|
+
NTY4NTVkMjQ3MWRmYWY1OWRkYTBjNzA3M2U5ZDU3NDkwNDgzZjk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YzFhZTYyNmVmMjlmODgwMWIzODk3MzEwMGNlZjAwMzBjY2EyYTVmZTdmODk1
|
14
|
+
MzlhZGZlNWI4ZDEwYjY2ZjBkMTEwZWU4OTc0NDYwMzM5NjY0NmM4ODQ2NDgw
|
15
|
+
Njg2M2JmMDgyNzE0NGM0M2RhZjU4ZDY0YzBjMGM4Nzg2ZmE2M2E=
|
data/assets/air-monkey-hook.js
CHANGED
data/lib/scms.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
module Scms
|
2
2
|
require "scms/version"
|
3
|
-
require 'scms/scms-pageoptions.rb'
|
4
|
-
require 'scms/scms-helpers.rb'
|
5
3
|
require 'scms/scms-utils.rb'
|
4
|
+
require 'scms/scms-helpers.rb'
|
5
|
+
require 'scms/scms-pageoptions.rb'
|
6
|
+
require 'scms/scms-parser.rb'
|
6
7
|
require 'scms/scms-xmlhandler.rb'
|
7
8
|
require 'scms/s3deploy.rb'
|
8
9
|
|
@@ -48,7 +49,7 @@ module Scms
|
|
48
49
|
ScmsUtils.writelog("type NUL > #{bootstrap}", website)
|
49
50
|
end
|
50
51
|
end
|
51
|
-
Scms.
|
52
|
+
Scms.generatePages(website, settings, options)
|
52
53
|
else
|
53
54
|
ScmsUtils.errLog("Config is empty")
|
54
55
|
end
|
@@ -57,18 +58,17 @@ module Scms
|
|
57
58
|
ScmsUtils.log(ScmsUtils.uriEncode("file:///#{website}"))
|
58
59
|
end
|
59
60
|
|
60
|
-
def Scms.
|
61
|
+
def Scms.generatePages(website, settings, options)
|
61
62
|
# build pages defined in config file
|
62
|
-
Scms.
|
63
|
+
Scms.generateSettingsPages(website, settings, options)
|
63
64
|
# build pages pased on _pages folder
|
64
|
-
Scms.
|
65
|
+
Scms.generateFolderPages(website, settings, options)
|
65
66
|
end
|
66
67
|
|
67
|
-
def Scms.
|
68
|
+
def Scms.generateSettingsPages(website, settings, options)
|
68
69
|
if settings["pages"] != nil
|
69
70
|
ScmsUtils.log("Compiling Pages:")
|
70
71
|
settings["pages"].each do |pagedata|
|
71
|
-
#puts "pagedata: #{pagedata}"
|
72
72
|
if pagedata != nil
|
73
73
|
pagedata.each do |pageOptions|
|
74
74
|
pagename = pageOptions[0]
|
@@ -79,41 +79,39 @@ module Scms
|
|
79
79
|
|
80
80
|
# Dont save a page if no views have been defined (so the config han have pages for nav building)
|
81
81
|
break if views.length < 1
|
82
|
-
Scms.
|
82
|
+
Scms.savePage(settings, website, pageOptions, views, options)
|
83
83
|
end
|
84
84
|
end
|
85
|
-
#ScmsUtils.log( out )
|
86
85
|
end
|
87
86
|
end
|
88
87
|
end
|
89
88
|
|
90
89
|
def Scms.getSettingsViews(settingsViews, website, pageOptions, options)
|
91
|
-
views = Hash.new
|
90
|
+
views = Hash.new {}
|
92
91
|
if settingsViews != nil
|
93
92
|
settingsViews.each do |view|
|
94
93
|
viewname = view[0]
|
94
|
+
|
95
95
|
viewparts = view[1].split("?") # This allows views to have a query string in the config
|
96
96
|
viewpath = viewparts[0]
|
97
97
|
viewqs = viewparts[1]
|
98
|
+
viewData = Hash[viewqs.split('&').map{ |q| q.split('=') }] if viewqs != nil
|
98
99
|
|
99
|
-
|
100
|
-
|
101
|
-
views[viewname] = Scms.parseView(viewname, viewpath, website, pageOptions, options, viewModel)
|
100
|
+
viewmodel = Scms.getViewModel(viewname, viewpath, website, pageOptions, options, viewData)
|
101
|
+
views[viewname] = Scms.renderView(viewpath, viewmodel)
|
102
102
|
end
|
103
103
|
end
|
104
104
|
return views
|
105
105
|
end
|
106
106
|
|
107
|
-
def Scms.
|
107
|
+
def Scms.generateFolderPages(website, settings, options)
|
108
108
|
pagesFolder = File.join(website, "_pages")
|
109
109
|
Dir.glob("#{pagesFolder}/**/*/").each do |pageFolder|
|
110
110
|
pagename = File.basename(pageFolder, ".*")
|
111
|
-
#puts "pagename: #{pagename}"
|
112
|
-
|
113
111
|
pageconfig = nil
|
114
112
|
pageconfig = Scms.getSettings(pageFolder) if File.exists?(File.join(pageFolder, "_config.yml"))
|
115
113
|
pageOptions = PageOptions.new(pagename, website, pageconfig, settings)
|
116
|
-
views = Hash.new
|
114
|
+
views = Hash.new {}
|
117
115
|
if pageconfig != nil
|
118
116
|
views = Scms.getSettingsViews(pageconfig["views"], website, pageOptions, options) if pageconfig["views"] != nil
|
119
117
|
end
|
@@ -121,172 +119,89 @@ module Scms
|
|
121
119
|
Dir.glob(File.join(pageFolder, "*")).reject { |f| f =~ /\.yml$/ || File.directory?(f) }.each do |view|
|
122
120
|
viewname = File.basename(view, ".*")
|
123
121
|
viewpath = Pathname.new(view).relative_path_from(Pathname.new(website)).to_s
|
124
|
-
|
122
|
+
viewmodel = Scms.getViewModel(viewname, viewpath, website, pageOptions, options)
|
123
|
+
views[viewname] = Scms.renderView(viewpath, viewmodel)
|
125
124
|
end
|
126
|
-
Scms.
|
125
|
+
Scms.savePage(settings, website, pageOptions, views, options)
|
127
126
|
end
|
128
127
|
end
|
129
128
|
|
130
|
-
def Scms.
|
129
|
+
def Scms.getViewModel(viewname, viewpath, website, pageOptions, options, viewData = nil)
|
131
130
|
#puts "parsing view: #{viewname}"
|
132
131
|
|
133
|
-
|
132
|
+
viewmodel = Hash.new {}
|
134
133
|
viewfullpath = File.join(website, viewpath)
|
135
134
|
|
136
135
|
if File.exists?(viewfullpath)
|
137
|
-
begin
|
138
|
-
htmlsnipet = File.read(viewfullpath)
|
139
|
-
rescue Exception=>e
|
140
|
-
ScmsUtils.errLog(e.message)
|
141
|
-
ScmsUtils.log(e.backtrace.inspect)
|
142
|
-
end
|
143
|
-
|
144
|
-
if htmlsnipet.empty?
|
145
|
-
ScmsUtils.log("Empty view: #{viewpath}")
|
146
|
-
end
|
147
|
-
|
148
|
-
hasHandler = false
|
149
|
-
if pageOptions.handler != nil
|
150
|
-
handlerpath = File.join(website, pageOptions.handler)
|
151
|
-
if File.exists?(handlerpath)
|
152
|
-
ScmsUtils.log( "Handler found: #{pageOptions.handler}" )
|
153
|
-
hasHandler = true
|
154
|
-
begin
|
155
|
-
require handlerpath
|
156
|
-
# #hasHandler = ScmsHandler.instance_methods(false).include? :render
|
157
|
-
# hasHandler = ScmsHandler.method_defined?(:render)
|
158
|
-
# puts "has render method: #{hasHandler}"
|
159
|
-
# if !hasHandler
|
160
|
-
# ScmsUtils.errLog( "Handler doesnt have a render method" )
|
161
|
-
# end
|
162
|
-
rescue Exception => e
|
163
|
-
ScmsUtils.errLog( "Problem running: ScmsHandler: #{e.message}" )
|
164
|
-
end
|
165
|
-
else
|
166
|
-
ScmsUtils.errLog("Handler not found: #{pageOptions.handler}")
|
167
|
-
ScmsUtils.writelog("::Handler not found #{pageOptions.handler}", website)
|
168
|
-
ScmsUtils.writelog("type NUL > #{handlerpath}", website)
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
if hasHandler
|
173
|
-
ScmsUtils.log("Rendering with handler")
|
174
|
-
begin
|
175
|
-
viewSnippet = ScmsHandler.render(viewpath)
|
176
|
-
rescue Exception=>e
|
177
|
-
ScmsUtils.errLog(e.message)
|
178
|
-
ScmsUtils.log(e.backtrace.inspect)
|
179
|
-
end
|
180
|
-
else
|
181
|
-
case File.extname(viewpath)
|
182
|
-
when ".xml"
|
183
|
-
viewSnippet = ScmsXmlHandler.transform(htmlsnipet)
|
184
|
-
when ".md"
|
185
|
-
begin
|
186
|
-
htmlsnipet = htmlsnipet.encode('UTF-8', :invalid => :replace, :undef => :replace)
|
187
|
-
doc = Maruku.new(htmlsnipet)
|
188
|
-
viewSnippet = doc.to_html
|
189
|
-
rescue Exception => e
|
190
|
-
viewSnippet = htmlsnipet
|
191
|
-
ScmsUtils.errLog(e.message)
|
192
|
-
ScmsUtils.log(e.backtrace.inspect)
|
193
|
-
end
|
194
|
-
else
|
195
|
-
viewSnippet = htmlsnipet
|
196
|
-
end
|
197
|
-
end
|
198
|
-
|
199
|
-
viewmodel = Hash.new
|
200
136
|
viewmodel = {
|
201
137
|
:name => pageOptions.name,
|
202
138
|
:title => pageOptions.title,
|
203
139
|
:url => pageOptions.url,
|
204
140
|
:resource => pageOptions.resource,
|
205
|
-
:rootdir => website,
|
141
|
+
:rootdir => website,
|
142
|
+
:mode => options[:mode],
|
143
|
+
:allowEdit => pageOptions.allowEdit,
|
206
144
|
:view => {
|
207
145
|
:name => viewname,
|
208
|
-
:path =>
|
209
|
-
:
|
146
|
+
:path => viewpath,
|
147
|
+
:data => viewData
|
210
148
|
}
|
211
149
|
}
|
212
|
-
|
213
|
-
if options[:mode] == "cms"
|
214
|
-
viewhtml = "<div class='cms' data-view='#{viewpath}' data-page='#{pageOptions.url}'>#{Scms.render(viewSnippet, viewmodel)}</div>"
|
215
|
-
else
|
216
|
-
viewhtml = Scms.render(viewSnippet, viewmodel)
|
217
|
-
end
|
218
150
|
else
|
219
151
|
ScmsUtils.errLog("View not found: #{viewname} [#{viewpath}]")
|
220
152
|
ScmsUtils.writelog("::View not found: #{viewname} [#{viewpath}]", website)
|
221
153
|
ScmsUtils.writelog("type NUL > #{viewpath}", website)
|
222
154
|
end
|
223
155
|
|
224
|
-
return
|
225
|
-
end
|
226
|
-
|
227
|
-
def Scms.parsetemplate(template, hash = Hash.new)
|
228
|
-
return Scms.render(template, hash)
|
156
|
+
return viewmodel
|
229
157
|
end
|
230
158
|
|
231
|
-
def Scms.
|
232
|
-
|
233
|
-
if template != nil
|
234
|
-
begin
|
235
|
-
if hash.class == OpenStruct
|
236
|
-
page = hash
|
237
|
-
else
|
238
|
-
page = OpenStruct.new(hash)
|
239
|
-
end
|
159
|
+
def Scms.renderView(viewpath, hash = Hash.new)
|
160
|
+
#puts "** Rendering: #{viewpath} **"
|
240
161
|
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
result += "</code></pre>"
|
261
|
-
|
262
|
-
|
263
|
-
result += "\n\n"
|
264
|
-
result += template
|
162
|
+
htmlsnipet = ""
|
163
|
+
begin
|
164
|
+
htmlsnipet = File.read(viewpath)
|
165
|
+
rescue Exception=>e
|
166
|
+
ScmsUtils.errLog(e.message)
|
167
|
+
ScmsUtils.log(e.backtrace.inspect)
|
168
|
+
end
|
169
|
+
ScmsUtils.log("Empty view: #{viewpath}") if htmlsnipet.empty?
|
170
|
+
|
171
|
+
template = ""
|
172
|
+
|
173
|
+
case File.extname(viewpath)
|
174
|
+
when ".xml"
|
175
|
+
template = ScmsXmlHandler.transform(htmlsnipet)
|
176
|
+
when ".md"
|
177
|
+
begin
|
178
|
+
htmlsnipet = htmlsnipet.encode('UTF-8', :invalid => :replace, :undef => :replace)
|
179
|
+
doc = Maruku.new(htmlsnipet)
|
180
|
+
template = doc.to_html
|
265
181
|
rescue Exception => e
|
266
|
-
|
182
|
+
template = htmlsnipet
|
183
|
+
ScmsUtils.errLog(e.message)
|
184
|
+
ScmsUtils.log(e.backtrace.inspect)
|
267
185
|
end
|
268
186
|
else
|
269
|
-
|
187
|
+
template = htmlsnipet
|
270
188
|
end
|
271
|
-
|
272
|
-
|
189
|
+
|
190
|
+
parser = ScmsParser.new(template, hash)
|
191
|
+
return parser.parse(viewpath)
|
273
192
|
end
|
274
193
|
|
275
|
-
def Scms.
|
194
|
+
def Scms.savePage(settings, website, pageOptions, views, options)
|
276
195
|
fileName = File.join(website, File.join(pageOptions.url.sub('~/','')))
|
277
196
|
erb = File.join(website, pageOptions.template)
|
278
197
|
#ScmsUtils.log("Generating: #{fileName} with #{pageOptions.template}")
|
279
198
|
|
280
199
|
if File.exists?(erb)
|
281
|
-
# Build bundle model
|
282
|
-
|
283
|
-
# Build navigation model
|
284
|
-
navModel = Scms.navModel(website, settings, options)
|
285
|
-
#puts "navModel: #{navModel}"
|
200
|
+
bundleModel = Scms.getBundleModel(website, settings, options)# Build bundle model
|
201
|
+
navModel = Scms.getNavModel(website, settings, options)# Build navigation model
|
286
202
|
|
287
203
|
websiteroot = '/'
|
288
204
|
websiteroot = settings["rooturl"] if settings["rooturl"] != nil
|
289
|
-
#puts "On save mode: #{options[:mode]}"
|
290
205
|
websiteroot = ScmsUtils.uriEncode("file:///#{website}/") if options[:mode] == "cms"
|
291
206
|
|
292
207
|
monkeyhook = "";
|
@@ -297,7 +212,7 @@ module Scms
|
|
297
212
|
livereload = "<script async='true' defer='true'>document.write('<script src=\"http://' + (location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1\"></' + 'script>')</script>" if options[:mode] != "cms"
|
298
213
|
end
|
299
214
|
|
300
|
-
pagemodel = Hash.new
|
215
|
+
pagemodel = Hash.new {}
|
301
216
|
pagemodel = {
|
302
217
|
:name => pageOptions.name,
|
303
218
|
:title => pageOptions.title,
|
@@ -313,17 +228,13 @@ module Scms
|
|
313
228
|
:livereload => livereload
|
314
229
|
}
|
315
230
|
|
316
|
-
#puts "pagemodel:"
|
317
|
-
#puts pagemodel
|
318
|
-
|
319
231
|
pubsubdir = File.dirname(fileName)
|
320
232
|
Dir.mkdir(pubsubdir, 755) unless File::directory?(pubsubdir)
|
321
233
|
|
322
234
|
erbtemplate = File.read(erb)
|
323
235
|
|
324
|
-
|
325
|
-
|
326
|
-
html = Scms.render(erbtemplate, pagemodel)
|
236
|
+
parser = ScmsParser.new(erbtemplate, pagemodel)
|
237
|
+
html = parser.parse()
|
327
238
|
html = html.gsub('~/', websiteroot)
|
328
239
|
begin
|
329
240
|
File.open(fileName, 'w') {|f| f.write(html) }
|
@@ -339,7 +250,7 @@ module Scms
|
|
339
250
|
end
|
340
251
|
end
|
341
252
|
|
342
|
-
def Scms.
|
253
|
+
def Scms.getNavModel(website, settings, options)
|
343
254
|
websiteroot = '/'
|
344
255
|
websiteroot = settings["rooturl"] unless settings["rooturl"] == nil
|
345
256
|
websiteroot = ScmsUtils.uriEncode("file:///#{website}/") if options[:mode] == "cms"
|
@@ -392,8 +303,8 @@ module Scms
|
|
392
303
|
return navModel
|
393
304
|
end
|
394
305
|
|
395
|
-
def Scms.
|
396
|
-
bundleModel = Hash.new
|
306
|
+
def Scms.getBundleModel(website, settings, options)
|
307
|
+
bundleModel = Hash.new {}
|
397
308
|
bundleConfig = settings["bundles"]
|
398
309
|
if bundleConfig != nil
|
399
310
|
bundleConfig.each do |bundle|
|
@@ -3,7 +3,7 @@ module Scms
|
|
3
3
|
require 'scms/scms-utils.rb'
|
4
4
|
|
5
5
|
class PageOptions
|
6
|
-
attr_accessor :name, :template, :url, :title, :keywords, :description, :resource, :handler
|
6
|
+
attr_accessor :name, :template, :url, :title, :keywords, :description, :resource, :handler, :allowEdit
|
7
7
|
|
8
8
|
def name= name
|
9
9
|
@name = name
|
@@ -37,6 +37,10 @@ module Scms
|
|
37
37
|
@handler = handler
|
38
38
|
end
|
39
39
|
|
40
|
+
def allowEdit= allowEdit
|
41
|
+
@allowEdit = allowEdit
|
42
|
+
end
|
43
|
+
|
40
44
|
def initialize (name, website, pageconfig, siteConfig)
|
41
45
|
@name = name
|
42
46
|
@template = siteConfig["template"]
|
@@ -46,6 +50,7 @@ module Scms
|
|
46
50
|
@description = ""
|
47
51
|
@resource = Hash.new
|
48
52
|
@handler = nil
|
53
|
+
@allowEdit = true
|
49
54
|
|
50
55
|
if pageconfig != nil
|
51
56
|
@template = pageconfig["template"] unless pageconfig["template"] == nil
|
@@ -59,6 +64,7 @@ module Scms
|
|
59
64
|
@description = pageconfig["description"] if pageconfig["description"] != nil
|
60
65
|
@handler = pageconfig["handler"]
|
61
66
|
@resource = getResource(website, pageconfig["resource"])
|
67
|
+
@allowEdit = pageconfig["allowEdit"] if pageconfig["allowEdit"] != nil
|
62
68
|
end
|
63
69
|
end
|
64
70
|
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module Scms
|
2
|
+
require 'scms/scms-utils.rb'
|
3
|
+
|
4
|
+
require 'erb'
|
5
|
+
require 'ostruct'
|
6
|
+
|
7
|
+
class ScmsParser
|
8
|
+
attr_accessor :template, :model
|
9
|
+
|
10
|
+
def template= template
|
11
|
+
@template = template
|
12
|
+
end
|
13
|
+
|
14
|
+
def model= model
|
15
|
+
@model = model
|
16
|
+
end
|
17
|
+
|
18
|
+
def initialize (template, model = Hash.new)
|
19
|
+
@template = template
|
20
|
+
|
21
|
+
if model.class == OpenStruct
|
22
|
+
@model = model
|
23
|
+
else
|
24
|
+
@model = OpenStruct.new(model.clone)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def parse(viewpath = nil)
|
29
|
+
result = ""
|
30
|
+
if @template != nil
|
31
|
+
begin
|
32
|
+
page = @model
|
33
|
+
erb = ERB.new(@template)
|
34
|
+
result = erb.result(page.instance_eval { binding })
|
35
|
+
|
36
|
+
# only do cms click edit on sub views not layout templates
|
37
|
+
if page.view != nil
|
38
|
+
if page.mode == "cms"
|
39
|
+
if viewpath != nil
|
40
|
+
result = "<div class='cms' data-view='#{viewpath}' data-page='#{page.url}'>#{result}</div>" if page.allowEdit
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
rescue StandardError => e
|
46
|
+
#puts "page: #{page}"
|
47
|
+
ScmsUtils.errLog("Critical Error: Could not parse template")
|
48
|
+
#ScmsUtils.errLog(e.message)
|
49
|
+
|
50
|
+
result = "<code style='border: 1px solid #666; background-color: light-yellow;'><pre>"
|
51
|
+
result += e.message
|
52
|
+
result += "\n\n"
|
53
|
+
result += e.inspect
|
54
|
+
result += "\n\n"
|
55
|
+
result += "Invalid Keys in Template\n\n"
|
56
|
+
result += "Valid Keys are:\n"
|
57
|
+
@model.each do |key, value|
|
58
|
+
result += "- page.#{key}\n"
|
59
|
+
puts "nil value foy key: #{key}" if value == nil
|
60
|
+
singleton_class.send(:define_method, key) { value }
|
61
|
+
end
|
62
|
+
result += "</code></pre>"
|
63
|
+
|
64
|
+
result += "\n\n"
|
65
|
+
result += template
|
66
|
+
rescue Exception => e
|
67
|
+
puts "Problem with template - check property exists"
|
68
|
+
end
|
69
|
+
else
|
70
|
+
ScmsUtils.log("Error: Can not parse template. Template is empty")
|
71
|
+
end
|
72
|
+
|
73
|
+
return result
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/lib/scms/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Courtenay Probert
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cprobert-s3sync
|
@@ -192,6 +192,7 @@ files:
|
|
192
192
|
- lib/scms/scms-helpers.rb
|
193
193
|
- lib/scms/scms-httpserver.rb
|
194
194
|
- lib/scms/scms-pageoptions.rb
|
195
|
+
- lib/scms/scms-parser.rb
|
195
196
|
- lib/scms/scms-utils.rb
|
196
197
|
- lib/scms/scms-watcher.rb
|
197
198
|
- lib/scms/scms-xmlhandler.rb
|