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

#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_column_chap, #inline_hd, #inline_href, #inline_imgref, #inline_include, #inline_kw, #inline_list, #inline_raw, #inline_ruby, #inline_table, #inline_tcy, #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



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

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

#cmd(lines) ⇒ Object



199
200
201
202
203
204
205
# File 'lib/review/markdownbuilder.rb', line 199

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

#compile_href(url, label) ⇒ Object



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

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

#dd(lines) ⇒ Object



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

def dd(lines)
  puts "<dd>#{lines.join}</dd>"
end

#dl_beginObject



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

def dl_begin
  puts '<dl>'
end

#dl_endObject



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

def dl_end
  puts '</dl>'
end

#dt(line) ⇒ Object



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

def dt(line)
  puts "<dt>#{line}</dt>"
end

#emlist(lines, caption = nil, lang = nil) ⇒ Object



119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/review/markdownbuilder.rb', line 119

def emlist(lines, caption = nil, lang = nil)
  blank
  if caption
    puts caption
    print "\n"
  end
  lang ||= ""
  puts "```#{lang}"
  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



277
278
279
280
# File 'lib/review/markdownbuilder.rb', line 277

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

#headline(level, label, caption) ⇒ Object



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

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

#hrObject



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

def hr
  puts "----"
end

#image_dummy(id, caption, lines) ⇒ Object



174
175
176
# File 'lib/review/markdownbuilder.rb', line 174

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

#image_extObject



195
196
197
# File 'lib/review/markdownbuilder.rb', line 195

def image_ext
  "jpg"
end

#image_image(id, caption, metric) ⇒ Object



168
169
170
171
172
# File 'lib/review/markdownbuilder.rb', line 168

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



185
186
187
188
189
# File 'lib/review/markdownbuilder.rb', line 185

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

#inline_b(str) ⇒ Object



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

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

#inline_br(str) ⇒ Object



286
287
288
# File 'lib/review/markdownbuilder.rb', line 286

def inline_br(str)
  "\n"
end

#inline_code(str) ⇒ Object



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

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

#inline_em(str) ⇒ Object



147
148
149
# File 'lib/review/markdownbuilder.rb', line 147

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

#inline_fn(id) ⇒ Object



282
283
284
# File 'lib/review/markdownbuilder.rb', line 282

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

#inline_i(str) ⇒ Object



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

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

#inline_img(id) ⇒ Object



178
179
180
181
182
183
# File 'lib/review/markdownbuilder.rb', line 178

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



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

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

#inline_tt(str) ⇒ Object



163
164
165
# File 'lib/review/markdownbuilder.rb', line 163

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

#list_body(id, lines, lang) ⇒ Object



63
64
65
66
67
68
# File 'lib/review/markdownbuilder.rb', line 63

def list_body(id, lines, lang)
  lines.each do |line|
    puts detab(line)
  end
  puts '```'
end

#list_header(id, caption, lang) ⇒ Object



53
54
55
56
57
58
59
60
61
# File 'lib/review/markdownbuilder.rb', line 53

def list_header(id, caption, lang)
  if get_chap.nil?
    print %Q[リスト#{@chapter.list(id).number} #{compile_inline(caption)}\n\n]
  else
    print %Q[リスト#{get_chap}.#{@chapter.list(id).number} #{compile_inline(caption)}\n\n]
  end
  lang ||= ""
  puts "```#{lang}"
end

#nofunc_text(str) ⇒ Object



290
291
292
# File 'lib/review/markdownbuilder.rb', line 290

def nofunc_text(str)
  str
end

#ol_beginObject



91
92
93
# File 'lib/review/markdownbuilder.rb', line 91

def ol_begin
  blank
end

#ol_endObject



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

def ol_end
  blank
end

#ol_item(lines, num) ⇒ Object



95
96
97
# File 'lib/review/markdownbuilder.rb', line 95

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

#pagebreakObject



191
192
193
# File 'lib/review/markdownbuilder.rb', line 191

def pagebreak
  puts "{pagebreak}"
end

#paragraph(lines) ⇒ Object



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

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

#puts(str) ⇒ Object



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

def puts(str)
  @blank_seen = false
  super
end

#quote(lines) ⇒ Object



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

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

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



207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
# File 'lib/review/markdownbuilder.rb', line 207

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



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

def table_begin(ncols)
end

#table_border(ncols) ⇒ Object



261
262
263
# File 'lib/review/markdownbuilder.rb', line 261

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

#table_endObject



273
274
275
# File 'lib/review/markdownbuilder.rb', line 273

def table_end
  blank
end

#table_header(id, caption) ⇒ Object



245
246
247
248
249
250
251
252
# File 'lib/review/markdownbuilder.rb', line 245

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



269
270
271
# File 'lib/review/markdownbuilder.rb', line 269

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

#th(str) ⇒ Object



265
266
267
# File 'lib/review/markdownbuilder.rb', line 265

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

#tr(rows) ⇒ Object



257
258
259
# File 'lib/review/markdownbuilder.rb', line 257

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

#ul_beginObject



70
71
72
73
# File 'lib/review/markdownbuilder.rb', line 70

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

#ul_endObject



86
87
88
89
# File 'lib/review/markdownbuilder.rb', line 86

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

#ul_item(lines) ⇒ Object



75
76
77
# File 'lib/review/markdownbuilder.rb', line 75

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

#ul_item_begin(lines) ⇒ Object



79
80
81
# File 'lib/review/markdownbuilder.rb', line 79

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

#ul_item_endObject



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

def ul_item_end
end