Class: WikiCloth::Parser
Constant Summary
WikiLinkHandler::CATEGORY_NAMESPACES, WikiLinkHandler::FILE_NAMESPACES, WikiLinkHandler::LANGUAGE_NAMESPACES, WikiLinkHandler::MEDIA_NAMESPACES
WikiNamespaces::NAMESPACE_TYPES
Class Method Summary
collapse
Instance Method Summary
collapse
#cache, #categories, #categories=, #external_link, #external_links, #external_links=, #find_reference_by_name, #function, #image_url_for, #include_resource, #included_templates, #internal_links, #internal_links=, #languages, #languages=, #link_attributes_for, #link_for, #link_for_resource, #params, #params=, #reference_index, #references, #references=, #section_link, #section_list, #template, #toc, #url_for
get_namespace_names_for, language_name, language_namespace_names, localise_ns, method_missing, namespace_type
Constructor Details
#initialize(options = {}) ⇒ Parser
Returns a new instance of Parser.
5
6
7
8
9
10
11
12
13
14
15
|
# File 'lib/wikicloth/parser.rb', line 5
def initialize(options={})
options.each { |k,v|
if v.instance_of?(Proc)
self.class.send :define_method, k.to_sym do |*args|
self.instance_exec(args,&v)
end
end
}
@options = { :link_handler => self, :params => {} }.merge(options)
@wikicloth = WikiCloth.new(@options)
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args) ⇒ Object
93
94
95
96
97
98
99
|
# File 'lib/wikicloth/parser.rb', line 93
def method_missing(method, *args)
if @wikicloth.respond_to?(method)
@wikicloth.send(method, *args)
else
super(method, *args)
end
end
|
Class Method Details
.cache(&block) ⇒ Object
86
87
88
89
90
|
# File 'lib/wikicloth/parser.rb', line 86
def cache(&block)
self.send :define_method, 'cache' do |item|
self.instance_exec(item,&block)
end
end
|
.external_link(&block) ⇒ Object
42
43
44
45
46
|
# File 'lib/wikicloth/parser.rb', line 42
def external_link(&block)
self.send :define_method, 'external_link' do |url,text|
self.instance_exec(url,text,&block)
end
end
|
.function(&block) ⇒ Object
36
37
38
39
40
|
# File 'lib/wikicloth/parser.rb', line 36
def function(&block)
self.send :define_method, 'function' do |name, params|
self.instance_exec(name, params, &block)
end
end
|
.image_url_for(&block) ⇒ Object
24
25
26
27
28
|
# File 'lib/wikicloth/parser.rb', line 24
def image_url_for(&block)
self.send :define_method, 'image_url_for' do |url|
self.instance_exec(url, &block)
end
end
|
.include_resource(&block) ⇒ Object
48
49
50
51
52
53
|
# File 'lib/wikicloth/parser.rb', line 48
def include_resource(&block)
self.send :define_method, 'include_resource' do |resource,options|
options ||= []
self.instance_exec(resource,options,&block)
end
end
|
.link_attributes_for(&block) ⇒ Object
80
81
82
83
84
|
# File 'lib/wikicloth/parser.rb', line 80
def link_attributes_for(&block)
self.send :define_method, 'link_attributes_for' do |page|
self.instance_exec(page,&block)
end
end
|
.link_for(&block) ⇒ Object
74
75
76
77
78
|
# File 'lib/wikicloth/parser.rb', line 74
def link_for(&block)
self.send :define_method, 'link_for' do |page,text|
self.instance_exec(page,text,&block)
end
end
|
.link_for_resource(&block) ⇒ Object
61
62
63
64
65
66
|
# File 'lib/wikicloth/parser.rb', line 61
def link_for_resource(&block)
self.send :define_method, 'link_for_resource' do |prefix,resource,options|
options ||= []
self.instance_exec(prefix,resource,options,&block)
end
end
|
.section_link(&block) ⇒ Object
68
69
70
71
72
|
# File 'lib/wikicloth/parser.rb', line 68
def section_link(&block)
self.send :define_method, 'section_link' do |section|
self.instance_exec(section,&block)
end
end
|
.template(&block) ⇒ Object
55
56
57
58
59
|
# File 'lib/wikicloth/parser.rb', line 55
def template(&block)
self.send :define_method, 'template' do |template|
self.instance_exec(template,&block)
end
end
|
.toc(&block) ⇒ Object
30
31
32
33
34
|
# File 'lib/wikicloth/parser.rb', line 30
def toc(&block)
self.send :define_method, 'toc' do |sections, numbered|
self.instance_exec(sections, numbered, &block)
end
end
|
.url_for(&block) ⇒ Object
18
19
20
21
22
|
# File 'lib/wikicloth/parser.rb', line 18
def url_for(&block)
self.send :define_method, 'url_for' do |url|
self.instance_exec(url, &block)
end
end
|
Instance Method Details
#get_section(id) ⇒ Object
Get the section, along with any sub-section of the document
108
109
110
|
# File 'lib/wikicloth/parser.rb', line 108
def get_section(id)
@wikicloth.sections.collect { |s| s.get_section(id) }.join
end
|
#put_section(id, data) ⇒ Object
Replace a section, along with any sub-section in the document
102
103
104
105
|
# File 'lib/wikicloth/parser.rb', line 102
def put_section(id,data)
data = @wikicloth.sections.collect { |s| s.wikitext({ :replace => { id => data.last(1) == "\n" ? data : "#{data}\n" } }) }.join
@wikicloth = WikiCloth.new(:data => data, :link_handler => self, :params => @options[:params])
end
|
#to_wiki ⇒ Object
112
113
114
|
# File 'lib/wikicloth/parser.rb', line 112
def to_wiki
to_wikitext
end
|
#to_wikitext ⇒ Object
116
117
118
|
# File 'lib/wikicloth/parser.rb', line 116
def to_wikitext
@wikicloth.sections.collect { |s| s.wikitext() }.join
end
|