metadown 1.0.1 → 1.1.0.beta
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.
- data/README.md +14 -0
- data/lib/metadown.rb +19 -5
- data/lib/metadown/metadata_parser.rb +13 -0
- data/lib/metadown/version.rb +1 -1
- data/spec/metadown_spec.rb +13 -1
- metadata +14 -13
data/README.md
CHANGED
@@ -23,6 +23,9 @@ at the head of your file:
|
|
23
23
|
Woudn't that be neat to use on other projects? I thought so too! Hence,
|
24
24
|
metadown.
|
25
25
|
|
26
|
+
Furthermore, you don't have to have just markdown. Inject any kind of
|
27
|
+
parser you'd like!
|
28
|
+
|
26
29
|
## Installation
|
27
30
|
|
28
31
|
Add this line to your application's Gemfile:
|
@@ -60,6 +63,17 @@ back with two attributes: output and metadata.
|
|
60
63
|
data.output #=> "<p>hello, world</p>\n"
|
61
64
|
data.metadata #=> {"key" => "value"}
|
62
65
|
|
66
|
+
If you don't want to use Markdown, I assume you're using a Tilt
|
67
|
+
template of some kind:
|
68
|
+
|
69
|
+
require 'metadown'
|
70
|
+
require 'erb'
|
71
|
+
require 'tilt'
|
72
|
+
|
73
|
+
data = Metadown.render("<h1><%= 'Hi' %></h1>", Tilt::ERBTemplate)
|
74
|
+
data.output #=> "<h1>Hi</h1>"
|
75
|
+
data.metadata #=> "{}"
|
76
|
+
|
63
77
|
## Contributing
|
64
78
|
|
65
79
|
1. Fork it
|
data/lib/metadown.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "metadown/renderer"
|
2
|
+
require "metadown/metadata_parser"
|
2
3
|
require "metadown/version"
|
3
4
|
|
4
5
|
# This module namespaces everything in the gem. It's also where the factory
|
@@ -11,13 +12,26 @@ module Metadown
|
|
11
12
|
# output.
|
12
13
|
Data = Struct.new(:metadata, :output)
|
13
14
|
|
14
|
-
# The render method is a convenient factory.
|
15
|
-
#
|
16
|
-
|
17
|
-
|
15
|
+
# The render method is a convenient factory. If we give it text, it
|
16
|
+
# delegates to the classic markdown renderer, otherwise, we can inject
|
17
|
+
# one of our own.
|
18
|
+
def render(text, renderer=nil)
|
19
|
+
return redcarpet_render(text) if renderer.nil?
|
20
|
+
|
21
|
+
metadata = MetadataParser.new(text).parse
|
22
|
+
|
23
|
+
Data.new(metadata, renderer.new { text }.render)
|
24
|
+
end
|
25
|
+
module_function :render
|
26
|
+
|
27
|
+
# Classic compatiblity mode: fall back to old redcarpet renderer
|
28
|
+
def redcarpet_render(text)
|
29
|
+
renderer = Renderer.new
|
18
30
|
markdown = Redcarpet::Markdown.new(renderer)
|
31
|
+
|
19
32
|
output = markdown.render(text)
|
33
|
+
|
20
34
|
Data.new(renderer.metadata, output)
|
21
35
|
end
|
22
|
-
module_function :
|
36
|
+
module_function :redcarpet_render
|
23
37
|
end
|
data/lib/metadown/version.rb
CHANGED
data/spec/metadown_spec.rb
CHANGED
@@ -2,18 +2,30 @@ $:.unshift("lib")
|
|
2
2
|
require 'metadown'
|
3
3
|
|
4
4
|
describe Metadown do
|
5
|
-
|
5
|
+
let(:text) do
|
6
6
|
text = <<-MARKDOWN
|
7
7
|
---
|
8
8
|
key: "value"
|
9
9
|
---
|
10
10
|
hello world
|
11
11
|
MARKDOWN
|
12
|
+
end
|
12
13
|
|
14
|
+
it "provides a factory" do
|
13
15
|
Metadown.render(text).tap do |data|
|
14
16
|
data.should be_kind_of(Metadown::Data)
|
15
17
|
data.metadata.should eql({"key" => "value"})
|
16
18
|
data.output.should eql("<p>hello world</p>\n")
|
17
19
|
end
|
18
20
|
end
|
21
|
+
|
22
|
+
it "allows you to inject a parser" do
|
23
|
+
parser = stub(:new => stub(:render => "wat"))
|
24
|
+
|
25
|
+
Metadown.render(text, parser).tap do |data|
|
26
|
+
data.should be_kind_of(Metadown::Data)
|
27
|
+
data.metadata.should eql({"key" => "value"})
|
28
|
+
data.output.should eql("wat")
|
29
|
+
end
|
30
|
+
end
|
19
31
|
end
|
metadata
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metadown
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.0.beta
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Steve Klabnik
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: redcarpet
|
16
|
-
requirement: &
|
16
|
+
requirement: &2156246880 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2156246880
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &2156246380 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2156246380
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &2156245820 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2156245820
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: yard
|
49
|
-
requirement: &
|
49
|
+
requirement: &2156245360 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2156245360
|
58
58
|
description: This gem gives you a custom markdown parser that allows you to prefix
|
59
59
|
the markdown itself with YAML metadata.
|
60
60
|
email:
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- README.md
|
73
73
|
- Rakefile
|
74
74
|
- lib/metadown.rb
|
75
|
+
- lib/metadown/metadata_parser.rb
|
75
76
|
- lib/metadown/renderer.rb
|
76
77
|
- lib/metadown/version.rb
|
77
78
|
- metadown.gemspec
|
@@ -92,9 +93,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
94
|
none: false
|
94
95
|
requirements:
|
95
|
-
- - ! '
|
96
|
+
- - ! '>'
|
96
97
|
- !ruby/object:Gem::Version
|
97
|
-
version:
|
98
|
+
version: 1.3.1
|
98
99
|
requirements: []
|
99
100
|
rubyforge_project:
|
100
101
|
rubygems_version: 1.8.10
|