mbrao 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/.gitignore +6 -0
  2. data/.travis-gemfile +13 -0
  3. data/.travis.yml +8 -0
  4. data/.yardopts +1 -0
  5. data/Gemfile +21 -0
  6. data/README.md +60 -0
  7. data/Rakefile +11 -0
  8. data/doc/ActionView/Template/Handlers/MbraoTemplate.html +568 -0
  9. data/doc/ActionView/Template/Handlers.html +125 -0
  10. data/doc/HTML/Pipeline/KramdownFilter.html +354 -0
  11. data/doc/HTML/Pipeline.html +140 -0
  12. data/doc/HTML.html +125 -0
  13. data/doc/Mbrao/Author.html +1402 -0
  14. data/doc/Mbrao/Content.html +4779 -0
  15. data/doc/Mbrao/ContentPublicInterface.html +658 -0
  16. data/doc/Mbrao/Exceptions/InvalidDate.html +133 -0
  17. data/doc/Mbrao/Exceptions/InvalidMetadata.html +133 -0
  18. data/doc/Mbrao/Exceptions/Parsing.html +133 -0
  19. data/doc/Mbrao/Exceptions/Rendering.html +133 -0
  20. data/doc/Mbrao/Exceptions/UnavailableLocalization.html +133 -0
  21. data/doc/Mbrao/Exceptions/Unimplemented.html +133 -0
  22. data/doc/Mbrao/Exceptions/UnknownEngine.html +133 -0
  23. data/doc/Mbrao/Exceptions.html +125 -0
  24. data/doc/Mbrao/Parser.html +418 -0
  25. data/doc/Mbrao/ParsingEngines/Base.html +658 -0
  26. data/doc/Mbrao/ParsingEngines/PlainText.html +571 -0
  27. data/doc/Mbrao/ParsingEngines.html +127 -0
  28. data/doc/Mbrao/PublicInterface/ClassMethods.html +1727 -0
  29. data/doc/Mbrao/PublicInterface.html +134 -0
  30. data/doc/Mbrao/RenderingEngines/Base.html +280 -0
  31. data/doc/Mbrao/RenderingEngines/HtmlPipeline.html +873 -0
  32. data/doc/Mbrao/RenderingEngines.html +127 -0
  33. data/doc/Mbrao/Validations/ClassMethods.html +692 -0
  34. data/doc/Mbrao/Validations.html +134 -0
  35. data/doc/Mbrao/Version.html +189 -0
  36. data/doc/Mbrao.html +130 -0
  37. data/doc/_index.html +395 -0
  38. data/doc/class_list.html +53 -0
  39. data/doc/css/common.css +1 -0
  40. data/doc/css/full_list.css +57 -0
  41. data/doc/css/style.css +338 -0
  42. data/doc/file.README.html +135 -0
  43. data/doc/file_list.html +55 -0
  44. data/doc/frames.html +28 -0
  45. data/doc/index.html +135 -0
  46. data/doc/js/app.js +214 -0
  47. data/doc/js/full_list.js +173 -0
  48. data/doc/js/jquery.js +4 -0
  49. data/doc/method_list.html +516 -0
  50. data/doc/top-level-namespace.html +112 -0
  51. data/lib/mbrao/author.rb +61 -0
  52. data/lib/mbrao/content.rb +300 -0
  53. data/lib/mbrao/exceptions.rb +38 -0
  54. data/lib/mbrao/integrations/rails.rb +51 -0
  55. data/lib/mbrao/parser.rb +276 -0
  56. data/lib/mbrao/parsing_engines/base.rb +51 -0
  57. data/lib/mbrao/parsing_engines/plain_text.rb +187 -0
  58. data/lib/mbrao/rendering_engines/base.rb +22 -0
  59. data/lib/mbrao/rendering_engines/html_pipeline.rb +147 -0
  60. data/lib/mbrao/version.rb +25 -0
  61. data/lib/mbrao.rb +24 -0
  62. data/mbrao.gemspec +31 -0
  63. data/spec/coverage_helper.rb +17 -0
  64. data/spec/mbrao/author_spec.rb +62 -0
  65. data/spec/mbrao/content_spec.rb +280 -0
  66. data/spec/mbrao/integrations/rails_spec.rb +92 -0
  67. data/spec/mbrao/parser_spec.rb +269 -0
  68. data/spec/mbrao/parsing_engines/base_spec.rb +52 -0
  69. data/spec/mbrao/parsing_engines/plain_text_spec.rb +141 -0
  70. data/spec/mbrao/rendering_engines/base_spec.rb +17 -0
  71. data/spec/mbrao/rendering_engines/html_pipeline_spec.rb +128 -0
  72. data/spec/spec_helper.rb +15 -0
  73. metadata +195 -0
