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.
60
61
62
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 60
def initialize(text)
@text = text
end
|
Instance Method Details
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
119
120
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 85
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+)?\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
70
71
72
73
74
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 70
def get_section(index)
section = (index)[1]
hash = Digest::MD5.hexdigest(section)
return section, hash
end
|
#to_html(*args) ⇒ Object
64
65
66
67
68
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 64
def to_html(*args)
html = formatter.render(@text)
html = inline_restore_redmine_links(html)
html
end
|
#update_section(index, update, hash = nil) ⇒ Object
76
77
78
79
80
81
82
83
|
# File 'lib/redmine/wiki_formatting/markdown/formatter.rb', line 76
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
|