gollum 5.2.3 → 5.3.1

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 +20 -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 +20 -15
  12. data/lib/gollum/app.rb +65 -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 +18 -3
  47. data/lib/gollum/views/page.rb +24 -20
  48. data/lib/gollum/views/template_cascade.rb +29 -0
  49. data/lib/gollum.rb +10 -6
  50. metadata +57 -30
  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.1'
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
 
26
- s.add_dependency 'gollum-lib', '~> 5.1'
23
+ s.add_dependency 'rdoc', '~> 6'
24
+ s.add_dependency 'gollum-lib', '>= 5.2.3', '< 6.0'
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', '~> 2.0'
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,10 +15,13 @@ require 'pathname'
14
15
  require 'gollum'
15
16
  require 'gollum/assets'
16
17
  require 'gollum/views/helpers'
18
+ require 'gollum/views/helpers/locale_helpers'
19
+ require 'gollum/views/template_cascade'
17
20
  require 'gollum/views/layout'
18
21
  require 'gollum/views/editable'
19
22
  require 'gollum/views/has_page'
20
23
  require 'gollum/views/has_user_icons'
24
+ require 'gollum/views/has_math'
21
25
  require 'gollum/views/pagination'
22
26
  require 'gollum/views/rss.rb'
23
27
 
@@ -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,17 @@ 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.template_priority_path = settings.wiki_options[:template_dir]
116
+ end
110
117
 
111
118
  @base_url = url('/', false).chomp('/').force_encoding('utf-8')
112
119
  @page_dir = settings.wiki_options[:page_file_dir].to_s
@@ -116,11 +123,12 @@ module Precious
116
123
  @css = settings.wiki_options[:css]
117
124
  @js = settings.wiki_options[:js]
118
125
  @mathjax_config = settings.wiki_options[:mathjax_config]
126
+ @mathjax = settings.wiki_options[:mathjax]
119
127
 
120
128
  @use_static_assets = settings.wiki_options.fetch(:static, settings.environment != :development)
121
129
  @static_assets_path = settings.wiki_options.fetch(:static_assets_path, ::File.join(File.dirname(__FILE__), 'public/assets'))
122
130
  @mathjax_path = ::File.join(File.dirname(__FILE__), 'public/gollum/javascript/MathJax')
123
-
131
+
124
132
  Sprockets::Helpers.configure do |config|
125
133
  config.environment = settings.sprockets
126
134
  config.environment.context_class.class_variable_set(:@@base_url, @base_url)
@@ -131,6 +139,8 @@ module Precious
131
139
  config.manifest = Sprockets::Manifest.new(settings.sprockets, @static_assets_path)
132
140
  end
133
141
  end
142
+
143
+ forbid unless @allow_editing || request.request_method == 'GET'
134
144
  end
135
145
 
136
146
  get '/' do
@@ -167,7 +177,9 @@ module Precious
167
177
  content_type :json
168
178
  if page = wiki_page(params[:path]).page
169
179
  version = page.last_version
170
- {:author => version.author.name, :date => version.authored_date}.to_json
180
+ authored_date = version.authored_date
181
+ authored_date = authored_date.utc.iso8601 if @show_local_time
182
+ {:author => version.author.name, :date => authored_date}.to_json
171
183
  end
172
184
  end
173
185
 
@@ -208,7 +220,6 @@ module Precious
208
220
  if page = wikip.page
209
221
  @page = page
210
222
  @content = page.text_data
211
- @mathjax = wiki.mathjax
212
223
  @etag = page.sha
213
224
  mustache :edit
214
225
  else
@@ -219,7 +230,7 @@ module Precious
219
230
 
220
231
  # AJAX calls only
221
232
  post '/upload_file' do
222
-
233
+
223
234
  wiki = wiki_new
224
235
  halt 405 unless wiki.allow_uploads
225
236
 
@@ -230,12 +241,12 @@ module Precious
230
241
  halt 500 unless tempfile.is_a? Tempfile
231
242
 
232
243
  if wiki.per_page_uploads