@@ -0,0 +1,141 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This file is part of the mbrao gem. Copyright (C) 2013 and above Shogun <shogun_panda@me.com>.
4
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
5
+ #
6
+
7
+ require "spec_helper"
8
+
9
+ describe Mbrao::ParsingEngines::PlainText do
10
+ let(:reference) { Mbrao::ParsingEngines::PlainText.new }
11
+
12
+ let(:sample_metadata) {
13
+ <<EOM
14
+ title: "OK"
15
+ locales:
16
+ - it
17
+ - en
18
+ more:
19
+ it: "Continua"
20
+ en: "Continue"
21
+ other:
22
+ status: "OK"
23
+ EOM
24
+ }
25
+
26
+ let(:sample_content){
27
+ <<EOC
28
+ This is a content.
29
+
30
+ {{content: en}}
31
+ Optionally I'm filtered only for English.
32
+ {{/content}}
33
+ EOC
34
+ }
35
+
36
+ let(:sample_valid) {
37
+ <<EOS1
38
+
39
+
40
+ {{metadata}}
41
+ #{sample_metadata}
42
+ {{/metadata}}
43
+
44
+ #{sample_content}
45
+
46
+ EOS1
47
+ }
48
+
49
+ let(:sample_invalid) {
50
+ <<EOS2
51
+ {{metadata}}
52
+ #{sample_content}
53
+ EOS2
54
+ }
55
+
56
+ let(:sample_no_metadata) {
57
+ <<EOS3
58
+ #{sample_content}
59
+ EOS3
60
+ }
61
+
62
+ let(:sample_nested_content) {
63
+ <<EOS4
64
+ START
65
+ {{content: it, en}}IT, EN{{/content}}
66
+ {{content: *, !en, !it, !es, !fr}}MIDDLE{{/content}}
67
+ {{content: !it}}
68
+ {{content: !es}}!IT and !ES{{/content}}
69
+ {{content: en}}EN in !IT{{/content}}
70
+
71
+ !IT
72
+ {{/content}}
73
+ {{content: !*}}END{{/content}}
74
+ EOS4
75
+ }
76
+
77
+ describe "#separate_components" do
78
+ it "should return correct metadata and contents" do
79
+ expect(reference.separate_components(sample_valid)).to eq([sample_metadata.strip, sample_content.strip])
80
+ end
81
+
82
+ it "should return the whole content if metadata are either incorrectly tagged or not present" do
83
+ expect(reference.separate_components(sample_invalid)).to eq(["", sample_invalid.strip])
84
+ expect(reference.separate_components(sample_no_metadata)).to eq(["", sample_no_metadata.strip])
85
+ end
86
+
87
+ it "should use different tags" do
88
+ expect(reference.separate_components("[meta]{{metadata}}OK\n[/meta] REST", {meta_tags: ["[meta]", "[/meta]"]})).to eq(["{{metadata}}OK", "REST"])
89
+ end
90
+ end
91
+
92
+ describe "#parse_metadata" do
93
+ it "should correctly parse YAML formatted metadata" do
94
+ expect(reference.parse_metadata("---\nyaml:\n :a: 'b'")).to eq({"yaml" => {a: "b"}})
95
+ end
96
+
97
+ it "should return a default value if parsing failed" do
98
+ expect(reference.parse_metadata("---\n\"yaml:", {default: "DEFAULT"})).to eq("DEFAULT")
99
+ end
100
+
101
+ it "should raise an exception if parsing failed and no default is available" do
102
+ expect { reference.parse_metadata("---\n\"yaml:") }.to raise_error(::Mbrao::Exceptions::InvalidMetadata)
103
+ end
104
+ end
105
+
106
+ describe "#filter_content" do
107
+ def parse_content(content)
108
+ content.split("\n").collect(&:strip).select {|l| l.present? }
109
+ end
110
+
111
+ it "should return the original content if locales contains *" do
112
+ expect(parse_content(reference.filter_content(::Mbrao::Content.create(nil, sample_nested_content), "*"))).to eq(["START", "IT, EN", "MIDDLE", "!IT and !ES", "EN in !IT", "!IT", "END"])
113
+ end
114
+
115
+ it "should use default locale if nothing is specified" do
116
+ ::Mbrao::Parser.locale = :it
117
+ expect(parse_content(reference.filter_content(::Mbrao::Content.create(nil, sample_nested_content)))).to eq(["START", "IT, EN", "MIDDLE", "END"])
118
+ end
119
+
120
+ it "should ignore unclosed tag, trying to close the leftmost start tag" do
121
+ expect(parse_content(reference.filter_content(::Mbrao::Content.create(nil, "{{content: it}}\n{{content: en}}NO{{/content}}")))).to eq(["{{content: en}}NO"])
122
+ end
123
+
124
+ it "should correctly filter by tag" do
125
+ expect(parse_content(reference.filter_content(::Mbrao::Content.create(nil, sample_nested_content), "en"))).to eq(["START", "IT, EN", "MIDDLE", "!IT and !ES", "EN in !IT", "!IT", "END"])
126
+ expect(parse_content(reference.filter_content(::Mbrao::Content.create(nil, sample_nested_content), "it"))).to eq(["START", "IT, EN", "MIDDLE", "END"])
127
+ expect(parse_content(reference.filter_content(::Mbrao::Content.create(nil, sample_nested_content), "es"))).to eq(["START", "MIDDLE", "!IT", "END"])
128
+ expect(parse_content(reference.filter_content(::Mbrao::Content.create(nil, sample_nested_content), "fr"))).to eq(["START", "MIDDLE", "!IT and !ES", "!IT", "END"])
129
+ expect(parse_content(reference.filter_content(::Mbrao::Content.create(nil, sample_nested_content), ["it", "en"]))).to eq(["START", "IT, EN", "MIDDLE", "END"])
130
+ expect(parse_content(reference.filter_content(::Mbrao::Content.create(nil, sample_nested_content), ["es", "en"]))).to eq(["START", "IT, EN", "MIDDLE", "EN in !IT", "!IT", "END"])
131
+ expect(parse_content(reference.filter_content(::Mbrao::Content.create(nil, sample_nested_content), ["fr", "en"]))).to eq(["START", "IT, EN", "MIDDLE", "!IT and !ES", "EN in !IT", "!IT", "END"])
132
+ expect(parse_content(reference.filter_content(::Mbrao::Content.create(nil, sample_nested_content), ["fr", "es", "en"]))).to eq(["START", "IT, EN", "MIDDLE", "EN in !IT", "!IT", "END"])
133
+ end
134
+
135
+ it "should use different tags" do
136
+ sample = "[content-it]{{content: !it}}IT[/content]\nOK"
137
+ expect(parse_content(reference.filter_content(::Mbrao::Content.create(nil, sample), "it", {content_tags: ["[content-%ARGS%]", "[/content]"]}))).to eq(["{{content: !it}}IT", "OK"])
138
+ expect(parse_content(reference.filter_content(::Mbrao::Content.create(nil, sample), "en", {content_tags: ["[content-%ARGS%]", "[/content]"]}))).to eq(["OK"])
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This file is part of the mbrao gem. Copyright (C) 2013 and above Shogun <shogun_panda@me.com>.
4
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
5
+ #
6
+
7
+ require "spec_helper"
8
+
9
+ describe Mbrao::RenderingEngines::Base do
10
+ let(:reference) { Mbrao::RenderingEngines::Base.new }
11
+
12
+ describe "#render" do
13
+ it "should raise an exception" do
14
+ expect { reference.render("CONTENT", {}, {}) }.to raise_error(Mbrao::Exceptions::Unimplemented)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,128 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This file is part of the mbrao gem. Copyright (C) 2013 and above Shogun <shogun_panda@me.com>.
4
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
5
+ #
6
+
7
+ require "spec_helper"
8
+
9
+ describe Mbrao::RenderingEngines::HtmlPipeline do
10
+ let(:reference) { Mbrao::RenderingEngines::HtmlPipeline.new }
11
+
12
+ describe "#render" do
13
+ it "should forward everything to the html-pipeline" do
14
+ pipeline = Object.new
15
+ pipeline.should_receive(:call).with("CONTENT").and_return({output: ""})
16
+ ::HTML::Pipeline.should_receive(:new).with(an_instance_of(Array), an_instance_of(Hash)).and_return(pipeline)
17
+ reference.render("CONTENT")
18
+ end
19
+
20
+ it "should raise a specific exception if a locale is not available" do
21
+
22
+ expect { reference.render(::Mbrao::Content.create({locales: ["en"]}, "BODY"), {locales: ["it"]}) }.to raise_error(::Mbrao::Exceptions::UnavailableLocalization)
23
+ end
24
+
25
+ it "should raise an exception if anything goes wrong" do
26
+ ::HTML::Pipeline.stub(:new).and_raise(ArgumentError.new("ERROR"))
27
+ expect { reference.render("CONTENT") }.to raise_error(::Mbrao::Exceptions::Rendering)
28
+ end
29
+
30
+ it "should have default options" do
31
+ filters = [:kramdown, :table_of_contents, :autolink, :emoji, :image_max_width].collect {|f| ::Mbrao::Parser.find_class(f, "::HTML::Pipeline::%CLASS%Filter", true) }
32
+ ::HTML::Pipeline.should_receive(:new).with(filters, {gfm: true, asset_root: "/"}).and_call_original
33
+ reference.render("CONTENT")
34
+ end
35
+
36
+ it "should merge context to options" do
37
+ ::HTML::Pipeline.should_receive(:new).with(an_instance_of(Array), {gfm: true, asset_root: "/", additional: true}).and_call_original
38
+ reference.render("CONTENT", {}, {additional: true})
39
+ end
40
+
41
+ it "should restrict filter used" do
42
+ filters = [:table_of_contents, :autolink, :emoji, :image_max_width].collect {|f| ::Mbrao::Parser.find_class(f, "::HTML::Pipeline::%CLASS%Filter", true) }
43
+ ::HTML::Pipeline.should_receive(:new).with(filters, an_instance_of(Hash)).and_call_original
44
+ reference.render("CONTENT", {kramdown: false})
45
+
46
+ filters = [:kramdown, :autolink, :emoji, :image_max_width].collect {|f| ::Mbrao::Parser.find_class(f, "::HTML::Pipeline::%CLASS%Filter", true) }
47
+ ::HTML::Pipeline.should_receive(:new).with(filters, an_instance_of(Hash)).and_call_original
48
+ reference.render("CONTENT", {toc: false})
49
+
50
+ filters = [:kramdown, :table_of_contents, :emoji, :image_max_width].collect {|f| ::Mbrao::Parser.find_class(f, "::HTML::Pipeline::%CLASS%Filter", true) }
51
+ ::HTML::Pipeline.should_receive(:new).with(filters, an_instance_of(Hash)).and_call_original
52
+ reference.render("CONTENT", {links: false})
53
+
54
+ filters = [:kramdown, :table_of_contents, :autolink, :image_max_width].collect {|f| ::Mbrao::Parser.find_class(f, "::HTML::Pipeline::%CLASS%Filter", true) }
55
+ ::HTML::Pipeline.should_receive(:new).with(filters, an_instance_of(Hash)).and_call_original
56
+ reference.render("CONTENT", {emoji: false})
57
+
58
+ filters = [:kramdown, :table_of_contents, :autolink, :emoji].collect {|f| ::Mbrao::Parser.find_class(f, "::HTML::Pipeline::%CLASS%Filter", true) }
59
+ ::HTML::Pipeline.should_receive(:new).with(filters, an_instance_of(Hash)).and_call_original
60
+ reference.render("CONTENT", {image_max_width: false})
61
+ end
62
+ end
63
+
64
+ describe "#default_pipeline" do
65
+ it "should return a default pipeline" do
66
+ expect(reference.default_pipeline).to eq([[:kramdown], [:table_of_contents, :toc], [:autolink, :links], [:emoji], [:image_max_width]])
67
+ end
68
+ end
69
+
70
+ describe "#default_pipeline=" do
71
+ it "should set a correct pipeline" do
72
+ reference.default_pipeline = nil
73
+ expect(reference.default_pipeline).to eq([[]])
74
+
75
+ reference.default_pipeline = "A"
76
+ expect(reference.default_pipeline).to eq([[:A]])
77
+
78
+ reference.default_pipeline = ["A", "B"]
79
+ expect(reference.default_pipeline).to eq([[:A], [:B]])
80
+
81
+ reference.default_pipeline = ["1", [["B", ["C"]]]]
82
+ expect(reference.default_pipeline).to eq([[:"1"], [:B, :C]])
83
+ end
84
+ end
85
+
86
+ describe "#default_options" do
87
+ it "should return a default hash" do
88
+ expect(reference.default_options).to eq({gfm: true, asset_root: "/"})
89
+ end
90
+
91
+ it "should return the set hash" do
92
+ reference.instance_variable_set(:@default_options, {})
93
+ expect(reference.default_options).to eq({})
94
+ end
95
+ end
96
+
97
+ describe "#default_options=" do
98
+ it "should only assign if the value is an Hash" do
99
+ reference.default_options = {a: "b"}
100
+ expect(reference.default_options).to eq({a: "b"})
101
+ reference.default_options = 1
102
+ expect(reference.default_options).to eq({})
103
+ reference.default_options = nil
104
+ expect(reference.default_options).to eq({})
105
+ end
106
+ end
107
+ end
108
+
109
+ describe HTML::Pipeline::KramdownFilter do
110
+ describe "#initialize" do
111
+ it "should call the parent constructor" do
112
+ HTML::Pipeline::TextFilter.should_receive(:new).with("\rCONTENT\r", {a: "b"}, {c: "d"})
113
+ HTML::Pipeline::KramdownFilter.new("\rCONTENT\r", {a: "b"}, {c: "d"})
114
+ end
115
+
116
+ it "should remove \r from the text" do
117
+ reference = HTML::Pipeline::KramdownFilter.new("\rCONTENT\r", {a: "b"}, {c: "d"})
118
+ expect(reference.instance_variable_get(:@text)).to eq("CONTENT")
119
+ end
120
+
121
+ it "should use Kramdown with given options for building the result" do
122
+ object = Object.new
123
+ Kramdown::Document.should_receive(:new).with("CONTENT", {a: "b"}).and_return(object)
124
+ object.should_receive(:to_html)
125
+ HTML::Pipeline::KramdownFilter.new("\rCONTENT\r", {a: "b"}, {c: "d"}).call
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+ #
3
+ # This file is part of the mbrao gem. Copyright (C) 2013 and above Shogun <shogun_panda@me.com>.
4
+ # Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
5
+ #
6
+
7
+ require "rubygems"
8
+ require "bundler/setup"
9
+ require "mbrao"
10
+
11
+ RSpec.configure do |config|
12
+ config.expect_with :rspec do |c|
13
+ c.syntax = :expect
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,195 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mbrao
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Shogun
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-01 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: lazier
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 2.7.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 2.7.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: html-pipeline
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.0.8
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.0.8
46
+ - !ruby/object:Gem::Dependency
47
+ name: slim
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.3.6
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.3.6
62
+ - !ruby/object:Gem::Dependency
63
+ name: kramdown
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 0.14.2
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.14.2
78
+ description: A content parser and renderer with embedded metadata support.
79
+ email:
80
+ - shogun_panda@me.com
81
+ executables: []
82
+ extensions: []
83
+ extra_rdoc_files: []
84
+ files:
85
+ - .gitignore
86
+ - .travis-gemfile
87
+ - .travis.yml
88
+ - .yardopts
89
+ - Gemfile
90
+ - README.md
91
+ - Rakefile
92
+ - doc/ActionView/Template/Handlers.html
93
+ - doc/ActionView/Template/Handlers/MbraoTemplate.html
94
+ - doc/HTML.html
95
+ - doc/HTML/Pipeline.html
96
+ - doc/HTML/Pipeline/KramdownFilter.html
97
+ - doc/Mbrao.html
98
+ - doc/Mbrao/Author.html
99
+ - doc/Mbrao/Content.html
100
+ - doc/Mbrao/ContentPublicInterface.html
101
+ - doc/Mbrao/Exceptions.html
102
+ - doc/Mbrao/Exceptions/InvalidDate.html
103
+ - doc/Mbrao/Exceptions/InvalidMetadata.html
104
+ - doc/Mbrao/Exceptions/Parsing.html
105
+ - doc/Mbrao/Exceptions/Rendering.html
106
+ - doc/Mbrao/Exceptions/UnavailableLocalization.html
107
+ - doc/Mbrao/Exceptions/Unimplemented.html
108
+ - doc/Mbrao/Exceptions/UnknownEngine.html
109
+ - doc/Mbrao/Parser.html
110
+ - doc/Mbrao/ParsingEngines.html
111
+ - doc/Mbrao/ParsingEngines/Base.html
112
+ - doc/Mbrao/ParsingEngines/PlainText.html
113
+ - doc/Mbrao/PublicInterface.html
114
+ - doc/Mbrao/PublicInterface/ClassMethods.html
115
+ - doc/Mbrao/RenderingEngines.html
116
+ - doc/Mbrao/RenderingEngines/Base.html
117
+ - doc/Mbrao/RenderingEngines/HtmlPipeline.html
118
+ - doc/Mbrao/Validations.html
119
+ - doc/Mbrao/Validations/ClassMethods.html
120
+ - doc/Mbrao/Version.html
121
+ - doc/_index.html
122
+ - doc/class_list.html
123
+ - doc/css/common.css
124
+ - doc/css/full_list.css
125
+ - doc/css/style.css
126
+ - doc/file.README.html
127
+ - doc/file_list.html
128
+ - doc/frames.html
129
+ - doc/index.html
130
+ - doc/js/app.js
131
+ - doc/js/full_list.js
132
+ - doc/js/jquery.js
133
+ - doc/method_list.html
134
+ - doc/top-level-namespace.html
135
+ - lib/mbrao.rb
136
+ - lib/mbrao/author.rb
137
+ - lib/mbrao/content.rb
138
+ - lib/mbrao/exceptions.rb
139
+ - lib/mbrao/integrations/rails.rb
140
+ - lib/mbrao/parser.rb
141
+ - lib/mbrao/parsing_engines/base.rb
142
+ - lib/mbrao/parsing_engines/plain_text.rb
143
+ - lib/mbrao/rendering_engines/base.rb
144
+ - lib/mbrao/rendering_engines/html_pipeline.rb
145
+ - lib/mbrao/version.rb
146
+ - mbrao.gemspec
147
+ - spec/coverage_helper.rb
148
+ - spec/mbrao/author_spec.rb
149
+ - spec/mbrao/content_spec.rb
150
+ - spec/mbrao/integrations/rails_spec.rb
151
+ - spec/mbrao/parser_spec.rb
152
+ - spec/mbrao/parsing_engines/base_spec.rb
153
+ - spec/mbrao/parsing_engines/plain_text_spec.rb
154
+ - spec/mbrao/rendering_engines/base_spec.rb
155
+ - spec/mbrao/rendering_engines/html_pipeline_spec.rb
156
+ - spec/spec_helper.rb
157
+ homepage: http://github.com/ShogunPanda/mbrao
158
+ licenses: []
159
+ post_install_message:
160
+ rdoc_options: []
161
+ require_paths:
162
+ - lib
163
+ required_ruby_version: !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
166
+ - - ! '>='
167
+ - !ruby/object:Gem::Version
168
+ version: 1.9.3
169
+ required_rubygems_version: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ! '>='
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ segments:
176
+ - 0
177
+ hash: 488107274440574524
178
+ requirements: []
179
+ rubyforge_project: mbrao
180
+ rubygems_version: 1.8.25
181
+ signing_key:
182
+ specification_version: 3
183
+ summary: A content parser and renderer with embedded metadata support.
184
+ test_files:
185
+ - spec/coverage_helper.rb
186
+ - spec/mbrao/author_spec.rb
187
+ - spec/mbrao/content_spec.rb
188
+ - spec/mbrao/integrations/rails_spec.rb
189
+ - spec/mbrao/parser_spec.rb
190
+ - spec/mbrao/parsing_engines/base_spec.rb
191
+ - spec/mbrao/parsing_engines/plain_text_spec.rb
192
+ - spec/mbrao/rendering_engines/base_spec.rb
193
+ - spec/mbrao/rendering_engines/html_pipeline_spec.rb
194
+ - spec/spec_helper.rb
195
+ has_rdoc: