Compare commits
33 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 |
@@ -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"
|
||||||
|
|||||||
+13
@@ -1,3 +1,16 @@
|
|||||||
|
# 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
|
# 1.3.0 / 2011-04-25
|
||||||
|
|
||||||
* Major Enhancements
|
* Major Enhancements
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
+4
-3
@@ -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.3.0'
|
s.version = '1.3.1'
|
||||||
s.date = '2011-04-25'
|
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[
|
||||||
|
|||||||
+11
-11
@@ -8,19 +8,19 @@ require 'github/markup'
|
|||||||
require 'sanitize'
|
require 'sanitize'
|
||||||
|
|
||||||
# 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.3.0'
|
VERSION = '1.3.1'
|
||||||
|
|
||||||
class Error < StandardError; end
|
class Error < StandardError; end
|
||||||
|
|
||||||
|
|||||||
@@ -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 =
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -186,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
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -6,15 +6,17 @@
|
|||||||
class="action-all-pages">All Pages</a></li>
|
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}}}
|
||||||
|
|||||||
@@ -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?
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
#
|
#
|
||||||
@@ -437,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
|
||||||
|
|||||||
+5
-1
@@ -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.
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
+40
-14
@@ -10,7 +10,7 @@ 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.
|
# Sets the default ref for the wiki.
|
||||||
attr_accessor :default_ref
|
attr_accessor :default_ref
|
||||||
@@ -53,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
|
||||||
@@ -113,7 +131,8 @@ 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
|
# :ref - String the repository ref to retrieve pages from
|
||||||
@@ -130,7 +149,7 @@ 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
|
@ref = options[:ref] || self.class.default_ref
|
||||||
@sanitization = options[:sanitization] || self.class.sanitization
|
@sanitization = options[:sanitization] || self.class.sanitization
|
||||||
@@ -492,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.
|
||||||
#
|
#
|
||||||
@@ -520,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
|
||||||
|
|
||||||
@@ -593,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
|
||||||
|
|||||||
+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")
|
||||||
|
|||||||
Reference in New Issue
Block a user