Class: Redmine::WikiFormatting::Markdown::Formatter
- Inherits:
-
Object
- Object
- Redmine::WikiFormatting::Markdown::Formatter
show all
- Includes:
- LinksHelper
- Defined in:
- lib/redmine/wiki_formatting/markdown/formatter.rb
Constant Summary
Constants included
from LinksHelper
LinksHelper::AUTO_LINK_RE
Instance Method Summary
collapse
#auto_link!, #auto_mailto!, #restore_redmine_links
Constructor Details
#initialize(text) ⇒ Formatter
Returns a new instance of Formatter
58
59
60
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 58
def initialize(text)
@text = text
end
|
Instance Method Details
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 83
def (index)
sections = ['', '', '']
offset = 0
i = 0
l = 1
inside_pre = false
@text.split(/(^(?:.+\r?\n\r?(?:\=+|\-+)|#+.+|(?:~~~|```).*)\s*$)/).each do |part|
level = nil
if part =~ /\A(~{3,}|`{3,})(\S+)?\s*$/
if !inside_pre
inside_pre = true
elsif !$2
inside_pre = false
end
elsif inside_pre
elsif part =~ /\A(#+).+/
level = $1.size
elsif part =~ /\A.+\r?\n\r?(\=+|\-+)\s*$/
level = $1.include?('=') ? 1 : 2
end
if level
i += 1
if offset == 0 && i == index
offset = 1
l = level
elsif offset == 1 && i > index && level <= l
offset = 2
end
end
sections[offset] << part
end
sections.map(&:strip)
end
|
#get_section(index) ⇒ Object
68
69
70
71
72
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 68
def get_section(index)
section = (index)[1]
hash = Digest::MD5.hexdigest(section)
return section, hash
end
|
#to_html(*args) ⇒ Object
62
63
64
65
66
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 62
def to_html(*args)
html = formatter.render(@text)
html = inline_restore_redmine_links(html)
html
end
|
#update_section(index, update, hash = nil) ⇒ Object
74
75
76
77
78
79
80
81
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 74
def update_section(index, update, hash=nil)
t = (index)
if hash.present? && hash != Digest::MD5.hexdigest(t[1])
raise Redmine::WikiFormatting::StaleSectionError
end
t[1] = update unless t[1].blank?
t.reject(&:blank?).join "\n\n"
end
|