rubymark 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a1ea8d8ceac3ac32a98c5db56444b536165fe966
4
+ data.tar.gz: 8c1ce72adc239a609165da2948558bbce09b25cb
5
+ SHA512:
6
+ metadata.gz: 5dc6634520c6ea349b7321a1520d6f19e94641a14638873b26abaa286b4a7dda662b5bdd297dd0a9ffaf66edefa7392ca62347955502b973a2a433cfbcefb3ef
7
+ data.tar.gz: 44165e6edc236918fff72e34091f9746b7ead1329a120e6f1bf23b1d31edccd8cc94e85d521bb800d0f47245798501893696c1c257d0b405bb9596b9a287a20d
checksums.yaml.gz.sig ADDED
@@ -0,0 +1 @@
1
+ ��� ]���ܵqet���@'�Y|�[E�ioGc����F�[W�2C�
data.tar.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ e:�zdx���R��� �C��
2
+ �w�x�:�i�%6��G�A?6�_�s�.���JoP<� e���1� �d�&C�9 ]�F��,������j�s`r�y�
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2013 ThoughtWorks, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/bin/rubymark ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ dir = File.join(File.dirname(__FILE__), '..', 'lib')
4
+ $LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir)
5
+
6
+ require 'rubymark'
7
+
8
+ RubyMarkRunner.new.run(ARGV)
data/lib/rubymark.rb ADDED
@@ -0,0 +1,111 @@
1
+ class RubyMark
2
+ def initialize(markdown)
3
+ @markdown = markdown
4
+ end
5
+
6
+ def ordered_lists(markdown)
7
+ markdown
8
+ .gsub(/\n\n(\d*\. .*)/, "\n<ol>\n\\1")
9
+ .gsub(/^(\d*\. .*)\n\n/, "\\1\n</ol>\n")
10
+ .gsub(/^\d*\. (.*)/, "<li>\\1</li>")
11
+ end
12
+
13
+ def unordered_lists(markdown)
14
+ markdown
15
+ .gsub(/\n\n(\* .*)/, "<ul>\n\\1")
16
+ .gsub(/^(\* .*)\n\n/, "\\1\n</ul>\n\n")
17
+ .gsub(/^\* (.*)/, "<li>\\1</li>")
18
+ end
19
+
20
+ def emphasis(markdown)
21
+ markdown
22
+ .gsub(/__(.*)__/, "<strong>\\1</strong>")
23
+ .gsub(/_(.*)_/, "<em>\\1</em>")
24
+ .gsub(/ <em> /, " _ ")
25
+ .gsub(/ <\/em> /, " _ ")
26
+ .gsub(/\\<em>/, "_")
27
+ .gsub(/\\<\/em>/, "_")
28
+ .gsub(/\*\*(.*)\*\*/, "<strong>\\1</strong>")
29
+ .gsub(/\*(.*)\*/, "<em>\\1</em>")
30
+ .gsub(/ <em> /, " * ")
31
+ .gsub(/ <\/em> /, " * ")
32
+ .gsub(/\\<em>/, "*")
33
+ .gsub(/\\<\/em>/, "*")
34
+ end
35
+
36
+ def headings(markdown)
37
+ markdown
38
+ .gsub(/^\#\#\#\#\#\# (.*) \#\#\#\#\#\#/, '<h6>\1</h6>')
39
+ .gsub(/^\#\#\#\#\#\# (.*)/, '<h6>\1</h6>')
40
+ .gsub(/^\#\#\#\#\# (.*) \#\#\#\#\#/, '<h5>\1</h5>')
41
+ .gsub(/^\#\#\#\#\# (.*)/, '<h5>\1</h5>')
42
+ .gsub(/^\#\#\#\# (.*) \#\#\#\#/, '<h4>\1</h4>')
43
+ .gsub(/^\#\#\#\# (.*)/, '<h4>\1</h4>')
44
+ .gsub(/^\#\#\# (.*) \#\#\#/, '<h3>\1</h3>')
45
+ .gsub(/^\#\#\# (.*)/, '<h3>\1</h3>')
46
+ .gsub(/^\#\# (.*) \#\#/, '<h2>\1</h2>')
47
+ .gsub(/^\#\# (.*)/, '<h2>\1</h2>')
48
+ .gsub(/^\# (.*) \#/, '<h1>\1</h1>')
49
+ .gsub(/^\# (.*)/, '<h1>\1</h1>')
50
+ end
51
+
52
+ def paragraphs(markdown)
53
+ markdown
54
+ .gsub(/^\n(.+)\n$/, "\n<p>\\1</p>\n")
55
+ .gsub(/\A(.+)/, "<p>\\1")
56
+ .gsub(/(.+)\Z/, "\\1</p>")
57
+ .gsub(/\n\n/, "</p>\n\n<p>")
58
+ .gsub(/\n\n<p><\/p>\n\n/, "\n\n")
59
+ .gsub(/\A<\/p>/, "")
60
+ .gsub(/<p>\Z/, "")
61
+ .gsub(/<p>(<.*>)/, "\\1")
62
+ .gsub(/(<.*>)<\/p>/, "\\1")
63
+ .gsub(/<p>(<.*>)/, "\\1")
64
+ .gsub(/(<.*>)<\/p>/, "\\1")
65
+ end
66
+
67
+ def links(markdown)
68
+ markdown
69
+ .gsub(/\[(.*)\]\((.*) "(.*)"\)/, "<a href=\"\\2\" title=\"\\3\">\\1</a>")
70
+ .gsub(/\[(.*)\]\((.*)\)/, "<a href=\"\\2\">\\1</a>")
71
+ end
72
+
73
+ def blockquotes(markdown)
74
+ markdown.gsub!(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/) do
75
+ bq = $1
76
+ if bq
77
+ bq.gsub!(/^[ \t]*>[ \t]?/, "") # trim one level of quoting
78
+ bq.gsub!(/^[ \t]+$/, "") # trim whitespace-only lines
79
+ bq.strip!
80
+
81
+ "<blockquote><p>\n#{bq}\n</p></blockquote>\n\n"
82
+ else
83
+ $&
84
+ end
85
+ end
86
+ markdown
87
+ end
88
+
89
+ def to_html
90
+ links(paragraphs(headings(emphasis(unordered_lists(ordered_lists(blockquotes(@markdown)))))))
91
+ end
92
+ end
93
+
94
+ class RubyMarkRunner
95
+ def run args
96
+ unless args[0]
97
+ print_usage
98
+ else
99
+ process_md_file(ARGV[0])
100
+ end
101
+ end
102
+
103
+ def print_usage
104
+ puts "Usage: rubymark file.md # this will send HTML to STDOUT"
105
+ end
106
+
107
+ def process_md_file(md_file_name)
108
+ markdown = File.read(md_file_name)
109
+ puts RubyMark.new(markdown).to_html
110
+ end
111
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Block Quote" do
4
+ it "is between empty lines and start with '> '" do
5
+ expect(RubyMark.new("").blockquotes("\n\n> This is a block quote\n\n")).to match(/^\n\n<blockquote><p>\nThis is a block quote\n<\/p><\/blockquote>\n\n/)
6
+ expect(RubyMark.new("\n\n> This is a block quote\n\n").to_html).to match(/^\n\n<blockquote><p>\nThis is a block quote\n<\/p><\/blockquote>\n\n/)
7
+ end
8
+
9
+ it "can be more than one paragraph long" do
10
+ # expect(RubyMark.new("").blockquotes("\n\n> This is a para in a block quote\nLine 2.\n\n> And this is the second para.\n\n")).to match(/^<blockquote>This is a para in a block quote\nLine 2.<\/blockquote>\n\n<blockquote>And this is the second para.<\/blockquote>/)
11
+ expect(RubyMark.new("\n\n> This is a para in a block quote\nLine 2.\n\n> And this is the second para.\n\n").to_html).to match(/^<blockquote><p>\nThis is a para in a block quote\nLine 2.<\/p>\n\n<p>And this is the second para.\n<\/p><\/blockquote>/)
12
+ end
13
+
14
+ it "can be made of many lines that start with '> '" do
15
+ expect(RubyMark.new("").blockquotes("\n\n> This is a line in a block quote\n> And so is this.\n\n")).to match(/^<blockquote><p>\nThis is a line in a block quote\nAnd so is this.\n<\/p><\/blockquote>/)
16
+ end
17
+
18
+ it "can exist more than once in a document" do
19
+ expect(RubyMark.new("").blockquotes("\n\n> This is a line in a block quote\n> And so is this.\n\nSome other stuff here.\n\n> Another block quote\n\n")).to eq("\n\n<blockquote><p>\nThis is a line in a block quote\nAnd so is this.\n</p></blockquote>\n\nSome other stuff here.\n\n<blockquote><p>\nAnother block quote\n</p></blockquote>\n\n")
20
+ expect(RubyMark.new("\n\n> This is a line in a block quote\n> And so is this.\n\nSome other stuff here.\n\n> Another block quote\n\n").to_html).to match(/^<blockquote><p>\nThis is a line in a block quote\nAnd so is this.\n<\/p><\/blockquote>\n\n<p>Some other stuff here.<\/p>\n\n<blockquote><p>\nAnother block quote\n<\/p><\/blockquote>\n\n/)
21
+ end
22
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Emphasis" do
4
+ it "is between *s" do
5
+ expect(RubyMark.new("*Emphasis*").to_html).to match(/<em>Emphasis<\/em>/)
6
+ end
7
+
8
+ it "is between _s" do
9
+ expect(RubyMark.new("_Emphasis_").to_html).to match(/<em>Emphasis<\/em>/)
10
+ end
11
+
12
+ it "is strong between **s" do
13
+ expect(RubyMark.new("**I am strong!**").to_html).to match(/<strong>I am strong!<\/strong>/)
14
+ end
15
+
16
+ it "is strong between __s" do
17
+ expect(RubyMark.new("__I am strong!__").to_html).to match(/<strong>I am strong!<\/strong>/)
18
+ end
19
+
20
+ it "is not present when a _ is surrounded by spaces" do
21
+ expect(RubyMark.new("This _ underscores _ the point").to_html).to match(/This _ underscores _ the point/)
22
+ end
23
+
24
+ it "is not present when a * is surrounded by spaces" do
25
+ expect(RubyMark.new("This * stars * the point").to_html).to match(/This \* stars \* the point/)
26
+ end
27
+
28
+ it "is not present when a _ is escaped" do
29
+ expect(RubyMark.new("This \\_underscores\\_ the point").to_html).to match(/This _underscores_ the point/)
30
+ end
31
+
32
+ it "is not present when a * is escaped" do
33
+ expect(RubyMark.new("This \\*stars\\* the point").to_html).to match(/This \*stars\* the point/)
34
+ end
35
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+ require 'nokogiri'
3
+ require 'great_expectations'
4
+
5
+ describe "Markdown Document" do
6
+ extend GreatExpectations
7
+
8
+ great_expectations.each do |great, expectation|
9
+ it "#{great} is/are parsed correctly in its entirity" do
10
+ expect(RubyMark.new(expectation[:md]).to_html).to eq(expectation[:html])
11
+ end
12
+ end
13
+ end
14
+
@@ -0,0 +1,163 @@
1
+ require 'spec_helper'
2
+
3
+ module GreatExpectations
4
+ def great_expectations
5
+ return {
6
+ :unordered_list => {
7
+ :md => <<-EOMD,
8
+
9
+
10
+ * Item One
11
+ * Item Two
12
+ * Item Three
13
+
14
+ EOMD
15
+ :html => <<-EOHTML,
16
+ <ul>
17
+ <li>Item One</li>
18
+ <li>Item Two</li>
19
+ <li>Item Three</li>
20
+ </ul>
21
+
22
+ EOHTML
23
+ },
24
+
25
+ :ordered_list => {
26
+ :md => <<-EOMD,
27
+
28
+
29
+ 1. Item One
30
+ 12. Item Two
31
+ 332353. Item Three
32
+
33
+
34
+ EOMD
35
+ :html => <<-EOHTML,
36
+
37
+ <ol>
38
+ <li>Item One</li>
39
+ <li>Item Two</li>
40
+ <li>Item Three</li>
41
+ </ol>
42
+
43
+ EOHTML
44
+ },
45
+
46
+ :headings => {
47
+ :md => <<-EOMD,
48
+
49
+ # Heading One
50
+
51
+ ## Heading Two
52
+
53
+ ## Second Heading Two
54
+
55
+ ### Heading Three
56
+
57
+ #### Heading Four
58
+
59
+ ##### Heading Five
60
+
61
+ ###### Heading Six
62
+
63
+ ## Third Heading Two
64
+
65
+ EOMD
66
+ :html => <<-EOHTML,
67
+
68
+ <h1>Heading One</h1>
69
+
70
+ <h2>Heading Two</h2>
71
+
72
+ <h2>Second Heading Two</h2>
73
+
74
+ <h3>Heading Three</h3>
75
+
76
+ <h4>Heading Four</h4>
77
+
78
+ <h5>Heading Five</h5>
79
+
80
+ <h6>Heading Six</h6>
81
+
82
+ <h2>Third Heading Two</h2>
83
+
84
+ EOHTML
85
+ } ,
86
+
87
+ :headings_and_paragraphs => {
88
+ :md => <<-EOMD,
89
+
90
+ # Heading One
91
+
92
+ This is the introduction
93
+
94
+ ## Heading Two
95
+
96
+ This talks about this section
97
+
98
+ ### Heading Three
99
+
100
+ Here is info about this subsection.
101
+
102
+ And more info.
103
+
104
+ And more.
105
+
106
+ Then some.
107
+
108
+ And some more.
109
+
110
+ EOMD
111
+ :html => <<-EOHTML,
112
+
113
+ <h1>Heading One</h1>
114
+
115
+ <p>This is the introduction</p>
116
+
117
+ <h2>Heading Two</h2>
118
+
119
+ <p>This talks about this section</p>
120
+
121
+ <h3>Heading Three</h3>
122
+
123
+ <p>Here is info about this subsection.</p>
124
+
125
+ <p>And more info.</p>
126
+
127
+ <p>And more.</p>
128
+
129
+ <p>Then some.</p>
130
+
131
+ <p>And some more.</p>
132
+
133
+ EOHTML
134
+ },
135
+
136
+ :embedded_html => {
137
+ :md => <<-EOMD,
138
+
139
+ <section>
140
+
141
+ ## Section Heading
142
+
143
+ Section contents.
144
+
145
+ </section>
146
+
147
+ EOMD
148
+ :html => <<-EOHTML,
149
+
150
+ <section>
151
+
152
+ <h2>Section Heading</h2>
153
+
154
+ <p>Section contents.</p>
155
+
156
+ </section>
157
+
158
+ EOHTML
159
+ }
160
+
161
+ }
162
+ end
163
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Heading" do
4
+ def i_hashes(i)
5
+ "#" * i
6
+ end
7
+
8
+ (1..6).each do |i|
9
+ describe "level #{i}" do
10
+ it "is parsed and rendered correctly when it doesn't end with a hash" do
11
+ expect(RubyMark.new("#{i_hashes(i)} Heading #{i}").to_html).to match("<h#{i}>Heading #{i}</h#{i}>")
12
+ end
13
+
14
+ it "is parsed and rendered correctly when it ends with a hash" do
15
+ expect(RubyMark.new("#{i_hashes(i)} Heading #{i} #{i_hashes(i)}").to_html).to match("<h#{i}>Heading #{i}</h#{i}>")
16
+ end
17
+ end
18
+ end
19
+ end
data/spec/link_spec.rb ADDED
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Link" do
4
+ it "looks like this: [an example](http://example.com/ \"Title\")" do
5
+ expect(RubyMark.new("[an example](http://example.com/ \"Title\")").to_html)
6
+ .to match(/<a href="http:\/\/example.com\/" title="Title">an example<\/a>/)
7
+ end
8
+
9
+ it "could look like this: [an example](http://example.com/)" do
10
+ expect(RubyMark.new("[an example](http://example.com/)").to_html)
11
+ .to match(/<a href="http:\/\/example.com\/">an example<\/a>/)
12
+ end
13
+
14
+ end
data/spec/list_spec.rb ADDED
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Unordered List" do
4
+ it "starts whenever you see a blank line followed by a line starting with *" do
5
+ expect(RubyMark.new("\n\n* List Item").to_html).to match(/^<ul>\n.*List Item.*/)
6
+ end
7
+
8
+ it "has an element whenever a new line starts with a *" do
9
+ expect(RubyMark.new("* List Item").to_html).to eq("<li>List Item</li>")
10
+ end
11
+
12
+ it "ends whenever a line that starts with a * is followed by a blank line" do
13
+ expect(RubyMark.new("* List Item\n\n").to_html).to match(/.*List Item.*\n<\/ul>/)
14
+ end
15
+ end
16
+
17
+ describe "Ordered List" do
18
+ it "starts whenever you see a blank line followed by a line starting with \d." do
19
+ expect(RubyMark.new("\n\n12. List Item").to_html).to match(/^<ol>\n.*List Item.*/)
20
+ end
21
+
22
+ it "has an element whenever a new line starts with a *" do
23
+ expect(RubyMark.new("14. List Item").to_html).to eq("<li>List Item</li>")
24
+ end
25
+
26
+ it "ends whenever a line that starts with a * is followed by a blank line" do
27
+ expect(RubyMark.new("1. List Item\n\n").to_html).to match(/.*List Item.*\n<\/ol>/)
28
+ end
29
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Paragraph" do
4
+ it "starts whenever you see a block of text preceded and succeeded by a blank line" do
5
+ expect(RubyMark.new("\n\nThis is a paragraph.\n\n").to_html).to match(/<p>This is a paragraph.<\/p>/)
6
+ end
7
+
8
+ it "doesn't start if there is already an html tag starting on that line" do
9
+ expect(RubyMark.new("\n\n<div>This is not a paragraph.</div>\n\n").to_html).not_to match(/<p>.*<\/p>/)
10
+ end
11
+
12
+ it "can be followed by other paragraphs" do
13
+ expect(RubyMark.new("\n\nThis is a paragraph.\n\nThis is another paragraph.\n\nAnd another.\n\n").to_html).to match(/<p>This is a paragraph.<\/p>\n\n<p>This is another paragraph.<\/p>\n\n<p>And another.<\/p>/)
14
+ end
15
+
16
+ it "can have multiple lines" do
17
+ expect(RubyMark.new("\n\nThis is a paragraph\nthat has\nmultiple lines.\n\n").to_html).to eq("\n\n<p>This is a paragraph\nthat has\nmultiple lines.</p>\n\n")
18
+ end
19
+ end
@@ -0,0 +1,3 @@
1
+ Dir[File.join("lib/**/*.rb")].each do |f|
2
+ require File.absolute_path(f)
3
+ end
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubymark
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Prasanna Pendse
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDijCCAnKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRAwDgYDVQQDDAdwcGVu
14
+ ZHNlMRwwGgYKCZImiZPyLGQBGRYMdGhvdWdodHdvcmtzMRMwEQYKCZImiZPyLGQB
15
+ GRYDY29tMB4XDTEzMTIyMjE3MzEwOFoXDTE0MTIyMjE3MzEwOFowRTEQMA4GA1UE
16
+ AwwHcHBlbmRzZTEcMBoGCgmSJomT8ixkARkWDHRob3VnaHR3b3JrczETMBEGCgmS
17
+ JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAODQ
18
+ DWG43cy55DoetegQwTfKgfMRaeLETHohp3G4Q+CLtYZADpmR7bOPhUTwbhj2urh4
19
+ jeoxPHERlTpPIcWgUOrW7nrpKw0M5JppuCxVfMdPQ3te94x6/JzyG7M4bDrSXOeJ
20
+ K1mEZeO1LfYfU+ilaTEuc4tzuF1CQHnF0If/S4IQgDkHMagxCJIiBCUy1d6+E4L9
21
+ hIWga7PKWmNANcLsucpJIaG2/Hz5fAcFmX9DWLlHr/VuKFfpLP9cvyvE1ORTKiH3
22
+ w9pJeXpEPnfjCOmKcDLx6tdmeQGxbiUEtbEVNArv86R0cNCSMYn3DbJqsgOQt3hR
23
+ JjEu62KqCF4wbZra0YECAwEAAaOBhDCBgTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
24
+ sDAdBgNVHQ4EFgQUl82/HGUn9c6xkWOm4PFyNMzD7KswIwYDVR0RBBwwGoEYcHBl
25
+ bmRzZUB0aG91Z2h0d29ya3MuY29tMCMGA1UdEgQcMBqBGHBwZW5kc2VAdGhvdWdo
26
+ dHdvcmtzLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEANpgOylfaecEbhwegCP1174Qs
27
+ N4pQjP2501YZutXgPOGnHJxcOZw1O+3Y5F/AWsErTaTeP1rInMYKsryqtLJBPawH
28
+ i2sPTQXJVPfFq/WY4Lg5m4JB9GPPjT8SGLEH2BZn+kPR8hpk3q1vn85PuMf2oRnA
29
+ Jumt5vcLOMp1y7qShzkySgskZrTgZsH2UVSyCPKiCgfB5wv8mR0TUn8P3QPfR5DD
30
+ Odd0ARXQ+MKbGEPHexqYWQ11WV5+puixnmTTePyoFlxT+OP88aXZjdUj5W9KHO+A
31
+ 7ew1UU7TV+ZWEGPcD+pVDg6GvGt+ZUphvDx5quj5fcwPp6IAxvTeP3AN8ZR5FQ==
32
+ -----END CERTIFICATE-----
33
+ date: 2013-12-22 00:00:00.000000000 Z
34
+ dependencies: []
35
+ description: Trying to parse Markdown in a very simple and unit-testable way. Don't
36
+ know if I can cover all of Markdown yet.
37
+ email: ppendse@thoughtworks.com
38
+ executables:
39
+ - rubymark
40
+ extensions: []
41
+ extra_rdoc_files: []
42
+ files:
43
+ - lib/rubymark.rb
44
+ - spec/blockquote_spec.rb
45
+ - spec/emphasis_spec.rb
46
+ - spec/everything_spec.rb
47
+ - spec/great_expectations.rb
48
+ - spec/heading_spec.rb
49
+ - spec/link_spec.rb
50
+ - spec/list_spec.rb
51
+ - spec/paragraph_spec.rb
52
+ - spec/spec_helper.rb
53
+ - LICENSE.txt
54
+ - bin/rubymark
55
+ homepage: https://github.com/prasanna/rubymark
56
+ licenses:
57
+ - MIT
58
+ metadata: {}
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ requirements: []
74
+ rubyforge_project:
75
+ rubygems_version: 2.1.11
76
+ signing_key:
77
+ specification_version: 4
78
+ summary: RubyMark is an experimental Markdown parser!
79
+ test_files: []
metadata.gz.sig ADDED
Binary file