233
- dir = request.referer.sub(request.base_url, '')
244
+ dir = request.referer.match(/^https?:\/\/#{request.host_with_port}\/(.*)/)[1]
234
245
  # remove base path if it is set
235
246
  dir.sub!(/^#{wiki.base_path}/, '') if wiki.base_path
236
247
  # remove base_url and gollum/* subpath if necessary
237
248
  dir.sub!(/^\/gollum\/[-\w]+\//, '')
238
- # remove file extension
249
+ # remove file extension
239
250
  dir.sub!(/#{::File.extname(dir)}$/, '')
240
251
  # revert escaped whitespaces
241
252
  dir.gsub!(/%20/, ' ')
@@ -261,7 +272,7 @@ module Precious
261
272
  options.merge! author
262
273
  end
263
274
 
264
- normalize = Gollum::Page.valid_extension?(fullname)
275
+ options[:normalize] = Gollum::Page.valid_extension?(fullname)
265
276
 
266
277
  begin
267
278
  wiki.write_file(reponame, contents, options)
@@ -317,7 +328,7 @@ module Precious
317
328
  end
318
329
 
319
330
  post '/edit/*' do
320
- etag = params[:etag]
331
+ etag = params[:etag]
321
332
  path = "/#{clean_url(sanitize_empty_params(params[:path]))}"
322
333
  wiki = wiki_new
323
334
  page = wiki.page(::File.join(path, params[:page]))
@@ -327,7 +338,7 @@ module Precious
327
338
  # Signal edit collision and return the page's most recent version
328
339
  halt 412, {etag: page.sha, text_data: page.text_data}.to_json
329
340
  end
330
-
341
+
331
342
  committer = Gollum::Committer.new(wiki, commit_message)
332
343
  commit = { :committer => committer }
333
344
 
@@ -348,7 +359,7 @@ module Precious
348
359
  commit[:message] = "Deleted #{filepath}"
349
360
  wiki.delete_file(filepath, commit)
350
361
  end
351
- end
362
+ end
352
363
 
353
364
  get '/create/*' do
354
365
  forbid unless @allow_editing
@@ -356,7 +367,7 @@ module Precious
356
367
  @name = wikip.name
357
368
  @ext = wikip.ext
358
369
  @path = wikip.path
359
- @template_page = load_template(@path) if settings.wiki_options[:template_page]
370
+ @template_page = load_template(wikip, @path) if settings.wiki_options[:template_page]
360
371
  @allow_uploads = wikip.wiki.allow_uploads
361
372
  @upload_dest = find_upload_dest(wikip.fullpath)
362
373
 
@@ -430,23 +441,18 @@ module Precious
430
441
  mustache :page
431
442
  end
432
443
 
444
+ get %r{
445
+ /history/ # match any URL beginning with /history/
446
+ (.+?) # extract the full path (including any directories)
447
+ /
448
+ ([0-9a-f]{40}) # match SHA
449
+ }x do |path, version|
450
+ wiki = wiki_new
451
+ show_history wiki_page(path, wiki.commit_for(version), wiki)
452
+ end
453
+
433
454
  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
455
+ show_history wiki_page(params[:splat].first)
450
456
  end
451
457
 
452
458
  get '/latest_changes' do
@@ -593,6 +599,24 @@ module Precious
593
599
 
594
600
  private
595
601
 
602
+ def show_history(wikip)
603
+ @name = wikip.fullname
604
+ @page = wikip.page
605
+ @page_num = [params[:page_num].to_i, 1].max
606
+ @max_count = settings.wiki_options.fetch(:pagination_count, 10)
607
+ unless @page.nil?
608
+ @wiki = @page.wiki
609
+ @versions = @page.versions(
610
+ per_page: @max_count,
611
+ page_num: @page_num,
612
+ follow: settings.wiki_options.fetch(:follow_renames, true)
613
+ )
614
+ mustache :history
615
+ else
616
+ redirect to("/")
617
+ end
618
+ end
619
+
596
620
  def show_page_or_file(fullpath)
597
621
  wiki = wiki_new
598
622
  if page = wiki.page(fullpath)
@@ -604,7 +628,6 @@ module Precious
604
628
  # Extensions and layout data
605
629
  @editable = true
606
630
  @toc_content = wiki.universal_toc ? @page.toc_data : nil
607
- @mathjax = wiki.mathjax
608
631
  @h1_title = wiki.h1_title
609
632
  @bar_side = wiki.bar_side
610
633
  @allow_uploads = wiki.allow_uploads
@@ -625,7 +648,7 @@ module Precious
625
648
  end
626
649
  end
627
650
  end
628
-
651
+
629
652
  def show_file(file)
630
653
  return unless file
631
654
  if file.on_disk?
@@ -636,9 +659,9 @@ module Precious
636
659
  end
637
660
  end
638
661
 
639
- def load_template(path)
662
+ def load_template(wiki_page, path)
640
663
  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
664
+ template_page ? Gollum::TemplateFilter.apply_filters(wiki_page, template_page.text_data) : nil
642
665
  end
643
666
 
644
667
  def update_wiki_page(wiki, page, content, commit, name = nil, format = nil)
@@ -650,9 +673,9 @@ module Precious
650
673
  wiki.update_page(page, name, format, content.to_s, commit)
651
674
  end
652
675
 
653
- def wiki_page(path, version = nil)
676
+ def wiki_page(path, version = nil, wiki = nil)
654
677
  pathname = (Pathname.new('/') + path).cleanpath
655
- wiki = wiki_new
678
+ wiki = wiki_new if wiki.nil?
656
679
  OpenStruct.new(:wiki => wiki, :page => wiki.page(pathname.to_s, version = version),
657
680
  :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
681
  end
@@ -683,4 +706,4 @@ module Precious
683
706
  end
684
707
 
685
708
  end
686
- end
709
+ 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"}}