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.
62
63
64
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 62
def initialize(text)
@text = text
end
|
Instance Method Details
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
119
120
121
122
123
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 88
def (index)
sections = [+'', +'', +'']
offset = 0
i = 0
l = 1
inside_pre = false
@text.split(/(^(?:\S+\r?\n\r?(?:\=+|\-+)|#+.+|(?:~~~|```).*)\s*$)/).each do |part|
level = nil
if part =~ /\A(~{3,}|`{3,})(\s*\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
72
73
74
75
76
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 72
def get_section(index)
section = (index)[1]
hash = Digest::MD5.hexdigest(section)
return section, hash
end
|
#to_html(*args) ⇒ Object
66
67
68
69
70
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 66
def to_html(*args)
html = formatter.render(@text)
html = inline_restore_redmine_links(html)
html
end
|
#update_section(index, update, hash = nil) ⇒ Object
78
79
80
81
82
83
84
85
86
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 78
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
|