mark_maker 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 66fe5512a41c6c304d4156591bec7a359a3a34e3
4
- data.tar.gz: 3a13cb0564c0331161658693bc0c4a3ec89eb810
3
+ metadata.gz: 6da9b6765231882d2ded111aae9340b1b776a649
4
+ data.tar.gz: 3af219a0ebd74752af6694b61dc0467b081cbaef
5
5
  SHA512:
6
- metadata.gz: e1bd86c66b71d0cd3b232ea17d9dda5d39207fd64519dfac3878f119d63d9752e8141d2b98369898c5bb57377dc3bd523a9851552638d62d6629dbad05637756
7
- data.tar.gz: 074857f7001aad4fb85e73f5a3aa5bf6a069bfdcc4aeaac0b5ee6617e0a541cd966847bb130d9664774ef91ebec64b2709354d3a36dee74bd62653683f2d5c03
6
+ metadata.gz: 7e291fa3de2f051516db8e72157c95236bc2b5892fcffaab4f29c503a103323896aa60bf155596b47c2052d239c12e39131b638d2734fc8b087425c6f16a3748
7
+ data.tar.gz: 6a3dfc905d93c90da048c84e19edaf9e1d4614f075c78410558588584bc80412ae607bd423bc38a0b7a5362b8d7cbc564db58428bd1703b710bb8887970376a3
data/README.md CHANGED
@@ -3,6 +3,35 @@ MarkMaker
3
3
 
4
4
  Programatically generate markdown documents.
5
5
 
6
+ Intended Use
7
+ ------------
8
+
9
+ The mark_maker gem provides a set of methods that take text content and
10
+ convert it to various markdown elements. The primary use case is simple
11
+ conversion of something like a JSON document into a markdown document.
12
+
13
+ The initial development goal is to provide
14
+ support for all of the markdown supported operations, at least in their basic form. What
15
+ I mean by basic is that you provide a 'chunk' of content and the mark_maker `Generator`
16
+ will return that content in the corresponding markdown format. For grouped content, variable
17
+ parameters will be provided on the method call to allow for things like correctly numbered
18
+ bullet lists. Each call to the generator is treated as a separate
19
+ markdown operation. So things like link definitions aren't going to be supported,
20
+ at least not in 1.0
21
+
22
+ Speaking of versioning, I'll use semantic versioning to indicate when new markdown
23
+ capabilities are added. I'll release 1.0 when I feel like it supports set
24
+ of markdown capabilites that fulfill the intended use. This will also include some
25
+ extended capabilities from expanded syntaxes like GitHub flavored markdown. Methods
26
+ generating non-core markdown will be noted in the documentation for that method.
27
+
28
+ If all goes well, and it appears anyone is using this gem, then a 2.0 release is
29
+ envisioned that will add a `Document` class that will provide a
30
+ more holistic layer of capabilities. For example, the aformentioned reference style
31
+ links would be nice. As would the ability to have an arbitrarily long string broken
32
+ down into nicely formatted hard break paragraphs. Same goes for nicely indented multi-line
33
+ bullets, etc.
34
+
6
35
  Installation
7
36
  ------------
8
37
 
@@ -59,7 +88,7 @@ Produces
59
88
 
60
89
  ### Code Examples
61
90
 
62
- Standard markdown code blocks and embedding are supported, as well as github
91
+ Standard markdown code blocks and `code span` are supported, as well as github
63
92
  flavored markdown fenced code blocks.
64
93
 
65
94
  some_code = [ "# add it up",
@@ -148,6 +177,31 @@ Which gives you this stunning HTML table ...
148
177
  |Third|C|$1,034.50|
149
178
 
150
179
 
180
+ ### Block Quotes Example
181
+
182
+ ```
183
+ content = <<-QUOTE
184
+ If you want to quote, you'll get a quote.
185
+ Warning, it will just quote line by line, not break it up nicely.
186
+ QUOTE
187
+ puts gen.block_quote(*content.split("
188
+ "))
189
+ ```
190
+
191
+ Produces the markdown ...
192
+
193
+ ```
194
+ > If you want to quote, you'll get a quote.
195
+ > Warning, it will just quote line by line, not break it up nicely.
196
+ ```
197
+
198
+
199
+ Which looks like this when viewed as HTML...
200
+
201
+ > If you want to quote, you'll get a quote.
202
+ > Warning, it will just quote line by line, not break it up nicely.
203
+
204
+
151
205
  Contributing
152
206
  ------------
153
207
 
@@ -29,6 +29,34 @@ puts gen.header1("MarkMaker")
29
29
  puts ""
30
30
  puts "Programatically generate markdown documents."
31
31
  puts ""
32
+ puts gen.header2("Intended Use")
33
+ puts ""
34
+ puts "The mark_maker gem provides a set of methods that take text content and"
35
+ puts "convert it to various markdown elements. The primary use case is simple"
36
+ puts "conversion of something like a JSON document into a markdown document."
37
+ puts ""
38
+ puts "The initial development goal is to provide"
39
+ puts "support for all of the markdown supported operations, at least in their basic form. What"
40
+ puts "I mean by basic is that you provide a 'chunk' of content and the mark_maker #{ gen.code_span('Generator') }"
41
+ puts "will return that content in the corresponding markdown format. For grouped content, variable"
42
+ puts "parameters will be provided on the method call to allow for things like correctly numbered"
43
+ puts "bullet lists. Each call to the generator is treated as a separate"
44
+ puts "markdown operation. So things like link definitions aren't going to be supported,"
45
+ puts "at least not in 1.0"
46
+ puts ""
47
+ puts "Speaking of versioning, I'll use semantic versioning to indicate when new markdown"
48
+ puts "capabilities are added. I'll release 1.0 when I feel like it supports set"
49
+ puts "of markdown capabilites that fulfill the intended use. This will also include some"
50
+ puts "extended capabilities from expanded syntaxes like GitHub flavored markdown. Methods"
51
+ puts "generating non-core markdown will be noted in the documentation for that method."
52
+ puts ""
53
+ puts "If all goes well, and it appears anyone is using this gem, then a 2.0 release is"
54
+ puts "envisioned that will add a #{ gen.code_span('Document') } class that will provide a"
55
+ puts "more holistic layer of capabilities. For example, the aformentioned reference style"
56
+ puts "links would be nice. As would the ability to have an arbitrarily long string broken"
57
+ puts "down into nicely formatted hard break paragraphs. Same goes for nicely indented multi-line"
58
+ puts "bullets, etc."
59
+ puts ""
32
60
  puts gen.header2("Installation")
33
61
  puts ""
34
62
  puts "Add this line to your application's Gemfile:"
@@ -77,7 +105,7 @@ puts gen.code_block(*eval(numbered_code))
77
105
  puts ""
78
106
  puts gen.header3("Code Examples")
79
107
  puts ""
80
- puts "Standard markdown code blocks and embedding are supported, as well as github"
108
+ puts "Standard markdown code blocks and #{gen.code_span('code span')} are supported, as well as github"
81
109
  puts "flavored markdown fenced code blocks."
82
110
  puts ""
83
111
  sample_block = <<-EOT.split("\n")
@@ -139,6 +167,29 @@ puts "Which gives you this stunning HTML table ..."
139
167
  puts ""
140
168
  puts eval(table_code)
141
169
  puts ""
170
+ puts gen.header3("Block Quotes Example")
171
+ puts ""
172
+ block_quote_code = <<-EOT
173
+ content = <<-QUOTE
174
+ If you want to quote, you'll get a quote.
175
+ Warning, it will just quote line by line, not break it up nicely.
176
+ QUOTE
177
+ puts gen.block_quote(*content.split("\n"))
178
+ EOT
179
+ puts gen.fenced_code_block(*block_quote_code.split("\n"))
180
+ puts ""
181
+ puts "Produces the markdown ..."
182
+ puts ""
183
+ block_quote_markdown = capture_stdout do
184
+ eval(block_quote_code)
185
+ end
186
+ puts gen.fenced_code_block(*block_quote_markdown.string.split("\n"))
187
+ puts ""
188
+ puts ""
189
+ puts "Which looks like this when viewed as HTML..."
190
+ puts ""
191
+ puts eval(block_quote_code)
192
+ puts ""
142
193
  puts gen.header2("Contributing")
143
194
  puts ""
144
195
  puts gen.numbers(gen.link("Fork it", "https://github.com/sn1de/mark_maker/fork"),
@@ -43,6 +43,10 @@ module MarkMaker
43
43
  " #{content}"
44
44
  end
45
45
 
46
+ def code_span(content)
47
+ "#{CODE_TIC}#{content}#{CODE_TIC}"
48
+ end
49
+
46
50
  def code_block(*content)
47
51
  content.map { |c| code(c) }
48
52
  end
@@ -80,5 +84,9 @@ module MarkMaker
80
84
  def table_row(*content)
81
85
  content.inject("|") { |a, e| a << e << "|" }
82
86
  end
87
+
88
+ def block_quote(*content)
89
+ content.map { |c| "#{BLOCK_QUOTE} #{c}"}
90
+ end
83
91
  end
84
92
  end
@@ -1,4 +1,4 @@
1
1
  # version management
2
2
  module MarkMaker
3
- VERSION = "0.3.0"
3
+ VERSION = "0.4.0"
4
4
  end
data/lib/mark_maker.rb CHANGED
@@ -14,6 +14,8 @@ end
14
14
  # format and generating markdown documents from that source in
15
15
  # a line by line method.
16
16
  module MarkMaker
17
- FENCE = "```"
17
+ CODE_TIC = "`"
18
+ FENCE = CODE_TIC * 3
18
19
  EMPHASIS = "*"
20
+ BLOCK_QUOTE = ">"
19
21
  end
@@ -78,6 +78,12 @@ class TestMarkMaker < Minitest::Test
78
78
  assert_match(/\s{4}var = code\(\)$/, markup)
79
79
  end
80
80
 
81
+ def test_code_span_generation
82
+ gen = MarkMaker::Generator.new
83
+ markup = "Some #{gen.code_span('a = b + c')} here."
84
+ assert_match(/^Some #{MarkMaker::CODE_TIC}a = b \+ c#{MarkMaker::CODE_TIC} here.$/, markup)
85
+ end
86
+
81
87
  def test_code_block_generation
82
88
  content = ["a = 1", "b = 2", "c = 3"]
83
89
  gen = MarkMaker::Generator.new
@@ -137,5 +143,14 @@ class TestMarkMaker < Minitest::Test
137
143
  row = gen.table_row(*content)
138
144
  assert_match(/^\|#{Regexp.quote(content[0])}\|#{Regexp.quote(content[1])}\|#{Regexp.quote(content[2])}\|$/, row)
139
145
  end
146
+
147
+ def test_block_quote_generation
148
+ content = ["Line 1", "Line 2", "Line 3"]
149
+ gen = MarkMaker::Generator.new
150
+ markup = gen.block_quote(*content)
151
+ content.zip(markup).each do |c, m|
152
+ assert_match(/^> #{Regexp.quote(c)}$/, m)
153
+ end
154
+ end
140
155
  end
141
156
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mark_maker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brad Schneider
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-31 00:00:00.000000000 Z
11
+ date: 2015-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler