wikicloth 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +1 -1
- data/lib/wikicloth/parser.rb +69 -0
- data/lib/wikicloth/wiki_link_handler.rb +1 -1
- data/lib/wikicloth.rb +4 -3
- data/run_tests.rb +1 -1
- metadata +16 -15
data/Rakefile
CHANGED
@@ -0,0 +1,69 @@
|
|
1
|
+
module WikiCloth
|
2
|
+
|
3
|
+
class Parser < WikiLinkHandler
|
4
|
+
|
5
|
+
def initialize(opt={})
|
6
|
+
opt.each { |k,v|
|
7
|
+
if v.instance_of?(Proc)
|
8
|
+
self.class.send :define_method, k.to_sym do |*args|
|
9
|
+
v.call(args)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
}
|
13
|
+
@params = opt[:params] || {}
|
14
|
+
@wikicloth = WikiCloth.new(:data => opt[:data], :link_handler => self, :params => @params)
|
15
|
+
end
|
16
|
+
|
17
|
+
class << self
|
18
|
+
def url_for(&block)
|
19
|
+
self.send :define_method, 'url_for' do |url|
|
20
|
+
block.call(url)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def external_link(&block)
|
25
|
+
self.send :define_method, 'external_link' do |url,text|
|
26
|
+
block.call(url,text)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def include_resource(&block)
|
31
|
+
self.send :define_method, 'include_resource' do |resource,options|
|
32
|
+
options ||= []
|
33
|
+
block.call(resource,options)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def link_for_resource(&block)
|
38
|
+
self.send :define_method, 'link_for_resource' do |prefix,resource,options|
|
39
|
+
options ||= []
|
40
|
+
block.call(prefix,resource,options)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def template(&block)
|
45
|
+
self.send :define_method, 'template' do |template|
|
46
|
+
block.call(template)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def link_for(&block)
|
51
|
+
self.send :define_method, 'link_for' do |page,text|
|
52
|
+
block.call(page,text)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def link_attributes_for(&block)
|
57
|
+
self.send :define_method, 'link_attributes_for' do |page|
|
58
|
+
block.call(page)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def to_html
|
64
|
+
@wikicloth.to_html
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
data/lib/wikicloth.rb
CHANGED
@@ -2,6 +2,7 @@ require 'jcode'
|
|
2
2
|
require File.join(File.expand_path(File.dirname(__FILE__)), "wikicloth", "core_ext")
|
3
3
|
require File.join(File.expand_path(File.dirname(__FILE__)), "wikicloth", "wiki_buffer")
|
4
4
|
require File.join(File.expand_path(File.dirname(__FILE__)), "wikicloth", "wiki_link_handler")
|
5
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), "wikicloth", "parser")
|
5
6
|
String.send(:include, ExtendedString)
|
6
7
|
|
7
8
|
module WikiCloth
|
@@ -15,14 +16,14 @@ module WikiCloth
|
|
15
16
|
|
16
17
|
def load(data,p={})
|
17
18
|
data.gsub!(/<!--(.|\s)*?-->/,"")
|
18
|
-
data = data.gsub(
|
19
|
+
data = data.gsub(/^[^\s]*\{\{(.*?)\}\}/){ |match| expand_templates($1,["."]) }
|
19
20
|
self.params = p
|
20
21
|
self.html = data
|
21
22
|
end
|
22
23
|
|
23
24
|
def expand_templates(template, stack)
|
24
25
|
template.strip!
|
25
|
-
article =
|
26
|
+
article = link_handler.template(template)
|
26
27
|
|
27
28
|
if article.nil?
|
28
29
|
data = "{{template}}"
|
@@ -32,7 +33,7 @@ module WikiCloth
|
|
32
33
|
else
|
33
34
|
data = "template loop! OHNOES!"
|
34
35
|
end
|
35
|
-
data = data.gsub(
|
36
|
+
data = data.gsub(/^[^\s]*\{\{(.*?)\}\}/){ |match| expand_templates($1,stack + [template])}
|
36
37
|
end
|
37
38
|
|
38
39
|
data
|
data/run_tests.rb
CHANGED
@@ -19,7 +19,7 @@ class CustomLinkHandler < WikiLinkHandler
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
@wiki = WikiCloth::WikiCloth.new({
|
22
|
-
:data => "<nowiki>{{test}}</nowiki> ''Hello {{test}}!''\n",
|
22
|
+
:data => "\n {{test}}\n\n<nowiki>{{test}}</nowiki> ''Hello {{test}}!''\n",
|
23
23
|
:params => { "test" => "World" } })
|
24
24
|
puts @wiki.to_html
|
25
25
|
@wiki = WikiCloth::WikiCloth.new({
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wikicloth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 5
|
10
|
+
version: 0.1.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Ricciardi
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-08-
|
18
|
+
date: 2010-08-10 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -29,31 +29,32 @@ extra_rdoc_files:
|
|
29
29
|
- README
|
30
30
|
- MIT-LICENSE
|
31
31
|
files:
|
32
|
+
- lib/wikicloth.rb
|
33
|
+
- lib/wikicloth/wiki_buffer.rb
|
34
|
+
- lib/wikicloth/parser.rb
|
32
35
|
- lib/wikicloth/core_ext.rb
|
33
|
-
- lib/wikicloth/wiki_buffer/html_element.rb
|
34
|
-
- lib/wikicloth/wiki_buffer/link.rb
|
35
36
|
- lib/wikicloth/wiki_buffer/table.rb
|
37
|
+
- lib/wikicloth/wiki_buffer/html_element.rb
|
36
38
|
- lib/wikicloth/wiki_buffer/var.rb
|
37
|
-
- lib/wikicloth/wiki_buffer.rb
|
39
|
+
- lib/wikicloth/wiki_buffer/link.rb
|
38
40
|
- lib/wikicloth/wiki_link_handler.rb
|
39
|
-
- lib/wikicloth.rb
|
40
41
|
- tasks/wikicloth_tasks.rake
|
41
|
-
- sample_documents/air_force_one.wiki
|
42
|
-
- sample_documents/cheatsheet.wiki
|
43
|
-
- sample_documents/elements.wiki
|
44
42
|
- sample_documents/george_washington.wiki
|
45
|
-
- sample_documents/images.wiki
|
46
|
-
- sample_documents/lists.wiki
|
47
43
|
- sample_documents/pipe_trick.wiki
|
48
44
|
- sample_documents/random.wiki
|
49
45
|
- sample_documents/tv.wiki
|
46
|
+
- sample_documents/air_force_one.wiki
|
47
|
+
- sample_documents/lists.wiki
|
48
|
+
- sample_documents/images.wiki
|
49
|
+
- sample_documents/elements.wiki
|
50
50
|
- sample_documents/wiki_tables.wiki
|
51
|
+
- sample_documents/cheatsheet.wiki
|
51
52
|
- init.rb
|
52
53
|
- uninstall.rb
|
53
54
|
- Rakefile
|
54
55
|
- install.rb
|
55
|
-
- test/test_helper.rb
|
56
56
|
- test/wiki_cloth_test.rb
|
57
|
+
- test/test_helper.rb
|
57
58
|
- run_tests.rb
|
58
59
|
- README
|
59
60
|
- MIT-LICENSE
|
@@ -92,6 +93,6 @@ signing_key:
|
|
92
93
|
specification_version: 3
|
93
94
|
summary: An implementation of the mediawiki markup in ruby
|
94
95
|
test_files:
|
95
|
-
- test/test_helper.rb
|
96
96
|
- test/wiki_cloth_test.rb
|
97
|
+
- test/test_helper.rb
|
97
98
|
- run_tests.rb
|