gollum 5.2.3 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +41 -0
  3. data/Gemfile +18 -4
  4. data/HISTORY.md +3 -3
  5. data/LATEST_CHANGES.md +13 -0
  6. data/README.md +38 -26
  7. data/Rakefile +55 -12
  8. data/bin/gollum +6 -4
  9. data/bin/gollum-migrate-tags +40 -28
  10. data/docker-run.sh +18 -0
  11. data/gollum.gemspec +19 -14
  12. data/lib/gollum/app.rb +66 -42
  13. data/lib/gollum/public/assets/.sprockets-manifest-160337b312f8e438181baac4aaa37319.json +1 -0
  14. data/lib/gollum/public/assets/{app-ad43ca64b295d8444b10f22ee868f18429268af498f1bc515434878b690e37a2.css → app-309be032396e783b13a47df58f389b7c8e11c2b2d42640560b874f677c25f6e5.css} +1 -1
  15. data/lib/gollum/public/assets/{app-ad43ca64b295d8444b10f22ee868f18429268af498f1bc515434878b690e37a2.css.gz → app-309be032396e783b13a47df58f389b7c8e11c2b2d42640560b874f677c25f6e5.css.gz} +0 -0
  16. data/lib/gollum/public/assets/{app-0fd228e26bfbe6fe31a2da268eb0e98e780c1191c1a918adf383377946e9c838.js → app-f05401ee374f0c7f48fc2bc08e30b4f4db705861fd5895ed70998683b383bfb5.js} +2 -2
  17. data/lib/gollum/public/assets/{app-0fd228e26bfbe6fe31a2da268eb0e98e780c1191c1a918adf383377946e9c838.js.gz → app-f05401ee374f0c7f48fc2bc08e30b4f4db705861fd5895ed70998683b383bfb5.js.gz} +0 -0
  18. data/lib/gollum/public/assets/criticmarkup-31ae5d3282bbb8e7b7c3c9917e9fb68e3315a6b4a75da6cec48d21b8846905c4.css.gz +0 -0
  19. data/lib/gollum/public/assets/{editor-db10c8351306e92f1926ba225d0cd9c8e886482b3b9820a85825ec3abab5f1cf.js → editor-9881d0c7ae663293f0e3a7e72729eec7e940fa613185c076709b76d292f5703a.js} +2 -2
  20. data/lib/gollum/public/assets/{editor-db10c8351306e92f1926ba225d0cd9c8e886482b3b9820a85825ec3abab5f1cf.js.gz → editor-9881d0c7ae663293f0e3a7e72729eec7e940fa613185c076709b76d292f5703a.js.gz} +0 -0
  21. data/lib/gollum/public/assets/print-512498c368be0d3fb1ba105dfa84289ae48380ec9fcbef948bd4e23b0b095bfb.css.gz +0 -0
  22. data/lib/gollum/public/gollum/javascript/app.js +1 -0
  23. data/lib/gollum/public/gollum/javascript/date.min.js +123 -0
  24. data/lib/gollum/public/gollum/javascript/editor/gollum.editor.js +1 -1
  25. data/lib/gollum/public/gollum/javascript/gollum.js.erb +20 -2
  26. data/lib/gollum/public/gollum/stylesheets/editor.scss +1 -0
  27. data/lib/gollum/public/gollum/stylesheets/template.scss.erb +8 -0
  28. data/lib/gollum/templates/commit.mustache +4 -2
  29. data/lib/gollum/templates/compare.mustache +10 -4
  30. data/lib/gollum/templates/create.mustache +7 -4
  31. data/lib/gollum/templates/edit.mustache +7 -4
  32. data/lib/gollum/templates/history.mustache +10 -3
  33. data/lib/gollum/templates/latest_changes.mustache +8 -5
  34. data/lib/gollum/templates/layout.mustache +1 -0
  35. data/lib/gollum/templates/navbar.mustache +9 -2
  36. data/lib/gollum/templates/overview.mustache +7 -4
  37. data/lib/gollum/templates/search.mustache +7 -1
  38. data/lib/gollum/templates/wiki_content.mustache +4 -2
  39. data/lib/gollum/views/commit.rb +4 -0
  40. data/lib/gollum/views/create.rb +3 -2
  41. data/lib/gollum/views/edit.rb +2 -5
  42. data/lib/gollum/views/has_math.rb +11 -0
  43. data/lib/gollum/views/helpers/locale_helpers.rb +82 -0
  44. data/lib/gollum/views/history.rb +17 -12
  45. data/lib/gollum/views/latest_changes.rb +15 -10
  46. data/lib/gollum/views/layout.rb +6 -1
  47. data/lib/gollum/views/page.rb +23 -18
  48. data/lib/gollum/views/template_cascade.rb +40 -0
  49. data/lib/gollum.rb +10 -6
  50. metadata +55 -28
  51. data/lib/gollum/public/assets/.sprockets-manifest-de7bb79aec424e55af1acdcc4237b301.json +0 -1
data/gollum.gemspec CHANGED
@@ -1,12 +1,9 @@
1
1
  Gem::Specification.new do |s|
2
- s.specification_version = 2 if s.respond_to? :specification_version=
3
2
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
4
- s.rubygems_version = '1.3.5'
5
- s.required_ruby_version = '>= 1.9'
3
+ s.required_ruby_version = '>= 2.6'
6
4
 
7
5
  s.name = 'gollum'
8
- s.version = '5.2.3'
9
- s.date = '2021-04-18'
6
+ s.version = '5.3.0'
10
7
  s.license = 'MIT'
11
8
 
12
9
  s.summary = 'A simple, Git-powered wiki.'
@@ -23,12 +20,13 @@ Gem::Specification.new do |s|
23
20
  s.rdoc_options = ['--charset=UTF-8']
24
21
  s.extra_rdoc_files = %w[README.md LICENSE]
25
22
 
23
+ s.add_dependency 'rdoc', '~> 6'
26
24
  s.add_dependency 'gollum-lib', '~> 5.1'
27
25
  s.add_dependency 'kramdown', '~> 2.3'
28
26
  s.add_dependency 'kramdown-parser-gfm', '~> 1.1.0'
29
27
  s.add_dependency 'sinatra', '~> 2.0'
30
28
  s.add_dependency 'sinatra-contrib', '~> 2.0'
31
- s.add_dependency 'mustache-sinatra', '~> 1.0'
29
+ s.add_dependency 'mustache-sinatra', '>= 1.0.1', '< 2'
32
30
  s.add_dependency 'useragent', '~> 0.16.2'
33
31
  s.add_dependency 'gemojione', '~> 4.1'
34
32
  s.add_dependency 'octicons', '~> 12.0'
@@ -39,19 +37,21 @@ Gem::Specification.new do |s|
39
37
  s.add_dependency 'rss', '~> 0.2.9'
40
38
  s.add_dependency 'therubyrhino', '~> 2.1.0'
41
39
  s.add_dependency 'webrick', '~> 1.7'
40
+ s.add_dependency 'i18n', '~> 1.8'
42
41
 
43
42
  s.add_development_dependency 'rack-test', '~> 0.6.3'
44
43
  s.add_development_dependency 'shoulda', '~> 3.6.0'
45
44
  s.add_development_dependency 'minitest-reporters', '~> 1.3.6'
46
- s.add_development_dependency 'twitter_cldr', '~> 3.2.0'
47
45
  s.add_development_dependency 'mocha', '~> 1.8.0'
48
46
  s.add_development_dependency 'test-unit', '~> 3.3.0'
49
47
 
50
48
  # = MANIFEST =
51
49
  s.files = %w[
52
50
  CONTRIBUTING.md
51
+ Dockerfile
53
52
  Gemfile
54
53
  HISTORY.md
54
+ LATEST_CHANGES.md
55
55
  LICENSE
56
56
  README.md
57
57
  Rakefile
@@ -64,20 +64,21 @@ Gem::Specification.new do |s|
64
64
  contrib/openrc/init.d/gollum
65
65
  contrib/systemd/gollum@.service
66
66
  contrib/sysv-debian/init.d/gollum
67
+ docker-run.sh
67
68
  gollum.gemspec
68
69
  lib/gollum.rb
69
70
  lib/gollum/app.rb
70
71
  lib/gollum/assets.rb
71
72
  lib/gollum/helpers.rb
72
- lib/gollum/public/assets/.sprockets-manifest-de7bb79aec424e55af1acdcc4237b301.json
73
- lib/gollum/public/assets/app-0fd228e26bfbe6fe31a2da268eb0e98e780c1191c1a918adf383377946e9c838.js
74
- lib/gollum/public/assets/app-0fd228e26bfbe6fe31a2da268eb0e98e780c1191c1a918adf383377946e9c838.js.gz
75
- lib/gollum/public/assets/app-ad43ca64b295d8444b10f22ee868f18429268af498f1bc515434878b690e37a2.css
76
- lib/gollum/public/assets/app-ad43ca64b295d8444b10f22ee868f18429268af498f1bc515434878b690e37a2.css.gz
73
+ lib/gollum/public/assets/.sprockets-manifest-160337b312f8e438181baac4aaa37319.json
74
+ lib/gollum/public/assets/app-309be032396e783b13a47df58f389b7c8e11c2b2d42640560b874f677c25f6e5.css
75
+ lib/gollum/public/assets/app-309be032396e783b13a47df58f389b7c8e11c2b2d42640560b874f677c25f6e5.css.gz
76
+ lib/gollum/public/assets/app-f05401ee374f0c7f48fc2bc08e30b4f4db705861fd5895ed70998683b383bfb5.js
77
+ lib/gollum/public/assets/app-f05401ee374f0c7f48fc2bc08e30b4f4db705861fd5895ed70998683b383bfb5.js.gz
77
78
  lib/gollum/public/assets/criticmarkup-31ae5d3282bbb8e7b7c3c9917e9fb68e3315a6b4a75da6cec48d21b8846905c4.css
78
79
  lib/gollum/public/assets/criticmarkup-31ae5d3282bbb8e7b7c3c9917e9fb68e3315a6b4a75da6cec48d21b8846905c4.css.gz
79
- lib/gollum/public/assets/editor-db10c8351306e92f1926ba225d0cd9c8e886482b3b9820a85825ec3abab5f1cf.js
80
- lib/gollum/public/assets/editor-db10c8351306e92f1926ba225d0cd9c8e886482b3b9820a85825ec3abab5f1cf.js.gz
80
+ lib/gollum/public/assets/editor-9881d0c7ae663293f0e3a7e72729eec7e940fa613185c076709b76d292f5703a.js
81
+ lib/gollum/public/assets/editor-9881d0c7ae663293f0e3a7e72729eec7e940fa613185c076709b76d292f5703a.js.gz
81
82
  lib/gollum/public/assets/print-512498c368be0d3fb1ba105dfa84289ae48380ec9fcbef948bd4e23b0b095bfb.css
82
83
  lib/gollum/public/assets/print-512498c368be0d3fb1ba105dfa84289ae48380ec9fcbef948bd4e23b0b095bfb.css.gz
83
84
  lib/gollum/public/gollum/javascript/HOWTO_UPDATE_ACE.md
@@ -1152,6 +1153,7 @@ Gem::Specification.new do |s|
1152
1153
  lib/gollum/public/gollum/javascript/ace/worker-xquery.js
1153
1154
  lib/gollum/public/gollum/javascript/app.js
1154
1155
  lib/gollum/public/gollum/javascript/clipboard.min.js
1156
+ lib/gollum/public/gollum/javascript/date.min.js
1155
1157
  lib/gollum/public/gollum/javascript/editor.js
1156
1158
  lib/gollum/public/gollum/javascript/editor/gollum.editor.js
1157
1159
  lib/gollum/public/gollum/javascript/editor/langs/asciidoc.js
@@ -1218,9 +1220,11 @@ Gem::Specification.new do |s|
1218
1220
  lib/gollum/views/edit.rb
1219
1221
  lib/gollum/views/editable.rb
1220
1222
  lib/gollum/views/error.rb
1223
+ lib/gollum/views/has_math.rb
1221
1224
  lib/gollum/views/has_page.rb
1222
1225
  lib/gollum/views/has_user_icons.rb
1223
1226
  lib/gollum/views/helpers.rb
1227
+ lib/gollum/views/helpers/locale_helpers.rb
1224
1228
  lib/gollum/views/history.rb
1225
1229
  lib/gollum/views/latest_changes.rb
1226
1230
  lib/gollum/views/layout.rb
@@ -1229,6 +1233,7 @@ Gem::Specification.new do |s|
1229
1233
  lib/gollum/views/pagination.rb
1230
1234
  lib/gollum/views/rss.rb
1231
1235
  lib/gollum/views/search.rb
1236
+ lib/gollum/views/template_cascade.rb
1232
1237
  licenses/licenses.txt
1233
1238
  ]
