Compare commits
51 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c7729f81ad | |||
| 7e12de0087 | |||
| c9c7db5a53 | |||
| aadbdd8b76 | |||
| b2d372ab3c | |||
| c47a47bc30 | |||
| ad5ec77f41 | |||
| c0bf387cb4 | |||
| 267323c7c3 | |||
| d9b1ea3d51 | |||
| 70bf86f561 | |||
| e1eebb2f75 | |||
| aa258dbe6b | |||
| 5a7659e1c3 | |||
| d51a829038 | |||
| b7ffc4051c | |||
| bb06b566cd | |||
| fc6149a171 | |||
| 4abc32f1ec | |||
| efd734d962 | |||
| 8158610587 | |||
| 2bb62309be | |||
| 401e41b699 | |||
| 3015831d66 | |||
| c2919897e2 | |||
| 83d6cae53f | |||
| 7ad54e3c94 | |||
| c1fc3a92c0 | |||
| 23508d3867 | |||
| b5cb2e6dd6 | |||
| 1ff486e16c | |||
| c22050fca8 | |||
| e910dd0ccf | |||
| 748d76dff1 | |||
| 2ebed41225 | |||
| 86d14fa7ab | |||
| 82e31e971a | |||
| 3d591b49cb | |||
| df505a7289 | |||
| 17dcde1f61 | |||
| 2a052cae8d | |||
| d3594f6652 | |||
| ad561226b9 | |||
| 8403868ac3 | |||
| a1d760df1e | |||
| e3950d52c1 | |||
| 7427ddd900 | |||
| 364b2b85ae | |||
| a71ab7c418 | |||
| 2bb1937fa9 | |||
| 3c44205be7 |
@@ -0,0 +1,6 @@
|
|||||||
|
rvm:
|
||||||
|
- 1.8.7
|
||||||
|
- 1.9.2
|
||||||
|
- rbx-2.0
|
||||||
|
notifications:
|
||||||
|
disabled: true
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
source "http://rubygems.org"
|
source "http://rubygems.org"
|
||||||
|
|
||||||
gemspec
|
gemspec
|
||||||
|
gem "rake", "~> 0.9.2"
|
||||||
|
|||||||
+32
-2
@@ -1,4 +1,34 @@
|
|||||||
# HEAD
|
# 1.3.1 / 2011-07-21
|
||||||
|
|
||||||
|
* Major Enhancements
|
||||||
|
* Allow prefixed ID attributes in headers to support internal linking
|
||||||
|
(#146).
|
||||||
|
* Markdown pages are rendered through Redcarpet by default (#176).
|
||||||
|
* Minor Enhancements
|
||||||
|
* Remove Edit button on Preview pages (#164).
|
||||||
|
* Simplify Wiki#inspect and Page#inspect.
|
||||||
|
* Bug Fixes
|
||||||
|
* Fixed broken preview functionality (#157).
|
||||||
|
* Fixed sidebar/footer rendering problems related to whitespace (#145).
|
||||||
|
|
||||||
|
# 1.3.0 / 2011-04-25
|
||||||
|
|
||||||
|
* Major Enhancements
|
||||||
|
* Listing of all Pages
|
||||||
|
* Support for running Gollum under a separate branch.
|
||||||
|
* Minor Enhancements
|
||||||
|
* Fix a security issue with rendering Mathjax.
|
||||||
|
|
||||||
|
# 1.2.0 / 2011-03-11
|
||||||
|
|
||||||
|
* Major Enhancements
|
||||||
|
* Major HTML/CSS/JS overhaul.
|
||||||
|
* Add Sidebars (similar to Footers).
|
||||||
|
* Add commit reverts.
|
||||||
|
* Minor Enhancements
|
||||||
|
* Optimization in source code highlighting, resulting in a huge
|
||||||
|
decrease in rendering time.
|
||||||
|
* Security fixes related to source code highlighting.
|
||||||
|
|
||||||
* Major Enhancements
|
* Major Enhancements
|
||||||
* Add Page sidebars, similar to Page footers.
|
* Add Page sidebars, similar to Page footers.
|
||||||
@@ -51,4 +81,4 @@
|
|||||||
|
|
||||||
# 1.0.0 / 2010-08-12
|
# 1.0.0 / 2010-08-12
|
||||||
|
|
||||||
* Open Source Birthday!
|
* Open Source Birthday!
|
||||||
|
|||||||
@@ -318,7 +318,7 @@ and `\]`. For example:
|
|||||||
Inline equations are delimited by `\(` and `\)`. These equations will appear
|
Inline equations are delimited by `\(` and `\)`. These equations will appear
|
||||||
inline with regular text. For example:
|
inline with regular text. For example:
|
||||||
|
|
||||||
The Pythagorean theorum is \( a^2 + b^2 = c^2 \).
|
The Pythagorean theorem is \( a^2 + b^2 = c^2 \).
|
||||||
|
|
||||||
Gollum uses [MathJax](http://www.mathjax.org/) to convert the TeX syntax into
|
Gollum uses [MathJax](http://www.mathjax.org/) to convert the TeX syntax into
|
||||||
output suitable for display in web browsers.
|
output suitable for display in web browsers.
|
||||||
|
|||||||
@@ -48,6 +48,10 @@ opts = OptionParser.new do |opts|
|
|||||||
opts.on("--page-file-dir [PATH]", "Specify the sub directory for all page files (default: repository root).") do |path|
|
opts.on("--page-file-dir [PATH]", "Specify the sub directory for all page files (default: repository root).") do |path|
|
||||||
wiki_options[:page_file_dir] = path
|
wiki_options[:page_file_dir] = path
|
||||||
end
|
end
|
||||||
|
|
||||||
|
opts.on("--ref [REF]", "Specify the repository ref to use (default: master).") do |ref|
|
||||||
|
wiki_options[:ref] = ref
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Read command line options into `options` hash
|
# Read command line options into `options` hash
|
||||||
|
|||||||
+6
-4
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
|
|||||||
s.rubygems_version = '1.3.5'
|
s.rubygems_version = '1.3.5'
|
||||||
|
|
||||||
s.name = 'gollum'
|
s.name = 'gollum'
|
||||||
s.version = '1.2.0'
|
s.version = '1.3.1'
|
||||||
s.date = '2011-03-31'
|
s.date = '2011-07-21'
|
||||||
s.rubyforge_project = 'gollum'
|
s.rubyforge_project = 'gollum'
|
||||||
|
|
||||||
s.summary = "A simple, Git-powered wiki."
|
s.summary = "A simple, Git-powered wiki."
|
||||||
@@ -18,7 +18,6 @@ Gem::Specification.new do |s|
|
|||||||
s.require_paths = %w[lib]
|
s.require_paths = %w[lib]
|
||||||
|
|
||||||
s.executables = ["gollum"]
|
s.executables = ["gollum"]
|
||||||
s.default_executable = 'gollum'
|
|
||||||
|
|
||||||
s.rdoc_options = ["--charset=UTF-8"]
|
s.rdoc_options = ["--charset=UTF-8"]
|
||||||
s.extra_rdoc_files = %w[README.md LICENSE]
|
s.extra_rdoc_files = %w[README.md LICENSE]
|
||||||
@@ -30,6 +29,7 @@ Gem::Specification.new do |s|
|
|||||||
s.add_dependency('mustache', [">= 0.11.2", "< 1.0.0"])
|
s.add_dependency('mustache', [">= 0.11.2", "< 1.0.0"])
|
||||||
s.add_dependency('sanitize', "~> 2.0.0")
|
s.add_dependency('sanitize', "~> 2.0.0")
|
||||||
s.add_dependency('nokogiri', "~> 1.4")
|
s.add_dependency('nokogiri', "~> 1.4")
|
||||||
|
s.add_dependency('redcarpet')
|
||||||
|
|
||||||
s.add_development_dependency('RedCloth')
|
s.add_development_dependency('RedCloth')
|
||||||
s.add_development_dependency('mocha')
|
s.add_development_dependency('mocha')
|
||||||
@@ -38,6 +38,7 @@ Gem::Specification.new do |s|
|
|||||||
s.add_development_dependency('shoulda')
|
s.add_development_dependency('shoulda')
|
||||||
s.add_development_dependency('rack-test')
|
s.add_development_dependency('rack-test')
|
||||||
s.add_development_dependency('wikicloth')
|
s.add_development_dependency('wikicloth')
|
||||||
|
s.add_development_dependency('rake', '~> 0.9.2')
|
||||||
|
|
||||||
# = MANIFEST =
|
# = MANIFEST =
|
||||||
s.files = %w[
|
s.files = %w[
|
||||||
@@ -697,6 +698,7 @@ Gem::Specification.new do |s|
|
|||||||
lib/gollum/frontend/templates/history.mustache
|
lib/gollum/frontend/templates/history.mustache
|
||||||
lib/gollum/frontend/templates/layout.mustache
|
lib/gollum/frontend/templates/layout.mustache
|
||||||
lib/gollum/frontend/templates/page.mustache
|
lib/gollum/frontend/templates/page.mustache
|
||||||
|
lib/gollum/frontend/templates/pages.mustache
|
||||||
lib/gollum/frontend/templates/search.mustache
|
lib/gollum/frontend/templates/search.mustache
|
||||||
lib/gollum/frontend/templates/searchbar.mustache
|
lib/gollum/frontend/templates/searchbar.mustache
|
||||||
lib/gollum/frontend/views/compare.rb
|
lib/gollum/frontend/views/compare.rb
|
||||||
@@ -707,12 +709,12 @@ Gem::Specification.new do |s|
|
|||||||
lib/gollum/frontend/views/history.rb
|
lib/gollum/frontend/views/history.rb
|
||||||
lib/gollum/frontend/views/layout.rb
|
lib/gollum/frontend/views/layout.rb
|
||||||
lib/gollum/frontend/views/page.rb
|
lib/gollum/frontend/views/page.rb
|
||||||
|
lib/gollum/frontend/views/pages.rb
|
||||||
lib/gollum/frontend/views/search.rb
|
lib/gollum/frontend/views/search.rb
|
||||||
lib/gollum/git_access.rb
|
lib/gollum/git_access.rb
|
||||||
lib/gollum/markup.rb
|
lib/gollum/markup.rb
|
||||||
lib/gollum/page.rb
|
lib/gollum/page.rb
|
||||||
lib/gollum/pagination.rb
|
lib/gollum/pagination.rb
|
||||||
lib/gollum/ruby1.8.rb
|
|
||||||
lib/gollum/sanitization.rb
|
lib/gollum/sanitization.rb
|
||||||
lib/gollum/wiki.rb
|
lib/gollum/wiki.rb
|
||||||
templates/formatting.html
|
templates/formatting.html
|
||||||
|
|||||||
+11
-14
@@ -7,23 +7,20 @@ require 'grit'
|
|||||||
require 'github/markup'
|
require 'github/markup'
|
||||||
require 'sanitize'
|
require 'sanitize'
|
||||||
|
|
||||||
# ruby 1.8 compatibility
|
|
||||||
require 'gollum/ruby1.8'
|
|
||||||
|
|
||||||
# internal
|
# internal
|
||||||
require 'gollum/git_access'
|
require File.expand_path('../gollum/git_access', __FILE__)
|
||||||
require 'gollum/committer'
|
require File.expand_path('../gollum/committer', __FILE__)
|
||||||
require 'gollum/pagination'
|
require File.expand_path('../gollum/pagination', __FILE__)
|
||||||
require 'gollum/blob_entry'
|
require File.expand_path('../gollum/blob_entry', __FILE__)
|
||||||
require 'gollum/wiki'
|
require File.expand_path('../gollum/wiki', __FILE__)
|
||||||
require 'gollum/page'
|
require File.expand_path('../gollum/page', __FILE__)
|
||||||
require 'gollum/file'
|
require File.expand_path('../gollum/file', __FILE__)
|
||||||
require 'gollum/markup'
|
require File.expand_path('../gollum/markup', __FILE__)
|
||||||
require 'gollum/albino'
|
require File.expand_path('../gollum/albino', __FILE__)
|
||||||
require 'gollum/sanitization'
|
require File.expand_path('../gollum/sanitization', __FILE__)
|
||||||
|
|
||||||
module Gollum
|
module Gollum
|
||||||
VERSION = '1.2.0'
|
VERSION = '1.3.1'
|
||||||
|
|
||||||
class Error < StandardError; end
|
class Error < StandardError; end
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ module Gollum
|
|||||||
# Returns an array of Grit::Commit instances.
|
# Returns an array of Grit::Commit instances.
|
||||||
def parents
|
def parents
|
||||||
@parents ||= begin
|
@parents ||= begin
|
||||||
arr = [@options[:parent] || @wiki.repo.commit('master')]
|
arr = [@options[:parent] || @wiki.repo.commit(@wiki.ref)]
|
||||||
arr.flatten!
|
arr.flatten!
|
||||||
arr.compact!
|
arr.compact!
|
||||||
arr
|
arr
|
||||||
@@ -118,7 +118,7 @@ module Gollum
|
|||||||
def update_working_dir(dir, name, format)
|
def update_working_dir(dir, name, format)
|
||||||
unless @wiki.repo.bare
|
unless @wiki.repo.bare
|
||||||
if @wiki.page_file_dir
|
if @wiki.page_file_dir
|
||||||
dir = dir.size.zero? ? @wiki.page_file_dir : File.join(dir, @wiki.page_file_dir)
|
dir = dir.size.zero? ? @wiki.page_file_dir : ::File.join(dir, @wiki.page_file_dir)
|
||||||
end
|
end
|
||||||
|
|
||||||
path =
|
path =
|
||||||
@@ -142,7 +142,7 @@ module Gollum
|
|||||||
#
|
#
|
||||||
# Returns the String SHA1 of the new commit.
|
# Returns the String SHA1 of the new commit.
|
||||||
def commit
|
def commit
|
||||||
sha1 = index.commit(@options[:message], parents, actor)
|
sha1 = index.commit(@options[:message], parents, actor, nil, @wiki.ref)
|
||||||
@callbacks.each do |cb|
|
@callbacks.each do |cb|
|
||||||
cb.call(self, sha1)
|
cb.call(self, sha1)
|
||||||
end
|
end
|
||||||
@@ -214,4 +214,4 @@ module Gollum
|
|||||||
index.send(name, *args)
|
index.send(name, *args)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -106,10 +106,11 @@ module Precious
|
|||||||
end
|
end
|
||||||
|
|
||||||
post '/preview' do
|
post '/preview' do
|
||||||
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
||||||
@name = "Preview"
|
@name = "Preview"
|
||||||
@page = wiki.preview_page(@name, params[:content], params[:format])
|
@page = wiki.preview_page(@name, params[:content], params[:format])
|
||||||
@content = @page.formatted_data
|
@content = @page.formatted_data
|
||||||
|
@editable = false
|
||||||
mustache :page
|
mustache :page
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -155,6 +156,7 @@ module Precious
|
|||||||
@page = page
|
@page = page
|
||||||
@name = name
|
@name = name
|
||||||
@content = page.formatted_data
|
@content = page.formatted_data
|
||||||
|
@editable = true
|
||||||
mustache :page
|
mustache :page
|
||||||
else
|
else
|
||||||
halt 404
|
halt 404
|
||||||
@@ -169,6 +171,13 @@ module Precious
|
|||||||
mustache :search
|
mustache :search
|
||||||
end
|
end
|
||||||
|
|
||||||
|
get '/pages' do
|
||||||
|
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
||||||
|
@results = wiki.pages
|
||||||
|
@ref = wiki.ref
|
||||||
|
mustache :pages
|
||||||
|
end
|
||||||
|
|
||||||
get '/*' do
|
get '/*' do
|
||||||
show_page_or_file(params[:splat].first)
|
show_page_or_file(params[:splat].first)
|
||||||
end
|
end
|
||||||
@@ -179,6 +188,7 @@ module Precious
|
|||||||
@page = page
|
@page = page
|
||||||
@name = name
|
@name = name
|
||||||
@content = page.formatted_data
|
@content = page.formatted_data
|
||||||
|
@editable = true
|
||||||
mustache :page
|
mustache :page
|
||||||
elsif file = wiki.file(name)
|
elsif file = wiki.file(name)
|
||||||
content_type file.mime_type
|
content_type file.mime_type
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ a:hover, a:visited {
|
|||||||
line-height: normal;
|
line-height: normal;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0.08em 0 0 0;
|
padding: 0.08em 0 0 0;
|
||||||
width: 50%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#head ul.actions {
|
#head ul.actions {
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
// get form fields
|
// get form fields
|
||||||
var oldAction = $('#gollum-editor form').attr('action');
|
var oldAction = $('#gollum-editor form').attr('action');
|
||||||
var $form = $($('#gollum-editor form').get(0));
|
var $form = $($('#gollum-editor form').get(0));
|
||||||
$form.attr('action', this.href);
|
$form.attr('action', '/preview');
|
||||||
$form.attr('target', '_blank');
|
$form.attr('target', '_blank');
|
||||||
$form.submit();
|
$form.submit();
|
||||||
|
|
||||||
|
|||||||
@@ -2,17 +2,21 @@
|
|||||||
<div id="head">
|
<div id="head">
|
||||||
<h1>{{title}}</h1>
|
<h1>{{title}}</h1>
|
||||||
<ul class="actions">
|
<ul class="actions">
|
||||||
|
<li class="minibutton"><a href="/pages"
|
||||||
|
class="action-all-pages">All Pages</a></li>
|
||||||
<li class="minibutton" class="jaws">
|
<li class="minibutton" class="jaws">
|
||||||
<a href="#" id="minibutton-new-page">New Page</a></li>
|
<a href="#" id="minibutton-new-page">New Page</a></li>
|
||||||
|
{{#editable}}
|
||||||
<li class="minibutton"><a href="/edit/{{escaped_name}}"
|
<li class="minibutton"><a href="/edit/{{escaped_name}}"
|
||||||
class="action-edit-page">Edit Page</a></li>
|
class="action-edit-page">Edit Page</a></li>
|
||||||
|
{{/editable}}
|
||||||
<li class="minibutton"><a href="/history/{{escaped_name}}"
|
<li class="minibutton"><a href="/history/{{escaped_name}}"
|
||||||
class="action-page-history">Page History</a></li>
|
class="action-page-history">Page History</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
{{>searchbar}}
|
{{>searchbar}}
|
||||||
</div>
|
</div>
|
||||||
<div id="wiki-content">
|
<div id="wiki-content">
|
||||||
<div class="wrap{{#has_footer}} has-footer{{/has_footer}}{{#has_sidebar}} has-rightbar{{/has_sidebar}}">
|
<div class="wrap {{#has_footer}} has-footer {{/has_footer}} {{#has_sidebar}} has-rightbar{{/has_sidebar}}">
|
||||||
<div id="wiki-body" class="gollum-{{format}}-content">
|
<div id="wiki-body" class="gollum-{{format}}-content">
|
||||||
<div id="template">
|
<div id="template">
|
||||||
{{{content}}}
|
{{{content}}}
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<div id="wiki-wrapper" class="results">
|
||||||
|
<div id="head">
|
||||||
|
<h1>{{title}}</h1>
|
||||||
|
<ul class="actions">
|
||||||
|
<li class="minibutton"><a href="/"
|
||||||
|
class="action-edit-page">Home</a></li>
|
||||||
|
</ul>
|
||||||
|
{{>searchbar}}
|
||||||
|
</div>
|
||||||
|
<div id="results">
|
||||||
|
|
||||||
|
{{#has_results}}
|
||||||
|
<ul>
|
||||||
|
{{#results}}
|
||||||
|
<li>
|
||||||
|
<a href="/{{name}}">{{name}}</a>
|
||||||
|
</li>
|
||||||
|
{{/results}}
|
||||||
|
</ul>
|
||||||
|
{{/has_results}}
|
||||||
|
|
||||||
|
{{#no_results}}
|
||||||
|
<p id="no-results">
|
||||||
|
There are no pages in <strong>{{ref}}</strong>.
|
||||||
|
</p>
|
||||||
|
{{/no_results}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div id="footer">
|
||||||
|
<ul class="actions">
|
||||||
|
<li class="minibutton"><a href="#">Back to Top</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
@@ -18,6 +18,10 @@ module Precious
|
|||||||
def date
|
def date
|
||||||
@page.version.authored_date.strftime("%Y-%m-%d %H:%M:%S")
|
@page.version.authored_date.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def editable
|
||||||
|
@editable
|
||||||
|
end
|
||||||
|
|
||||||
def has_footer
|
def has_footer
|
||||||
@footer = (@page.footer || false) if @footer.nil?
|
@footer = (@page.footer || false) if @footer.nil?
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
module Precious
|
||||||
|
module Views
|
||||||
|
class Pages < Layout
|
||||||
|
attr_reader :results, :ref
|
||||||
|
|
||||||
|
def title
|
||||||
|
"All pages in #{@ref}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def has_results
|
||||||
|
!@results.empty?
|
||||||
|
end
|
||||||
|
|
||||||
|
def no_results
|
||||||
|
@results.empty?
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -28,13 +28,17 @@ module Gollum
|
|||||||
#
|
#
|
||||||
# ref - a String Git reference (ex: "master")
|
# ref - a String Git reference (ex: "master")
|
||||||
#
|
#
|
||||||
# Returns a String.
|
# Returns a String, or nil if the ref isn't found.
|
||||||
def ref_to_sha(ref)
|
def ref_to_sha(ref)
|
||||||
if sha?(ref)
|
ref = ref.to_s
|
||||||
ref
|
return if ref.empty?
|
||||||
else
|
sha =
|
||||||
get_cache(:ref, ref) { ref_to_sha!(ref) }
|
if sha?(ref)
|
||||||
end
|
ref
|
||||||
|
else
|
||||||
|
get_cache(:ref, ref) { ref_to_sha!(ref) }
|
||||||
|
end.to_s
|
||||||
|
sha.empty? ? nil : sha
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: Gets a recursive list of Git blobs for the whole tree at the
|
# Public: Gets a recursive list of Git blobs for the whole tree at the
|
||||||
@@ -238,4 +242,4 @@ module Gollum
|
|||||||
path
|
path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+52
-4
@@ -2,6 +2,7 @@ require 'digest/sha1'
|
|||||||
require 'cgi'
|
require 'cgi'
|
||||||
|
|
||||||
module Gollum
|
module Gollum
|
||||||
|
|
||||||
class Markup
|
class Markup
|
||||||
# Initialize a new Markup object.
|
# Initialize a new Markup object.
|
||||||
#
|
#
|
||||||
@@ -74,12 +75,14 @@ module Gollum
|
|||||||
# Returns the placeholder'd String data.
|
# Returns the placeholder'd String data.
|
||||||
def extract_tex(data)
|
def extract_tex(data)
|
||||||
data.gsub(/\\\[\s*(.*?)\s*\\\]/m) do
|
data.gsub(/\\\[\s*(.*?)\s*\\\]/m) do
|
||||||
id = Digest::SHA1.hexdigest($1)
|
tag = CGI.escapeHTML($1)
|
||||||
@texmap[id] = [:block, $1]
|
id = Digest::SHA1.hexdigest(tag)
|
||||||
|
@texmap[id] = [:block, tag]
|
||||||
id
|
id
|
||||||
end.gsub(/\\\(\s*(.*?)\s*\\\)/m) do
|
end.gsub(/\\\(\s*(.*?)\s*\\\)/m) do
|
||||||
id = Digest::SHA1.hexdigest($1)
|
tag = CGI.escapeHTML($1)
|
||||||
@texmap[id] = [:inline, $1]
|
id = Digest::SHA1.hexdigest(tag)
|
||||||
|
@texmap[id] = [:inline, tag]
|
||||||
id
|
id
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -435,4 +438,49 @@ module Gollum
|
|||||||
def update_cache(type, id, data)
|
def update_cache(type, id, data)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
begin
|
||||||
|
require 'redcarpet'
|
||||||
|
|
||||||
|
class MarkupGFM < Markup
|
||||||
|
def render(no_follow = false)
|
||||||
|
sanitize = no_follow ?
|
||||||
|
@wiki.history_sanitizer :
|
||||||
|
@wiki.sanitizer
|
||||||
|
|
||||||
|
data = extract_tex(@data.dup)
|
||||||
|
data = extract_tags(data)
|
||||||
|
|
||||||
|
flags = [
|
||||||
|
:autolink,
|
||||||
|
:fenced_code,
|
||||||
|
:tables,
|
||||||
|
:strikethrough,
|
||||||
|
:lax_htmlblock,
|
||||||
|
:gh_blockcode,
|
||||||
|
:no_intraemphasis
|
||||||
|
]
|
||||||
|
data = Redcarpet.new(data, *flags).to_html
|
||||||
|
data = process_tags(data)
|
||||||
|
|
||||||
|
doc = Nokogiri::HTML::DocumentFragment.parse(data)
|
||||||
|
|
||||||
|
doc.search('pre').each do |node|
|
||||||
|
next unless lang = node['lang']
|
||||||
|
text = node.inner_text
|
||||||
|
html = Gollum::Albino.colorize(text, lang)
|
||||||
|
node.replace(html)
|
||||||
|
end
|
||||||
|
|
||||||
|
doc = sanitize.clean_node!(doc) if sanitize
|
||||||
|
yield doc if block_given?
|
||||||
|
|
||||||
|
data = doc_to_html(doc)
|
||||||
|
data = process_tex(data)
|
||||||
|
data
|
||||||
|
end
|
||||||
|
end
|
||||||
|
rescue LoadError
|
||||||
|
MarkupGFM = Markup
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+7
-3
@@ -168,7 +168,7 @@ module Gollum
|
|||||||
#
|
#
|
||||||
# Returns the String data.
|
# Returns the String data.
|
||||||
def formatted_data(&block)
|
def formatted_data(&block)
|
||||||
@blob && @wiki.markup_class.new(self).render(historical?, &block)
|
@blob && @wiki.markup_classes[format].new(self).render(historical?, &block)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: The format of the page.
|
# Public: The format of the page.
|
||||||
@@ -199,10 +199,10 @@ module Gollum
|
|||||||
options[:pretty] = 'raw'
|
options[:pretty] = 'raw'
|
||||||
options.delete :max_count
|
options.delete :max_count
|
||||||
options.delete :skip
|
options.delete :skip
|
||||||
log = @wiki.repo.git.native "log", options, "master", "--", @path
|
log = @wiki.repo.git.native "log", options, @wiki.ref, "--", @path
|
||||||
Grit::Commit.list_from_string(@wiki.repo, log)
|
Grit::Commit.list_from_string(@wiki.repo, log)
|
||||||
else
|
else
|
||||||
@wiki.repo.log('master', @path, log_pagination_options(options))
|
@wiki.repo.log(@wiki.ref, @path, log_pagination_options(options))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -390,5 +390,9 @@ module Gollum
|
|||||||
|
|
||||||
find_page_in_tree(map, name, '')
|
find_page_in_tree(map, name, '')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def inspect
|
||||||
|
%(#<#{self.class.name}:#{object_id} #{name} (#{format}) @wiki=#{@wiki.repo.path.inspect}>)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
class String
|
|
||||||
alias :lines :to_a if defined?(RUBY_VERSION) && RUBY_VERSION < '1.9'
|
|
||||||
end
|
|
||||||
@@ -47,6 +47,27 @@ module Gollum
|
|||||||
'img' => {'src' => ['http', 'https', :relative]}
|
'img' => {'src' => ['http', 'https', :relative]}
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
|
# Default transformers to force @id attributes with 'wiki-' prefix
|
||||||
|
|
||||||
|
TRANSFORMERS = [
|
||||||
|
lambda do |env|
|
||||||
|
node = env[:node]
|
||||||
|
return if env[:is_whitelisted] || !node.element? || !node['id']
|
||||||
|
prefix = env[:config][:id_prefix]
|
||||||
|
node['id'] = node['id'].gsub(/\A(#{prefix})?/, prefix)
|
||||||
|
|
||||||
|
{:node_whitelist => [node]}
|
||||||
|
end,
|
||||||
|
lambda do |env|
|
||||||
|
node = env[:node]
|
||||||
|
return unless node['href']
|
||||||
|
prefix = env[:config][:id_prefix]
|
||||||
|
node['href'] = node['href'].gsub(/\A\#(#{prefix})?/, '#'+prefix)
|
||||||
|
|
||||||
|
{:node_whitelist => [node]}
|
||||||
|
end
|
||||||
|
].freeze
|
||||||
|
|
||||||
# Gets an Array of whitelisted HTML elements. Default: ELEMENTS.
|
# Gets an Array of whitelisted HTML elements. Default: ELEMENTS.
|
||||||
attr_reader :elements
|
attr_reader :elements
|
||||||
|
|
||||||
@@ -58,6 +79,13 @@ module Gollum
|
|||||||
# attributes. Default: PROTOCOLS
|
# attributes. Default: PROTOCOLS
|
||||||
attr_reader :protocols
|
attr_reader :protocols
|
||||||
|
|
||||||
|
# Gets a Hash describing which URI protocols are allowed in HTML
|
||||||
|
# attributes. Default: TRANSFORMERS
|
||||||
|
attr_reader :transformers
|
||||||
|
|
||||||
|
# Gets a String prefix which is added to ID attributes. Default: 'wiki-'
|
||||||
|
attr_reader :id_prefix
|
||||||
|
|
||||||
# Gets a Hash describing HTML attributes that Sanitize should add.
|
# Gets a Hash describing HTML attributes that Sanitize should add.
|
||||||
# Default: {}
|
# Default: {}
|
||||||
attr_reader :add_attributes
|
attr_reader :add_attributes
|
||||||
@@ -70,8 +98,10 @@ module Gollum
|
|||||||
@elements = ELEMENTS
|
@elements = ELEMENTS
|
||||||
@attributes = ATTRIBUTES
|
@attributes = ATTRIBUTES
|
||||||
@protocols = PROTOCOLS
|
@protocols = PROTOCOLS
|
||||||
|
@transformers = TRANSFORMERS
|
||||||
@add_attributes = {}
|
@add_attributes = {}
|
||||||
@allow_comments = false
|
@allow_comments = false
|
||||||
|
@id_prefix = 'wiki-'
|
||||||
yield self if block_given?
|
yield self if block_given?
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -100,7 +130,9 @@ module Gollum
|
|||||||
:attributes => attributes,
|
:attributes => attributes,
|
||||||
:protocols => protocols,
|
:protocols => protocols,
|
||||||
:add_attributes => add_attributes,
|
:add_attributes => add_attributes,
|
||||||
:allow_comments => allow_comments?
|
:allow_comments => allow_comments?,
|
||||||
|
:transformers => transformers,
|
||||||
|
:id_prefix => id_prefix
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
+59
-24
@@ -10,7 +10,10 @@ module Gollum
|
|||||||
attr_writer :file_class
|
attr_writer :file_class
|
||||||
|
|
||||||
# Sets the markup class used by all instances of this Wiki.
|
# Sets the markup class used by all instances of this Wiki.
|
||||||
attr_writer :markup_class
|
attr_writer :markup_classes
|
||||||
|
|
||||||
|
# Sets the default ref for the wiki.
|
||||||
|
attr_accessor :default_ref
|
||||||
|
|
||||||
# Sets the default name for commits.
|
# Sets the default name for commits.
|
||||||
attr_accessor :default_committer_name
|
attr_accessor :default_committer_name
|
||||||
@@ -50,15 +53,33 @@ module Gollum
|
|||||||
|
|
||||||
# Gets the markup class used by all instances of this Wiki.
|
# Gets the markup class used by all instances of this Wiki.
|
||||||
# Default: Gollum::Markup
|
# Default: Gollum::Markup
|
||||||
def markup_class
|
def markup_classes
|
||||||
@markup_class ||
|
@markup_classes ||
|
||||||
if superclass.respond_to?(:markup_class)
|
if superclass.respond_to?(:markup_classes)
|
||||||
superclass.markup_class
|
superclass.markup_classes
|
||||||
else
|
else
|
||||||
::Gollum::Markup
|
classes = Hash.new(::Gollum::Markup)
|
||||||
|
|
||||||
|
# Add custom markup classes for different languages
|
||||||
|
classes[:markdown] = ::Gollum::MarkupGFM
|
||||||
|
classes
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Gets the default markup class used by all instances of this Wiki.
|
||||||
|
# Kept for backwards compatibility until Gollum v2.x
|
||||||
|
def markup_class
|
||||||
|
markup_classes[:default]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Sets the default markup class used by all instances of this Wiki.
|
||||||
|
# Kept for backwards compatibility until Gollum v2.x
|
||||||
|
def markup_class=(default)
|
||||||
|
new_classes = Hash.new default
|
||||||
|
@markup_classes = Hash.new(default).update(markup_classes)
|
||||||
|
default
|
||||||
|
end
|
||||||
|
|
||||||
# Gets the default sanitization options for current pages used by
|
# Gets the default sanitization options for current pages used by
|
||||||
# instances of this Wiki.
|
# instances of this Wiki.
|
||||||
def sanitization
|
def sanitization
|
||||||
@@ -80,6 +101,7 @@ module Gollum
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
self.default_ref = 'master'
|
||||||
self.default_committer_name = 'Anonymous'
|
self.default_committer_name = 'Anonymous'
|
||||||
self.default_committer_email = 'anon@anon.com'
|
self.default_committer_email = 'anon@anon.com'
|
||||||
|
|
||||||
@@ -94,6 +116,9 @@ module Gollum
|
|||||||
# Gets the sanitization options for older page revisions used by this Wiki.
|
# Gets the sanitization options for older page revisions used by this Wiki.
|
||||||
attr_reader :history_sanitization
|
attr_reader :history_sanitization
|
||||||
|
|
||||||
|
# Gets the String ref in which all page files reside.
|
||||||
|
attr_reader :ref
|
||||||
|
|
||||||
# Gets the String directory in which all page files reside.
|
# Gets the String directory in which all page files reside.
|
||||||
attr_reader :page_file_dir
|
attr_reader :page_file_dir
|
||||||
|
|
||||||
@@ -106,9 +131,11 @@ module Gollum
|
|||||||
# Default: "/"
|
# Default: "/"
|
||||||
# :page_class - The page Class. Default: Gollum::Page
|
# :page_class - The page Class. Default: Gollum::Page
|
||||||
# :file_class - The file Class. Default: Gollum::File
|
# :file_class - The file Class. Default: Gollum::File
|
||||||
# :markup_class - The markup Class. Default: Gollum::Markup
|
# :markup_classes - A hash containing the markup Classes for each
|
||||||
|
# document type. Default: { Gollum::Markup }
|
||||||
# :sanitization - An instance of Sanitization.
|
# :sanitization - An instance of Sanitization.
|
||||||
# :page_file_dir - String the directory in which all page files reside
|
# :page_file_dir - String the directory in which all page files reside
|
||||||
|
# :ref - String the repository ref to retrieve pages from
|
||||||
#
|
#
|
||||||
# Returns a fresh Gollum::Repo.
|
# Returns a fresh Gollum::Repo.
|
||||||
def initialize(path, options = {})
|
def initialize(path, options = {})
|
||||||
@@ -122,8 +149,9 @@ module Gollum
|
|||||||
@base_path = options[:base_path] || "/"
|
@base_path = options[:base_path] || "/"
|
||||||
@page_class = options[:page_class] || self.class.page_class
|
@page_class = options[:page_class] || self.class.page_class
|
||||||
@file_class = options[:file_class] || self.class.file_class
|
@file_class = options[:file_class] || self.class.file_class
|
||||||
@markup_class = options[:markup_class] || self.class.markup_class
|
@markup_classes = options[:markup_classes] || self.class.markup_classes
|
||||||
@repo = @access.repo
|
@repo = @access.repo
|
||||||
|
@ref = options[:ref] || self.class.default_ref
|
||||||
@sanitization = options[:sanitization] || self.class.sanitization
|
@sanitization = options[:sanitization] || self.class.sanitization
|
||||||
@history_sanitization = options[:history_sanitization] ||
|
@history_sanitization = options[:history_sanitization] ||
|
||||||
self.class.history_sanitization
|
self.class.history_sanitization
|
||||||
@@ -139,20 +167,20 @@ module Gollum
|
|||||||
# Public: Get the formatted page for a given page name.
|
# Public: Get the formatted page for a given page name.
|
||||||
#
|
#
|
||||||
# name - The human or canonical String page name of the wiki page.
|
# name - The human or canonical String page name of the wiki page.
|
||||||
# version - The String version ID to find (default: "master").
|
# version - The String version ID to find (default: @ref).
|
||||||
#
|
#
|
||||||
# Returns a Gollum::Page or nil if no matching page was found.
|
# Returns a Gollum::Page or nil if no matching page was found.
|
||||||
def page(name, version = 'master')
|
def page(name, version = @ref)
|
||||||
@page_class.new(self).find(name, version)
|
@page_class.new(self).find(name, version)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: Get the static file for a given name.
|
# Public: Get the static file for a given name.
|
||||||
#
|
#
|
||||||
# name - The full String pathname to the file.
|
# name - The full String pathname to the file.
|
||||||
# version - The String version ID to find (default: "master").
|
# version - The String version ID to find (default: @ref).
|
||||||
#
|
#
|
||||||
# Returns a Gollum::File or nil if no matching file was found.
|
# Returns a Gollum::File or nil if no matching file was found.
|
||||||
def file(name, version = 'master')
|
def file(name, version = @ref)
|
||||||
@file_class.new(self).find(name, version)
|
@file_class.new(self).find(name, version)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -290,7 +318,7 @@ module Gollum
|
|||||||
else
|
else
|
||||||
Committer.new(self, commit)
|
Committer.new(self, commit)
|
||||||
end
|
end
|
||||||
|
|
||||||
committer.delete(page.path)
|
committer.delete(page.path)
|
||||||
|
|
||||||
committer.after_commit do |index, sha|
|
committer.after_commit do |index, sha|
|
||||||
@@ -381,11 +409,11 @@ module Gollum
|
|||||||
|
|
||||||
# Public: Lists all pages for this wiki.
|
# Public: Lists all pages for this wiki.
|
||||||
#
|
#
|
||||||
# treeish - The String commit ID or ref to find (default: master)
|
# treeish - The String commit ID or ref to find (default: @ref)
|
||||||
#
|
#
|
||||||
# Returns an Array of Gollum::Page instances.
|
# Returns an Array of Gollum::Page instances.
|
||||||
def pages(treeish = nil)
|
def pages(treeish = nil)
|
||||||
tree_list(treeish || 'master')
|
tree_list(treeish || @ref)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: Returns the number of pages accessible from a commit
|
# Public: Returns the number of pages accessible from a commit
|
||||||
@@ -394,7 +422,7 @@ module Gollum
|
|||||||
#
|
#
|
||||||
# Returns a Fixnum
|
# Returns a Fixnum
|
||||||
def size(ref = nil)
|
def size(ref = nil)
|
||||||
tree_map_for(ref || 'master').inject(0) do |num, entry|
|
tree_map_for(ref || @ref).inject(0) do |num, entry|
|
||||||
num + (@page_class.valid_page_name?(entry.name) ? 1 : 0)
|
num + (@page_class.valid_page_name?(entry.name) ? 1 : 0)
|
||||||
end
|
end
|
||||||
rescue Grit::GitRuby::Repository::NoSuchShaFound
|
rescue Grit::GitRuby::Repository::NoSuchShaFound
|
||||||
@@ -407,7 +435,7 @@ module Gollum
|
|||||||
#
|
#
|
||||||
# Returns an Array with Objects of page name and count of matches
|
# Returns an Array with Objects of page name and count of matches
|
||||||
def search(query)
|
def search(query)
|
||||||
args = [{}, '-i', '-c', query, 'master', '--']
|
args = [{}, '-i', '-c', query, @ref, '--']
|
||||||
args << '--' << @page_file_dir if @page_file_dir
|
args << '--' << @page_file_dir if @page_file_dir
|
||||||
|
|
||||||
@repo.git.grep(*args).split("\n").map! do |line|
|
@repo.git.grep(*args).split("\n").map! do |line|
|
||||||
@@ -429,7 +457,7 @@ module Gollum
|
|||||||
#
|
#
|
||||||
# Returns an Array of Grit::Commit.
|
# Returns an Array of Grit::Commit.
|
||||||
def log(options = {})
|
def log(options = {})
|
||||||
@repo.log('master', nil, log_pagination_options(options))
|
@repo.log(@ref, nil, log_pagination_options(options))
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: Refreshes just the cached Git reference data. This should
|
# Public: Refreshes just the cached Git reference data. This should
|
||||||
@@ -483,7 +511,7 @@ module Gollum
|
|||||||
attr_reader :file_class
|
attr_reader :file_class
|
||||||
|
|
||||||
# Gets the markup class used by all instances of this Wiki.
|
# Gets the markup class used by all instances of this Wiki.
|
||||||
attr_reader :markup_class
|
attr_reader :markup_classes
|
||||||
|
|
||||||
# Normalize the data.
|
# Normalize the data.
|
||||||
#
|
#
|
||||||
@@ -511,11 +539,14 @@ module Gollum
|
|||||||
#
|
#
|
||||||
# Returns a flat Array of Gollum::Page instances.
|
# Returns a flat Array of Gollum::Page instances.
|
||||||
def tree_list(ref)
|
def tree_list(ref)
|
||||||
sha = @access.ref_to_sha(ref)
|
if sha = @access.ref_to_sha(ref)
|
||||||
commit = @access.commit(sha)
|
commit = @access.commit(sha)
|
||||||
tree_map_for(sha).inject([]) do |list, entry|
|
tree_map_for(sha).inject([]) do |list, entry|
|
||||||
next list unless @page_class.valid_page_name?(entry.name)
|
next list unless @page_class.valid_page_name?(entry.name)
|
||||||
list << entry.page(self, commit)
|
list << entry.page(self, commit)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
[]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -584,5 +615,9 @@ module Gollum
|
|||||||
rescue Grit::GitRuby::Repository::NoSuchShaFound
|
rescue Grit::GitRuby::Repository::NoSuchShaFound
|
||||||
[]
|
[]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def inspect
|
||||||
|
%(#<#{self.class.name}:#{object_id} #{@repo.path}>)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -38,6 +38,12 @@ def commit_details
|
|||||||
:email => "tom@github.com" }
|
:email => "tom@github.com" }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def normal(text)
|
||||||
|
text.gsub!(' ', '')
|
||||||
|
text.gsub!("\n", '')
|
||||||
|
text
|
||||||
|
end
|
||||||
|
|
||||||
# test/spec/mini 3
|
# test/spec/mini 3
|
||||||
# http://gist.github.com/25455
|
# http://gist.github.com/25455
|
||||||
# chris@ozmm.org
|
# chris@ozmm.org
|
||||||
|
|||||||
@@ -48,4 +48,17 @@ context "Wiki" do
|
|||||||
FileUtils.rm_rf(@path)
|
FileUtils.rm_rf(@path)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "parents with default master ref" do
|
||||||
|
ref = 'a8ad3c09dd842a3517085bfadd37718856dee813'
|
||||||
|
committer = Gollum::Committer.new(@wiki)
|
||||||
|
assert_equal ref, committer.parents.first.sha
|
||||||
|
end
|
||||||
|
|
||||||
|
test "parents with custom ref" do
|
||||||
|
ref = '60f12f4254f58801b9ee7db7bca5fa8aeefaa56b'
|
||||||
|
@wiki = Gollum::Wiki.new(testpath("examples/lotr.git"), :ref => ref)
|
||||||
|
committer = Gollum::Committer.new(@wiki)
|
||||||
|
assert_equal ref, committer.parents.first.sha
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+17
-3
@@ -173,7 +173,7 @@ context "Markup" do
|
|||||||
@wiki.write_page("Potato", :mediawiki, "a [[Potato|Potato Heaad]] ", commit_details)
|
@wiki.write_page("Potato", :mediawiki, "a [[Potato|Potato Heaad]] ", commit_details)
|
||||||
page = @wiki.page("Potato")
|
page = @wiki.page("Potato")
|
||||||
output = page.formatted_data
|
output = page.formatted_data
|
||||||
assert_equal "<p>\na <a class=\"internal present\" href=\"/Potato\">Potato Heaad</a> </p>", output
|
assert_equal normal("<p>\na <a class=\"internal present\" href=\"/Potato\">Potato Heaad</a> </p>"), normal(output)
|
||||||
end
|
end
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
@@ -467,6 +467,20 @@ context "Markup" do
|
|||||||
compare(content, output, 'org')
|
compare(content, output, 'org')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "id with prefix ok" do
|
||||||
|
content = "h2(example#wiki-foo). xxxx"
|
||||||
|
output = %(<h2 class="example" id="wiki-foo">xxxx</h2>)
|
||||||
|
compare(content, output, :textile)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "id prefix added" do
|
||||||
|
content = "h2(#foo). xxxx[1]\n\nfn1.footnote"
|
||||||
|
output = "<h2 id=\"wiki-foo\">xxxx" +
|
||||||
|
"<sup class=\"footnote\" id=\"wiki-fnr1\"><a href=\"#wiki-fn1\">1</a></sup></h2>" +
|
||||||
|
"\n<p class=\"footnote\" id=\"wiki-fn1\"><a href=\"#wiki-fnr1\"><sup>1</sup></a> footnote</p>"
|
||||||
|
compare(content, output, :textile)
|
||||||
|
end
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
#
|
#
|
||||||
# TeX
|
# TeX
|
||||||
@@ -499,7 +513,7 @@ context "Markup" do
|
|||||||
page = @wiki.page("Bilbo Baggins")
|
page = @wiki.page("Bilbo Baggins")
|
||||||
rendered = Gollum::Markup.new(page).render
|
rendered = Gollum::Markup.new(page).render
|
||||||
if regexes.empty?
|
if regexes.empty?
|
||||||
assert_equal output, rendered
|
assert_equal normal(output), normal(rendered)
|
||||||
else
|
else
|
||||||
regexes.each { |r| assert_match r, output }
|
regexes.each { |r| assert_match r, output }
|
||||||
end
|
end
|
||||||
@@ -514,6 +528,6 @@ context "Markup" do
|
|||||||
@wiki.clear_cache
|
@wiki.clear_cache
|
||||||
page = @wiki.page("Bilbo Baggins")
|
page = @wiki.page("Bilbo Baggins")
|
||||||
rendered = Gollum::Markup.new(page).render
|
rendered = Gollum::Markup.new(page).render
|
||||||
assert_equal output, rendered
|
assert_equal normal(output), normal(rendered)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -4,6 +4,20 @@ require File.expand_path(File.join(File.dirname(__FILE__), "helper"))
|
|||||||
context "Wiki" do
|
context "Wiki" do
|
||||||
setup do
|
setup do
|
||||||
@wiki = Gollum::Wiki.new(testpath("examples/lotr.git"))
|
@wiki = Gollum::Wiki.new(testpath("examples/lotr.git"))
|
||||||
|
Gollum::Wiki.markup_classes = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
test "#markup_class gets default markup" do
|
||||||
|
assert_equal Gollum::Markup, Gollum::Wiki.markup_class
|
||||||
|
end
|
||||||
|
|
||||||
|
test "#markup_class= doesn't clobber alternate markups" do
|
||||||
|
custom = Class.new(Gollum::Markup)
|
||||||
|
Gollum::Wiki.markup_class = custom
|
||||||
|
|
||||||
|
assert_equal custom, Gollum::Wiki.markup_class
|
||||||
|
assert_equal custom, Gollum::Wiki.markup_classes[:orgmode]
|
||||||
|
assert_equal Gollum::MarkupGFM, Gollum::Wiki.markup_classes[:markdown]
|
||||||
end
|
end
|
||||||
|
|
||||||
test "repo path" do
|
test "repo path" do
|
||||||
@@ -282,6 +296,11 @@ context "page_file_dir option" do
|
|||||||
assert_equal "Hi", File.read(File.join(@path, @page_file_dir, "New-Page.md"))
|
assert_equal "Hi", File.read(File.join(@path, @page_file_dir, "New-Page.md"))
|
||||||
assert !File.exist?(File.join(@path, "New-Page.md"))
|
assert !File.exist?(File.join(@path, "New-Page.md"))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "edit a page in a sub directory" do
|
||||||
|
page = @wiki.page('foo')
|
||||||
|
@wiki.update_page(page, page.name, page.format, 'new contents', commit_details)
|
||||||
|
end
|
||||||
|
|
||||||
test "a file in page file dir should be found" do
|
test "a file in page file dir should be found" do
|
||||||
assert @wiki.page("foo")
|
assert @wiki.page("foo")
|
||||||
@@ -301,3 +320,38 @@ context "page_file_dir option" do
|
|||||||
FileUtils.rm_r(@path)
|
FileUtils.rm_r(@path)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "Wiki page writing with different branch" do
|
||||||
|
setup do
|
||||||
|
@path = testpath("examples/test.git")
|
||||||
|
FileUtils.rm_rf(@path)
|
||||||
|
@repo = Grit::Repo.init_bare(@path)
|
||||||
|
@wiki = Gollum::Wiki.new(@path)
|
||||||
|
|
||||||
|
# We need an initial commit to create the master branch
|
||||||
|
# before we can create new branches
|
||||||
|
cd = commit_details
|
||||||
|
@wiki.write_page("Gollum", :markdown, "# Gollum", cd)
|
||||||
|
|
||||||
|
# Create our test branch and check it out
|
||||||
|
@repo.update_ref("test", @repo.commits.first.id)
|
||||||
|
@branch = Gollum::Wiki.new(@path, :ref => "test")
|
||||||
|
end
|
||||||
|
|
||||||
|
teardown do
|
||||||
|
FileUtils.rm_rf(@path)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "write_page" do
|
||||||
|
cd = commit_details
|
||||||
|
|
||||||
|
@branch.write_page("Bilbo", :markdown, "# Bilbo", commit_details)
|
||||||
|
assert @branch.page("Bilbo")
|
||||||
|
assert @wiki.page("Gollum")
|
||||||
|
|
||||||
|
assert_equal 1, @wiki.repo.commits.size
|
||||||
|
assert_equal 1, @branch.repo.commits.size
|
||||||
|
|
||||||
|
assert_equal nil, @wiki.page("Bilbo")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user