Class: AbideDevUtils::Markdown
- Inherits:
-
Object
- Object
- AbideDevUtils::Markdown
show all
- Defined in:
- lib/abide_dev_utils/markdown.rb
Overview
Formats text for output in markdown
Instance Method Summary
collapse
Constructor Details
#initialize(file, with_toc: true) ⇒ Markdown
Returns a new instance of Markdown.
9
10
11
12
13
14
15
|
# File 'lib/abide_dev_utils/markdown.rb', line 9
def initialize(file, with_toc: true)
@file = file
@with_toc = with_toc
@toc = ["## Table of Contents\n"]
@body = []
@title = nil
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
33
34
35
36
37
38
39
|
# File 'lib/abide_dev_utils/markdown.rb', line 33
def method_missing(name, *args, &block)
if name.to_s.start_with?('add_')
add(name.to_s.sub('add_', '').to_sym, *args, &block)
else
super
end
end
|
Instance Method Details
#anchor(text) ⇒ Object
94
95
96
|
# File 'lib/abide_dev_utils/markdown.rb', line 94
def anchor(text)
"##{text.downcase.gsub(%r{\s|_}, '-').tr('.,\'"()', '')}"
end
|
#bold(text) ⇒ Object
73
74
75
|
# File 'lib/abide_dev_utils/markdown.rb', line 73
def bold(text)
"**#{text}**"
end
|
#code(text) ⇒ Object
86
87
88
|
# File 'lib/abide_dev_utils/markdown.rb', line 86
def code(text)
"\`#{text}\`"
end
|
#code_block(text, language: nil) ⇒ Object
90
91
92
|
# File 'lib/abide_dev_utils/markdown.rb', line 90
def code_block(text, language: nil)
language.nil? ? "```\n#{text}\n```" : "```#{language}\n#{text}\n```"
end
|
#h1(text) ⇒ Object
49
50
51
|
# File 'lib/abide_dev_utils/markdown.rb', line 49
def h1(text)
"## #{text}\n"
end
|
#h2(text) ⇒ Object
53
54
55
|
# File 'lib/abide_dev_utils/markdown.rb', line 53
def h2(text)
"### #{text}\n"
end
|
#h3(text) ⇒ Object
57
58
59
|
# File 'lib/abide_dev_utils/markdown.rb', line 57
def h3(text)
"#### #{text}\n"
end
|
#italic(text) ⇒ Object
77
78
79
|
# File 'lib/abide_dev_utils/markdown.rb', line 77
def italic(text)
"*#{text}*"
end
|
#link(text, url, anchor: false) ⇒ Object
81
82
83
84
|
# File 'lib/abide_dev_utils/markdown.rb', line 81
def link(text, url, anchor: false)
url = anchor(url) if anchor
"[#{text}](#{url.downcase})"
end
|
#paragraph(text) ⇒ Object
61
62
63
|
# File 'lib/abide_dev_utils/markdown.rb', line 61
def paragraph(text)
"#{text}\n"
end
|
#respond_to_missing?(name, include_private = false) ⇒ Boolean
41
42
43
|
# File 'lib/abide_dev_utils/markdown.rb', line 41
def respond_to_missing?(name, include_private = false)
name.to_s.start_with?('add_') || super
end
|
#title(text) ⇒ Object
45
46
47
|
# File 'lib/abide_dev_utils/markdown.rb', line 45
def title(text)
"# #{text}\n"
end
|
#to_file ⇒ Object
24
25
26
27
28
29
30
31
|
# File 'lib/abide_dev_utils/markdown.rb', line 24
def to_file
this_markdown = to_markdown
Tempfile.create('markdown') do |f|
f.write(this_markdown)
check_file_content(f.path, this_markdown)
FileUtils.mv(f.path, @file)
end
end
|
#to_markdown ⇒ Object
Also known as:
to_s
17
18
19
20
21
|
# File 'lib/abide_dev_utils/markdown.rb', line 17
def to_markdown
toc = @toc.join("\n")
body = @body.join("\n")
"#{@title}\n#{toc}\n\n#{body}".encode(universal_newline: true)
end
|
#ul(text, indent: 0) ⇒ Object
65
66
67
68
69
70
71
|
# File 'lib/abide_dev_utils/markdown.rb', line 65
def ul(text, indent: 0)
indented_text = []
indent.times { indented_text << ' ' } if indent.positive?
indented_text << "* #{text}"
indented_text.join
end
|