1234
1239
  # = MANIFEST =
data/lib/gollum/app.rb CHANGED
@@ -1,4 +1,5 @@
1
- # ~*~ encoding: utf-8 ~*~
1
+ # encoding: UTF-8
2
+
2
3
  require 'cgi'
3
4
  require 'sinatra'
4
5
  require 'sinatra/namespace'
@@ -14,12 +15,15 @@ require 'pathname'
14
15
  require 'gollum'
15
16
  require 'gollum/assets'
16
17
  require 'gollum/views/helpers'
18
+ require 'gollum/views/helpers/locale_helpers'
17
19
  require 'gollum/views/layout'
18
20
  require 'gollum/views/editable'
19
21
  require 'gollum/views/has_page'
20
22
  require 'gollum/views/has_user_icons'
23
+ require 'gollum/views/has_math'
21
24
  require 'gollum/views/pagination'
22
25
  require 'gollum/views/rss.rb'
26
+ require 'gollum/views/template_cascade'
23
27
 
24
28
  require File.expand_path '../helpers', __FILE__
25
29
 
@@ -40,7 +44,7 @@ Gollum::set_git_max_filesize(190 * 10**6)
40
44
  # See the wiki.rb file for more details on wiki options
41
45
 
42
46
  module Precious
43
-
47
+
44
48
  # For use with the --base-path option.
45
49
  class MapGollum
46
50
  def initialize(base_path)
@@ -63,12 +67,14 @@ module Precious
63
67
  @mg.call(env)
64
68
  end
65
69
  end
66
-
70
+
67
71
  class App < Sinatra::Base
68
72
  register Mustache::Sinatra
69
73
  register Sinatra::Namespace
70
74
  include Precious::Helpers
71
-
75
+
76
+ Encoding.default_external = "UTF-8"
77
+
72
78
  dir = File.dirname(File.expand_path(__FILE__))
73
79
 
74
80
  set :sprockets, ::Precious::Assets.sprockets(dir)
@@ -97,16 +103,18 @@ module Precious
97
103
  end
98
104
 
99
105
  before do
100
- settings.wiki_options[:allow_editing] = settings.wiki_options.fetch(:allow_editing, true)
101
- @allow_editing = settings.wiki_options[:allow_editing]
106
+ @allow_editing = settings.wiki_options.fetch(:allow_editing, true)
102
107
  @critic_markup = settings.wiki_options[:critic_markup]
103
108
  @redirects_enabled = settings.wiki_options.fetch(:redirects_enabled, true)
104
109
  @per_page_uploads = settings.wiki_options[:per_page_uploads]
110
+ @show_local_time = settings.wiki_options.fetch(:show_local_time, false)
105
111
 
106
112
  @wiki_title = settings.wiki_options.fetch(:title, 'Gollum Wiki')
107
113
 
108
- forbid unless @allow_editing || request.request_method == 'GET'
109
- Precious::App.set(:mustache, {:templates => settings.wiki_options[:template_dir]}) if settings.wiki_options[:template_dir]
114
+ if settings.wiki_options[:template_dir]
115
+ Precious::Views::Layout.extend Precious::Views::TemplateCascade
116
+ Precious::Views::Layout.template_priority_path = settings.wiki_options[:template_dir]
117
+ end
110
118
 
111
119
  @base_url = url('/', false).chomp('/').force_encoding('utf-8')
112
120
  @page_dir = settings.wiki_options[:page_file_dir].to_s
