mark_maker 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 69e37903d222999dbd87778a55fb41e841054995
4
- data.tar.gz: 5899b79c8427151ed0bb4979546d679a8191e1dc
3
+ metadata.gz: 1ec41b346051f4ed6f008e0a86402a5174edcb1c
4
+ data.tar.gz: 0831f0feeebeaea95093c34096f573f300dbfd0e
5
5
  SHA512:
6
- metadata.gz: 560761348ac0f5da4fd4442f070eb57ceed38906b5911a35aaa016c85a572d7abcfbfbefa47bc64ec9fb903b6f7d924916941c1ad498f7c4ad13d90b1db91d1f
7
- data.tar.gz: aff10b5f78ba18af4f401506445027bbab02ab3c704ad5096a417c32488c959ffa679b93d98bf5f440170873d61f22275d3ab479492c3b71f87eb65e2f1c375e
6
+ metadata.gz: 76a8c2ded0d68a56c51b0ffd4aa766b4bad4c617fcbe52f2e01ff13baab17eed6edc78566ef1e2ceecbef71bf0aaa530dce7f2cff1ae73ab5e422a109e34a7a5
7
+ data.tar.gz: 727d53292772a0a0ad187480b744965d44117b6e1072136df0b4006f97e76f74c28c9a219ac29844143c429f13ef047a8317170ad6a8e17ea1289c5a12bd24dc
data/README.md CHANGED
@@ -42,17 +42,82 @@ Produces
42
42
 
43
43
  Produces
44
44
 
45
- - gold
46
- - silver
47
- - bronze
45
+ - gold
46
+ - silver
47
+ - bronze
48
48
 
49
49
  Or a numbered list with...
50
50
 
51
51
  gen.numbers(*list_content)
52
52
 
53
- 1. gold
54
- 2. silver
55
- 3. bronze
53
+ Produces
54
+
55
+ 1. gold
56
+ 2. silver
57
+ 3. bronze
58
+
59
+ ### Code Examples
60
+
61
+ Standard markdown code blocks and embedding are supported, as well as github
62
+ flavored markdown fenced code blocks.
63
+
64
+ some_code = [ "# add it up",
65
+ "total = [1, 2, 3, 4].inject do |sum, i|",
66
+ " sum += i",
67
+ "end",
68
+ "",
69
+ "puts total" ]
70
+ gen.code_block(*some_code)
71
+
72
+ Produces
73
+
74
+ # add it up
75
+ total = [1, 2, 3, 4].inject do |sum, i|
76
+ sum += i
77
+ end
78
+
79
+ puts total
80
+
81
+ You can also generate a github flavored markdown fenced code version.
82
+
83
+ gen.fenced_code_block(*some_code)
84
+
85
+ Produces
86
+
87
+ ```
88
+ # add it up
89
+ total = [1, 2, 3, 4].inject do |sum, i|
90
+ sum += i
91
+ end
92
+
93
+ puts total
94
+ ```
95
+
96
+ You can also include a language in a fenced code block.
97
+
98
+ gen.fenced_code_language('ruby', *some_code)
99
+
100
+ Produces
101
+
102
+ ```ruby
103
+ # add it up
104
+ total = [1, 2, 3, 4].inject do |sum, i|
105
+ sum += i
106
+ end
107
+
108
+ puts total
109
+ ```
110
+
111
+ Rendering beautifully highlighted code like so, if you are viewing this on github.
112
+
113
+ ```ruby
114
+ # add it up
115
+ total = [1, 2, 3, 4].inject do |sum, i|
116
+ sum += i
117
+ end
118
+
119
+ puts total
120
+ ```
56
121
 
57
122
  Contributing
58
123
  ------------
@@ -24,13 +24,7 @@ doc << gen.header2("Installation")
24
24
  doc << ""
25
25
  doc << "Add this line to your application's Gemfile:"
26
26
  doc << ""
27
-
28
- # ```ruby
29
-
30
27
  doc << gen.code("gem 'mark_maker'")
31
-
32
- # ```
33
-
34
28
  doc << ""
35
29
  doc << "And then execute:"
36
30
  doc << ""
@@ -60,14 +54,57 @@ doc << ""
60
54
  doc << gen.code("list_content = ['gold', 'silver', 'bronze']")
61
55
  doc << gen.code("gen.bullets(*list_content)")
62
56
  doc << "\nProduces\n\n"
63
- doc << gen.bullets(*list_content)
57
+ doc << gen.code_block(*gen.bullets(*list_content))
64
58
  doc << ""
65
59
  doc << "Or a numbered list with..."
66
60
  doc << ""
67
61
  numbered_code = "gen.numbers(*list_content)"
68
62
  doc << gen.code(numbered_code)
69
63
  doc << ""
70
- doc << eval(numbered_code)
64
+ doc << "Produces"
65
+ doc << ""
66
+ doc << gen.code_block(*eval(numbered_code))
67
+ doc << ""
68
+ doc << gen.header3("Code Examples")
69
+ doc << ""
70
+ doc << "Standard markdown code blocks and embedding are supported, as well as github"
71
+ doc << "flavored markdown fenced code blocks."
72
+ doc << ""
73
+ sample_block = <<-EOT.split("\n")
74
+ some_code = [ "# add it up",
75
+ "total = [1, 2, 3, 4].inject do |sum, i|",
76
+ " sum += i",
77
+ "end",
78
+ "",
79
+ "puts total" ]
80
+ EOT
81
+ execution_block = "gen.code_block(*some_code)"
82
+ doc << gen.code_block(*sample_block, execution_block)
83
+ doc << ""
84
+ doc << "Produces\n\n"
85
+ doc << gen.code_block(*gen.code_block(*eval(sample_block.join)))
86
+ doc << ""
87
+ doc << "You can also generate a github flavored markdown fenced code version."
88
+ fenced_code = "gen.fenced_code_block(*some_code)"
89
+ doc << ""
90
+ doc << gen.code(fenced_code)
91
+ doc << ""
92
+ doc << "Produces"
93
+ doc << ""
94
+ doc << gen.code_block(*eval("#{sample_block.join}\n#{fenced_code}\n"))
95
+ doc << ""
96
+ doc << "You can also include a language in a fenced code block."
97
+ doc << ""
98
+ fenced_code_language = "gen.fenced_code_language('ruby', *some_code)"
99
+ doc << gen.code(fenced_code_language)
100
+ doc << ""
101
+ doc << "Produces"
102
+ doc << ""
103
+ doc << gen.code_block(*eval("#{sample_block.join}\n#{fenced_code_language}"))
104
+ doc << ""
105
+ doc << "Rendering beautifully highlighted code like so, if you are viewing this on github."
106
+ doc << ""
107
+ doc << eval("#{sample_block.join}\n#{fenced_code_language}")
71
108
  doc << ""
72
109
  doc << gen.header2("Contributing")
73
110
  doc << ""
@@ -46,5 +46,29 @@ module MarkMaker
46
46
  def code(content)
47
47
  " #{content}"
48
48
  end
49
+
50
+ def code_block(*content)
51
+ block = []
52
+ content.each { |c| block << code(c) }
53
+ block
54
+ end
55
+
56
+ # creates a github flavored markdown fenced code block
57
+ def fenced_code_block(*content)
58
+ block = []
59
+ block << MarkMaker::FENCE
60
+ content.each { |c| block << c }
61
+ block << MarkMaker::FENCE
62
+ block
63
+ end
64
+
65
+ # creates a github flavored markdown fenced code block that
66
+ # specifies the language for syntax highlighting purposes
67
+ def fenced_code_language(lang, *content)
68
+ block = []
69
+ block << MarkMaker::FENCE + lang
70
+ content.each { |c| block << c }
71
+ block << MarkMaker::FENCE
72
+ end
49
73
  end
50
74
  end
@@ -1,3 +1,3 @@
1
1
  module MarkMaker
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/mark_maker.rb CHANGED
@@ -12,4 +12,5 @@ end
12
12
  # format and generating markdown documents from that source in
13
13
  # a line by line method.
14
14
  module MarkMaker
15
+ FENCE = "```"
15
16
  end
@@ -77,4 +77,35 @@ class TestMarkMaker < Minitest::Test
77
77
  markup = gen.code(content)
78
78
  assert_match(/\s{4}var = code\(\)$/, markup)
79
79
  end
80
+
81
+ def test_code_block_generation
82
+ content = ["a = 1", "b = 2", "c = 3"]
83
+ gen = MarkMaker::Generator.new
84
+ markup = gen.code_block(*content)
85
+ assert(markup.length == content.length, "The number of lines of content and markup is not equal.")
86
+ content.zip(markup).each do |c, m|
87
+ assert_match(/^\s{4}#{c}$/, m)
88
+ end
89
+ end
90
+
91
+ def test_fenced_code_block_generation
92
+ content = ["a = 1", "b = 2", "c = 3"]
93
+ gen = MarkMaker::Generator.new
94
+ markup = gen.fenced_code_block(*content)
95
+ assert(markup.length == content.length + 2, "Length of markup should equal the content plus the two fences.")
96
+ assert(markup.slice(1, content.length) == content, "The code body of the markup should match the original content exactly.")
97
+ assert(markup.first == MarkMaker::FENCE, "Markup should start with the code fence.")
98
+ assert(markup.last == MarkMaker::FENCE, "Markup should end with the code fence.")
99
+ end
100
+
101
+ def test_fenced_code_language_generation
102
+ content = ["a = 1", "b = 2", "c = 3"]
103
+ lang = "ruby"
104
+ gen = MarkMaker::Generator.new
105
+ markup = gen.fenced_code_language(lang, *content)
106
+ assert(markup.length == content.length + 2, "Length of markup should equal the content plus the two fences.")
107
+ assert(markup.slice(1, content.length) == content, "The code body of the markup should match the original content exactly.")
108
+ assert(markup.first == MarkMaker::FENCE + lang, "Markup should start with the code fence and the language.")
109
+ assert(markup.last == MarkMaker::FENCE, "Markup should end with the code fence.")
110
+ end
80
111
  end
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.0.2
4
+ version: 0.0.3
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-13 00:00:00.000000000 Z
11
+ date: 2015-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler