Class: ReVIEW::MARKDOWNBuilder

Inherits:
Builder show all
Includes:
TextUtils
Defined in:
lib/review/markdownbuilder.rb

Constant Summary

Constants inherited from Builder

Builder::CAPTION_TITLES

Instance Method Summary collapse

Methods included from TextUtils

#convert_inencoding, #convert_outencoding, #detab, #split_paragraph

Methods inherited from Builder

#bibpaper, #bind, #captionblock, #compile_inline, #detab, #error, #extract_chapter_id, #get_chap, #graph, #handle_metric, #image, #include, #initialize, #inline_bou, #inline_chap, #inline_chapref, #inline_column, #inline_hd, #inline_href, #inline_include, #inline_kw, #inline_list, #inline_raw, #inline_ruby, #inline_table, #inline_title, #list, #listnum, #parse_metric, #post_paragraph, #pre_paragraph, #print, #raw, #result, #result_metric, #source, #target_name, #text, #warn

Constructor Details

This class inherits a constructor from ReVIEW::Builder

Instance Method Details

#blankObject



29
30
31
32
# File 'lib/review/markdownbuilder.rb', line 29

def blank
  @output.puts unless @blank_seen
  @blank_seen = true
end

#cmd(lines) ⇒ Object



163
164
165
166
167
168
169
# File 'lib/review/markdownbuilder.rb', line 163

def cmd(lines)
  puts "```"
  lines.each do |line|
    puts detab(line)
  end
  puts "```"
end

#compile_href(url, label) ⇒ Object



102
103
104
105
# File 'lib/review/markdownbuilder.rb', line 102

def compile_href(url, label)
  label = url if label.blank?
  "[#{label}](#{url})"
end

#emlist(lines, caption = nil) ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/review/markdownbuilder.rb', line 85

def emlist(lines, caption = nil)
  blank
  if caption
    puts caption
  end
  puts "```"
  lines.each do |line|
    puts detab(line)
  end
  puts "```"
  blank
end

#extnameObject



14
15
16
# File 'lib/review/markdownbuilder.rb', line 14

def extname
  '.md'
end

#footnote(id, str) ⇒ Object



241
242
243
244
# File 'lib/review/markdownbuilder.rb', line 241

def footnote(id, str)
  puts "[^#{id}]: #{compile_inline(str)}"
  blank
end

#headline(level, label, caption) ⇒ Object



34
35
36
37
38
39
# File 'lib/review/markdownbuilder.rb', line 34

def headline(level, label, caption)
  blank
  prefix = "#" * level
  puts "#{prefix} #{caption}"
  blank
end

#hrObject



98
99
100
# File 'lib/review/markdownbuilder.rb', line 98

def hr
  puts "----"
end

#image_dummy(id, caption, lines) ⇒ Object



138
139
140
# File 'lib/review/markdownbuilder.rb', line 138

def image_dummy(id, caption, lines)
  puts lines.join
end

#image_extObject



159
160
161
# File 'lib/review/markdownbuilder.rb', line 159

def image_ext
  "jpg"
end

#image_image(id, caption, metric) ⇒ Object



132
133
134
135
136
# File 'lib/review/markdownbuilder.rb', line 132

def image_image(id, caption, metric)
  blank
  puts "![#{compile_inline(caption)}](#{@chapter.image(id).path.sub(/\A\.\//, "")})"
  blank
end

#indepimage(id, caption = "", metric = nil) ⇒ Object



149
150
151
152
153
# File 'lib/review/markdownbuilder.rb', line 149

def indepimage(id, caption="", metric=nil)
  blank
  puts "![#{compile_inline(caption)}](#{@chapter.image(id).path.sub(/\A\.\//, "")})"
  blank
end

#inline_b(str) ⇒ Object



115
116
117
# File 'lib/review/markdownbuilder.rb', line 115

def inline_b(str)
  "**#{str.gsub(/\*/, '\*')}**"
end

#inline_br(str) ⇒ Object



250
251
252
# File 'lib/review/markdownbuilder.rb', line 250

def inline_br(str)
  "\n"
end

#inline_code(str) ⇒ Object



123
124
125
# File 'lib/review/markdownbuilder.rb', line 123

def inline_code(str)
  "`#{str}`"
end

#inline_em(str) ⇒ Object



111
112
113
# File 'lib/review/markdownbuilder.rb', line 111

def inline_em(str)
  "*#{str.gsub(/\*/, '\*')}*"
end

#inline_fn(id) ⇒ Object



246
247
248
# File 'lib/review/markdownbuilder.rb', line 246

def inline_fn(id)
  "[^#{id}]"
end

#inline_i(str) ⇒ Object



107
108
109
# File 'lib/review/markdownbuilder.rb', line 107

def inline_i(str)
  "*#{str.gsub(/\*/, '\*')}*"
end

#inline_img(id) ⇒ Object



142
143
144
145
146
147
# File 'lib/review/markdownbuilder.rb', line 142

def inline_img(id)
  "#{I18n.t("image")}#{@chapter.image(id).number}"
rescue KeyError
  error "unknown image: #{id}"
  nofunc_text("[UnknownImage:#{id}]")
end

#inline_strong(str) ⇒ Object



119
120
121
# File 'lib/review/markdownbuilder.rb', line 119

def inline_strong(str)
  "**#{str.gsub(/\*/, '\*')}**"
end

#inline_tt(str) ⇒ Object



127
128
129
# File 'lib/review/markdownbuilder.rb', line 127

def inline_tt(str)
  "`#{str}`"
end

#nofunc_text(str) ⇒ Object



254
255
256
# File 'lib/review/markdownbuilder.rb', line 254

def nofunc_text(str)
  str
end

#ol_beginObject



73
74
75
# File 'lib/review/markdownbuilder.rb', line 73

def ol_begin
  blank
end

#ol_endObject



81
82
83
# File 'lib/review/markdownbuilder.rb', line 81

def ol_end
  blank
end

#ol_item(lines, num) ⇒ Object



77
78
79
# File 'lib/review/markdownbuilder.rb', line 77

def ol_item(lines, num)
  puts "#{num}. #{lines.join}"
end

#pagebreakObject



155
156
157
# File 'lib/review/markdownbuilder.rb', line 155

def pagebreak
  puts "{pagebreak}"
end

#paragraph(lines) ⇒ Object



47
48
49
50
# File 'lib/review/markdownbuilder.rb', line 47

def paragraph(lines)
  puts lines.join
  puts "\n"
end

#puts(str) ⇒ Object



24
25
26
27
# File 'lib/review/markdownbuilder.rb', line 24

def puts(str)
  @blank_seen = false
  super
end

#quote(lines) ⇒ Object



41
42
43
44
45
# File 'lib/review/markdownbuilder.rb', line 41

def quote(lines)
  blank
  puts split_paragraph(lines).map{|line| "> #{line}"}.join("\n> \n")
  blank
end

#table(lines, id = nil, caption = nil) ⇒ Object



171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# File 'lib/review/markdownbuilder.rb', line 171

def table(lines, id = nil, caption = nil)
  rows = []
  sepidx = nil
  lines.each_with_index do |line, idx|
    if /\A[\=\-]{12}/ =~ line
      # just ignore
      #error "too many table separator" if sepidx
      sepidx ||= idx
      next
    end
    rows.push line.strip.split(/\t+/).map {|s| s.sub(/\A\./, '') }
  end
  rows = adjust_n_cols(rows)

  begin
    table_header id, caption unless caption.nil?
  rescue KeyError
    error "no such table: #{id}"
  end
  table_begin rows.first.size
  return if rows.empty?
  if sepidx
    sepidx.times do
      tr rows.shift.map {|s| th(s) }
    end
    table_border rows.first.size
    rows.each do |cols|
      tr cols.map {|s| td(s) }
    end
  else
    rows.each do |cols|
      h, *cs = *cols
      tr [th(h)] + cs.map {|s| td(s) }
    end
  end
  table_end
end

#table_begin(ncols) ⇒ Object



218
219
# File 'lib/review/markdownbuilder.rb', line 218

def table_begin(ncols)
end

#table_border(ncols) ⇒ Object



225
226
227
# File 'lib/review/markdownbuilder.rb', line 225

def table_border(ncols)
  puts (0..ncols).map{"|"}.join(":--")
end

#table_endObject



237
238
239
# File 'lib/review/markdownbuilder.rb', line 237

def table_end
  blank
end

#table_header(id, caption) ⇒ Object



209
210
211
212
213
214
215
216
# File 'lib/review/markdownbuilder.rb', line 209

def table_header(id, caption)
  if get_chap.nil?
    puts %Q[#{I18n.t("table")}#{I18n.t("format_number_header_without_chapter", [@chapter.table(id).number])}#{I18n.t("caption_prefix")}#{compile_inline(caption)}]
  else
    puts %Q[#{I18n.t("table")}#{I18n.t("format_number_header", [get_chap, @chapter.table(id).number])}#{I18n.t("caption_prefix")}#{compile_inline(caption)}]
  end
  blank
end

#td(str) ⇒ Object



233
234
235
# File 'lib/review/markdownbuilder.rb', line 233

def td(str)
  "#{str}"
end

#th(str) ⇒ Object



229
230
231
# File 'lib/review/markdownbuilder.rb', line 229

def th(str)
  "#{str}"
end

#tr(rows) ⇒ Object



221
222
223
# File 'lib/review/markdownbuilder.rb', line 221

def tr(rows)
  puts "|#{rows.join("|")}|"
end

#ul_beginObject



52
53
54
55
# File 'lib/review/markdownbuilder.rb', line 52

def ul_begin
  blank if @ul_indent == 0
  @ul_indent += 1
end

#ul_endObject



68
69
70
71
# File 'lib/review/markdownbuilder.rb', line 68

def ul_end
  @ul_indent -= 1
  blank if @ul_indent == 0
end

#ul_item(lines) ⇒ Object



57
58
59
# File 'lib/review/markdownbuilder.rb', line 57

def ul_item(lines)
  puts "  " * (@ul_indent - 1) + "* " + "#{lines.join}"
end

#ul_item_begin(lines) ⇒ Object



61
62
63
# File 'lib/review/markdownbuilder.rb', line 61

def ul_item_begin(lines)
  puts "  " * (@ul_indent - 1) + "* " + "#{lines.join}"
end

#ul_item_endObject



65
66
# File 'lib/review/markdownbuilder.rb', line 65

def ul_item_end
end