Skip to content

Commit

Permalink
Fix mustache (#1954)
Browse files Browse the repository at this point in the history
* Use mustache's default escape method
* Provide custom Layout#partial instead of Layout.partial
* Fix Docker run on CI
  • Loading branch information
dometto committed Mar 20, 2023
1 parent c2e0e46 commit 46c64ee
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 20 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/docker-test.yml
Expand Up @@ -53,7 +53,7 @@ jobs:
- name: Run gollum from Docker
run: |
git clone test/examples/lotr.git /tmp/lotr.git
RUNNER_TRACKING_ID="" docker run --rm -p 4567:4567 -v /tmp/lotr.git:/wiki -e CI=true ${{ env.CI_IMAGE }} --mathjax &
RUNNER_TRACKING_ID="" docker run --user $(id -u) --rm -p 4567:4567 -v /tmp/lotr.git:/wiki -e CI=true ${{ env.CI_IMAGE }} --mathjax &
sleep 10
netstat -lt
- name: Run capybara tests against Dockerized instance
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yaml
Expand Up @@ -33,7 +33,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
ruby: ['2.7', '3.1']
ruby: ['2.7', '3.1', '3.2.1']
steps:
- name: Install required system dependencies
run: |
Expand Down
2 changes: 1 addition & 1 deletion gollum.gemspec
Expand Up @@ -26,7 +26,7 @@ Gem::Specification.new do |s|
s.add_dependency 'kramdown-parser-gfm', '~> 1.1.0'
s.add_dependency 'sinatra', '~> 3.0'
s.add_dependency 'sinatra-contrib', '~> 3.0'
s.add_dependency 'mustache-sinatra', '>= 1.0.1', '< 2'
s.add_dependency 'mustache-sinatra', '~> 2.0'
s.add_dependency 'useragent', '~> 0.16.2'
s.add_dependency 'gemojione', '~> 4.1'
s.add_dependency 'octicons', '~> 12.0'
Expand Down
6 changes: 4 additions & 2 deletions lib/gollum/app.rb
Expand Up @@ -13,16 +13,19 @@

require 'gollum'
require 'gollum/assets'

# Requirements for loading the layout view:
require 'gollum/views/helpers'
require 'gollum/views/helpers/locale_helpers'
require 'gollum/views/template_cascade'

require 'gollum/views/layout'
require 'gollum/views/editable'
require 'gollum/views/has_page'
require 'gollum/views/has_user_icons'
require 'gollum/views/has_math'
require 'gollum/views/pagination'
require 'gollum/views/rss.rb'
require 'gollum/views/template_cascade'

['sassc', 'sassc-embedded'].each do |gem|
require gem if Gem::Specification.find {|spec| spec.name == gem}
Expand Down Expand Up @@ -118,7 +121,6 @@ class App < Sinatra::Base
@default_keybinding = settings.wiki_options.fetch(:default_keybinding, 'default')

if settings.wiki_options[:template_dir]
Precious::Views::Layout.extend Precious::Views::TemplateCascade
Precious::Views::Layout.template_priority_path = settings.wiki_options[:template_dir]
end

Expand Down
16 changes: 13 additions & 3 deletions lib/gollum/views/layout.rb
Expand Up @@ -3,18 +3,28 @@
module Precious
module Views
class Layout < Mustache
include Rack::Utils
include Sprockets::Helpers
include Precious::Views::AppHelpers
include Precious::Views::LocaleHelpers
include Precious::Views::SprocketsHelpers
include Precious::Views::RouteHelpers
include Precious::Views::OcticonHelpers

alias_method :h, :escape_html

attr_reader :name, :path

self.extend Precious::Views::TemplateCascade

# Method should track lib/mustache.rb from Mustache project.
def partial(name)
path = self.class.first_path_available(name)
begin
File.read(path)
rescue
raise if raise_on_context_miss?
""
end
end

def escaped_name
CGI.escape(@name)
end
Expand Down
13 changes: 1 addition & 12 deletions lib/gollum/views/template_cascade.rb
Expand Up @@ -2,7 +2,7 @@ module Precious
module Views
module TemplateCascade
def template_priority_path
@@template_priority_path
@@template_priority_path ||= nil
end

def template_priority_path=(path)
Expand All @@ -24,17 +24,6 @@ def first_path_available(name)
def template_file
@template_file || first_path_available(template_name)
end

# Method should track lib/mustache.rb from Mustache project.
def partial(name)
path = first_path_available(name)
begin
File.read(path)
rescue
raise if raise_on_context_miss?
""
end
end
end
end
end

0 comments on commit 46c64ee

Please sign in to comment.