@@ -116,11 +124,12 @@ module Precious
116
124
  @css = settings.wiki_options[:css]
117
125
  @js = settings.wiki_options[:js]
118
126
  @mathjax_config = settings.wiki_options[:mathjax_config]
127
+ @mathjax = settings.wiki_options[:mathjax]
119
128
 
120
129
  @use_static_assets = settings.wiki_options.fetch(:static, settings.environment != :development)
121
130
  @static_assets_path = settings.wiki_options.fetch(:static_assets_path, ::File.join(File.dirname(__FILE__), 'public/assets'))
122
131
  @mathjax_path = ::File.join(File.dirname(__FILE__), 'public/gollum/javascript/MathJax')
123
-
132
+
124
133
  Sprockets::Helpers.configure do |config|
125
134
  config.environment = settings.sprockets
126
135
  config.environment.context_class.class_variable_set(:@@base_url, @base_url)
@@ -131,6 +140,8 @@ module Precious
131
140
  config.manifest = Sprockets::Manifest.new(settings.sprockets, @static_assets_path)
132
141
  end
133
142
  end
143
+
144
+ forbid unless @allow_editing || request.request_method == 'GET'
134
145
  end
135
146
 
136
147
  get '/' do
@@ -167,7 +178,9 @@ module Precious
167
178
  content_type :json
168
179
  if page = wiki_page(params[:path]).page
169
180
  version = page.last_version
170
- {:author => version.author.name, :date => version.authored_date}.to_json
181
+ authored_date = version.authored_date
182
+ authored_date = authored_date.utc.iso8601 if @show_local_time
183
+ {:author => version.author.name, :date => authored_date}.to_json
171
184
  end
172
185
  end
173
186
 
@@ -208,7 +221,6 @@ module Precious
208
221
  if page = wikip.page
209
222
  @page = page
210
223
  @content = page.text_data
211
- @mathjax = wiki.mathjax
212
224
  @etag = page.sha
213
225
  mustache :edit
214
226
  else
@@ -219,7 +231,7 @@ module Precious
219
231
 
220
232
  # AJAX calls only
221
233
  post '/upload_file' do
222
-
234
+
223
235
  wiki = wiki_new
224
236
  halt 405 unless wiki.allow_uploads
225
237
 
@@ -230,12 +242,12 @@ module Precious
230
242
  halt 500 unless tempfile.is_a? Tempfile
231
243
 
232
244
  if wiki.per_page_uploads
233
- dir = request.referer.sub(request.base_url, '')
245
+ dir = request.referer.match(/^https?:\/\/#{request.host_with_port}\/(.*)/)[1]
234
246
  # remove base path if it is set
235
247
  dir.sub!(/^#{wiki.base_path}/, '') if wiki.base_path
236
248
  # remove base_url and gollum/* subpath if necessary
237
249
  dir.sub!(/^\/gollum\/[-\w]+\//, '')
238
- # remove file extension
250
+ # remove file extension
239
251
  dir.sub!(/#{::File.extname(dir)}$/, '')
240
252
  # revert escaped whitespaces
241
253
  dir.gsub!(/%20/, ' ')
@@ -261,7 +273,7 @@ module Precious
261
273
  options.merge! author
262
274
  end
263
275
 
264
- normalize = Gollum::Page.valid_extension?(fullname)
276
+ options[:normalize] = Gollum::Page.valid_extension?(fullname)
265
277
 
266
278
  begin
267
279
  wiki.write_file(reponame, contents, options)
@@ -317,7 +329,7 @@ module Precious
317
329
  end
318
330
 
319
331
  post '/edit/*' do
320
- etag = params[:etag]
332
+ etag = params[:etag]
321
333
  path = "/#{clean_url(sanitize_empty_params(params[:path]))}"
322
334
  wiki = wiki_new
323
335
  page = wiki.page(::File.join(path, params[:page]))
@@ -327,7 +339,7 @@ module Precious
327
339
  # Signal edit collision and return the page's most recent version
328
340
  halt 412, {etag: page.sha, text_data: page.text_data}.to_json
329
341
  end
330
-
342
+
331
343
  committer = Gollum::Committer.new(wiki, commit_message)
332
344
  commit = { :committer => committer }
333
345
 
@@ -348,7 +360,7 @@ module Precious
348
360
  commit[:message] = "Deleted #{filepath}"
349
361
  wiki.delete_file(filepath, commit)
350
362
  end
351
- end
363
+ end
352
364
 
353
365
  get '/create/*' do
354
366
  forbid unless @allow_editing
@@ -356,7 +368,7 @@ module Precious
356
368
  @name = wikip.name
357
369
  @ext = wikip.ext
358
370
  @path = wikip.path
359
- @template_page = load_template(@path) if settings.wiki_options[:template_page]
371
+ @template_page = load_template(wikip, @path) if settings.wiki_options[:template_page]
360
372
  @allow_uploads = wikip.wiki.allow_uploads
361
373
  @upload_dest = find_upload_dest(wikip.fullpath)
362
374
 
@@ -430,23 +442,18 @@ module Precious
430
442
  mustache :page
431
443
  end
432
444
 
445
+ get %r{
446
+ /history/ # match any URL beginning with /history/
447
+ (.+?) # extract the full path (including any directories)
448
+ /
449
+ ([0-9a-f]{40}) # match SHA
450
+ }x do |path, version|
451
+ wiki = wiki_new
452
+ show_history wiki_page(path, wiki.commit_for(version), wiki)
453
+ end
454
+
433
455
  get '/history/*' do
434
- wikip = wiki_page(params[:splat].first)
435
- @name = wikip.fullname
436
- @page = wikip.page
437
- @page_num = [params[:page_num].to_i, 1].max
438
- @max_count = settings.wiki_options.fetch(:pagination_count, 10)
439
- unless @page.nil?
440
- @wiki = @page.wiki
441
- @versions = @page.versions(
442
- per_page: @max_count,
443
- page_num: @page_num,
444
- follow: settings.wiki_options.fetch(:follow_renames, true)
445
- )
446
- mustache :history
447
- else
448
- redirect to("/")
449
- end
456
+ show_history wiki_page(params[:splat].first)
450
457
  end
451
458
 
452
459
  get '/latest_changes' do
@@ -593,6 +600,24 @@ module Precious
593
600
 
594
601
  private
595
602
 
603
+ def show_history(wikip)
604
+ @name = wikip.fullname
605
+ @page = wikip.page
606
+ @page_num = [params[:page_num].to_i, 1].max
607
+ @max_count = settings.wiki_options.fetch(:pagination_count, 10)
608
+ unless @page.nil?
609
+ @wiki = @page.wiki
610
+ @versions = @page.versions(
611
+ per_page: @max_count,
612
+ page_num: @page_num,
613
+ follow: settings.wiki_options.fetch(:follow_renames, true)
614
+ )
615
+ mustache :history
616
+ else
617
+ redirect to("/")
618
+ end
619
+ end
620
+
596
621
  def show_page_or_file(fullpath)
597
622
  wiki = wiki_new
598
623
  if page = wiki.page(fullpath)
@@ -604,7 +629,6 @@ module Precious
604
629
  # Extensions and layout data
605
630
  @editable = true
606
631
  @toc_content = wiki.universal_toc ? @page.toc_data : nil
607
- @mathjax = wiki.mathjax
608
632
  @h1_title = wiki.h1_title
609
633
  @bar_side = wiki.bar_side
610
634
  @allow_uploads = wiki.allow_uploads
@@ -625,7 +649,7 @@ module Precious
625
649
  end
626
650
  end
627
651
  end
628
-
652
+
629
653
  def show_file(file)
630
654
  return unless file
631
655
  if file.on_disk?
@@ -636,9 +660,9 @@ module Precious
636
660
  end
637
661
  end
638
662
 
639
- def load_template(path)
663
+ def load_template(wiki_page, path)
640
664
  template_page = wiki_page(::File.join(path, '_Template')).page || wiki_page('/_Template').page
641
- template_page ? Gollum::TemplateFilter.apply_filters(template_page.raw_data) : nil
665
+ template_page ? Gollum::TemplateFilter.apply_filters(wiki_page, template_page.text_data) : nil
642
666
  end
643
667
 
644
668
  def update_wiki_page(wiki, page, content, commit, name = nil, format = nil)
@@ -650,9 +674,9 @@ module Precious
650
674
  wiki.update_page(page, name, format, content.to_s, commit)
651
675
  end
652
676
 
653
- def wiki_page(path, version = nil)
677
+ def wiki_page(path, version = nil, wiki = nil)
654
678
  pathname = (Pathname.new('/') + path).cleanpath
655
- wiki = wiki_new
679
+ wiki = wiki_new if wiki.nil?
656
680
  OpenStruct.new(:wiki => wiki, :page => wiki.page(pathname.to_s, version = version),
657
681
  :name => pathname.basename.sub_ext('').to_s, :path => pathname.dirname.to_s, :ext => pathname.extname, :fullname => pathname.basename.to_s, :fullpath => pathname.to_s)
658
682
  end
@@ -683,4 +707,4 @@ module Precious
683
707
  end
684
708
 
685
709
  end
686
- end
710
+ end
@@ -0,0 +1 @@
1
+ {"files":{"app-f05401ee374f0c7f48fc2bc08e30b4f4db705861fd5895ed70998683b383bfb5.js":{"logical_path":"app.js","mtime":"2021-11-15T20:08:30-08:00","size":136040,"digest":"f05401ee374f0c7f48fc2bc08e30b4f4db705861fd5895ed70998683b383bfb5","integrity":"sha256-8FQB7jdPDH9I/CvAjjC09NtwWGH9WJXtcJmGg7ODv7U="},"editor-9881d0c7ae663293f0e3a7e72729eec7e940fa613185c076709b76d292f5703a.js":{"logical_path":"editor.js","mtime":"2021-11-15T20:08:30-08:00","size":744886,"digest":"9881d0c7ae663293f0e3a7e72729eec7e940fa613185c076709b76d292f5703a","integrity":"sha256-mIHQx65mMpPw46fnJynux+lA+mExhcB2cJt20pL1cDo="},"app-309be032396e783b13a47df58f389b7c8e11c2b2d42640560b874f677c25f6e5.css":{"logical_path":"app.css","mtime":"2021-11-15T20:08:30-08:00","size":396731,"digest":"309be032396e783b13a47df58f389b7c8e11c2b2d42640560b874f677c25f6e5","integrity":"sha256-MJvgMjlueDsTpH31jzibfI4RwrLUJkBWC4dPZ3wl9uU="},"criticmarkup-31ae5d3282bbb8e7b7c3c9917e9fb68e3315a6b4a75da6cec48d21b8846905c4.css":{"logical_path":"criticmarkup.css","mtime":"2021-08-22T15:24:51-07:00","size":646,"digest":"31ae5d3282bbb8e7b7c3c9917e9fb68e3315a6b4a75da6cec48d21b8846905c4","integrity":"sha256-Ma5dMoK7uOe3w8mRfp+2jjMVprSnXabOxI0huIRpBcQ="},"print-512498c368be0d3fb1ba105dfa84289ae48380ec9fcbef948bd4e23b0b095bfb.css":{"logical_path":"print.css","mtime":"2021-08-22T15:24:51-07:00","size":75,"digest":"512498c368be0d3fb1ba105dfa84289ae48380ec9fcbef948bd4e23b0b095bfb","integrity":"sha256-USSYw2i+DT+xuhBd+oQomuSDgOyfy++Ui9TiOwsJW/s="}},"assets":{"app.js":"app-f05401ee374f0c7f48fc2bc08e30b4f4db705861fd5895ed70998683b383bfb5.js","editor.js":"editor-9881d0c7ae663293f0e3a7e72729eec7e940fa613185c076709b76d292f5703a.js","app.css":"app-309be032396e783b13a47df58f389b7c8e11c2b2d42640560b874f677c25f6e5.css","criticmarkup.css":"criticmarkup-31ae5d3282bbb8e7b7c3c9917e9fb68e3315a6b4a75da6cec48d21b8846905c4.css","print.css":"print-512498c368be0d3fb1ba105dfa84289ae48380ec9fcbef948bd4e23b0b095bfb.css"}}