brightly 0.1.1

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.
Files changed (49) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +89 -0
  5. data/Rakefile +73 -0
  6. data/VERSION +1 -0
  7. data/bin/brightly +7 -0
  8. data/brightly.gemspec +106 -0
  9. data/lib/brightly/consumer.rb +26 -0
  10. data/lib/brightly/provider/base.rb +61 -0
  11. data/lib/brightly/provider/config.rb +0 -0
  12. data/lib/brightly/provider/exec.rb +25 -0
  13. data/lib/brightly/provider/public/stylesheets/active4d.css +114 -0
  14. data/lib/brightly/provider/public/stylesheets/all_hallows_eve.css +72 -0
  15. data/lib/brightly/provider/public/stylesheets/amy.css +147 -0
  16. data/lib/brightly/provider/public/stylesheets/blackboard.css +88 -0
  17. data/lib/brightly/provider/public/stylesheets/brilliance_black.css +605 -0
  18. data/lib/brightly/provider/public/stylesheets/brilliance_dull.css +599 -0
  19. data/lib/brightly/provider/public/stylesheets/cobalt.css +149 -0
  20. data/lib/brightly/provider/public/stylesheets/dawn.css +121 -0
  21. data/lib/brightly/provider/public/stylesheets/eiffel.css +121 -0
  22. data/lib/brightly/provider/public/stylesheets/espresso_libre.css +109 -0
  23. data/lib/brightly/provider/public/stylesheets/idle.css +62 -0
  24. data/lib/brightly/provider/public/stylesheets/iplastic.css +80 -0
  25. data/lib/brightly/provider/public/stylesheets/lazy.css +73 -0
  26. data/lib/brightly/provider/public/stylesheets/mac_classic.css +123 -0
  27. data/lib/brightly/provider/public/stylesheets/magicwb_amiga.css +104 -0
  28. data/lib/brightly/provider/public/stylesheets/pastels_on_dark.css +188 -0
  29. data/lib/brightly/provider/public/stylesheets/slush_poppies.css +85 -0
  30. data/lib/brightly/provider/public/stylesheets/spacecadet.css +51 -0
  31. data/lib/brightly/provider/public/stylesheets/sunburst.css +180 -0
  32. data/lib/brightly/provider/public/stylesheets/twilight.css +137 -0
  33. data/lib/brightly/provider/public/stylesheets/zenburnesque.css +91 -0
  34. data/lib/brightly.rb +10 -0
  35. data/spec/brightly_spec.rb +28 -0
  36. data/spec/data/code.html +6 -0
  37. data/spec/data/code.markdown +7 -0
  38. data/spec/data/double_nest.html +16 -0
  39. data/spec/data/double_nest.markdown +15 -0
  40. data/spec/data/javascript.html +9 -0
  41. data/spec/data/javascript.markdown +6 -0
  42. data/spec/data/nested.html +8 -0
  43. data/spec/data/nested.markdown +9 -0
  44. data/spec/data/simple.html +3 -0
  45. data/spec/data/simple.markdown +3 -0
  46. data/spec/rcov.opts +2 -0
  47. data/spec/spec.opts +4 -0
  48. data/spec/spec_helper.rb +14 -0
  49. metadata +153 -0
@@ -0,0 +1,137 @@
1
+ pre.twilight .DiffInserted {
2
+ background-color: #253B22;
3
+ color: #F8F8F8;
4
+ }
5
+ pre.twilight .DiffHeader {
6
+ background-color: #0E2231;
7
+ color: #F8F8F8;
8
+ font-style: italic;
9
+ }
10
+ pre.twilight .CssPropertyValue {
11
+ color: #F9EE98;
12
+ }
13
+ pre.twilight .CCCPreprocessorDirective {
14
+ color: #AFC4DB;
15
+ }
16
+ pre.twilight .Constant {
17
+ color: #CF6A4C;
18
+ }
19
+ pre.twilight .DiffChanged {
20
+ background-color: #4A410D;
21
+ color: #F8F8F8;
22
+ }
23
+ pre.twilight .EmbeddedSource {
24
+ background-color: #A3A6AD;
25
+ }
26
+ pre.twilight .Support {
27
+ color: #9B859D;
28
+ }
29
+ pre.twilight .MarkupList {
30
+ color: #F9EE98;
31
+ }
32
+ pre.twilight .CssConstructorArgument {
33
+ color: #8F9D6A;
34
+ }
35
+ pre.twilight .Storage {
36
+ color: #F9EE98;
37
+ }
38
+ pre.twilight .line-numbers {
39
+ background-color: #DDF0FF;
40
+ color: #000000;
41
+ }
42
+ pre.twilight .CssClass {
43
+ color: #9B703F;
44
+ }
45
+ pre.twilight .StringConstant {
46
+ color: #DDF2A4;
47
+ }
48
+ pre.twilight .CssAtRule {
49
+ color: #8693A5;
50
+ }
51
+ pre.twilight .MetaTagInline {
52
+ color: #E0C589;
53
+ }
54
+ pre.twilight .MarkupHeading {
55
+ color: #CF6A4C;
56
+ }
57
+ pre.twilight .CssTagName {
58
+ color: #CDA869;
59
+ }
60
+ pre.twilight .SupportConstant {
61
+ color: #CF6A4C;
62
+ }
63
+ pre.twilight .DiffDeleted {
64
+ background-color: #420E09;
65
+ color: #F8F8F8;
66
+ }
67
+ pre.twilight .CCCPreprocessorLine {
68
+ color: #8996A8;
69
+ }
70
+ pre.twilight .StringRegexpSpecial {
71
+ color: #CF7D34;
72
+ }
73
+ pre.twilight .EmbeddedSourceBright {
74
+ background-color: #9C9EA4;
75
+ }
76
+ pre.twilight .InvalidIllegal {
77
+ background-color: #241A24;
78
+ color: #F8F8F8;
79
+ }
80
+ pre.twilight .SupportFunction {
81
+ color: #DAD085;
82
+ }
83
+ pre.twilight .CssAdditionalConstants {
84
+ color: #CA7840;
85
+ }
86
+ pre.twilight .MetaTagAll {
87
+ color: #AC885B;
88
+ }
89
+ pre.twilight .StringRegexp {
90
+ color: #E9C062;
91
+ }
92
+ pre.twilight .StringEmbeddedSource {
93
+ color: #DAEFA3;
94
+ }
95
+ pre.twilight .EntityInheritedClass {
96
+ color: #9B5C2E;
97
+ font-style: italic;
98
+ }
99
+ pre.twilight .CssId {
100
+ color: #8B98AB;
101
+ }
102
+ pre.twilight .CssPseudoClass {
103
+ color: #8F9D6A;
104
+ }
105
+ pre.twilight .StringVariable {
106
+ color: #8A9A95;
107
+ }
108
+ pre.twilight .String {
109
+ color: #8F9D6A;
110
+ }
111
+ pre.twilight .Keyword {
112
+ color: #CDA869;
113
+ }
114
+ pre.twilight {
115
+ background-color: #141414;
116
+ color: #F8F8F8;
117
+ }
118
+ pre.twilight .CssPropertyName {
119
+ color: #C5AF75;
120
+ }
121
+ pre.twilight .DoctypeXmlProcessing {
122
+ color: #494949;
123
+ }
124
+ pre.twilight .InvalidDeprecated {
125
+ color: #D2A8A1;
126
+ font-style: italic;
127
+ }
128
+ pre.twilight .Variable {
129
+ color: #7587A6;
130
+ }
131
+ pre.twilight .Entity {
132
+ color: #9B703F;
133
+ }
134
+ pre.twilight .Comment {
135
+ color: #5F5A60;
136
+ font-style: italic;
137
+ }
@@ -0,0 +1,91 @@
1
+ pre.zenburnesque .InheritedClass {
2
+ }
3
+ pre.zenburnesque .TypeName {
4
+ color: #F09040;
5
+ }
6
+ pre.zenburnesque .FloatingPointPrefixOperators {
7
+ text-decoration: underline;
8
+ }
9
+ pre.zenburnesque .Number {
10
+ color: #22C0FF;
11
+ }
12
+ pre.zenburnesque .Directive {
13
+ font-weight: bold;
14
+ }
15
+ pre.zenburnesque .LibraryVariable {
16
+ }
17
+ pre.zenburnesque .Storage {
18
+ }
19
+ pre.zenburnesque .line-numbers {
20
+ background-color: #A0A0C0;
21
+ color: #000000;
22
+ }
23
+ pre.zenburnesque .LineNumberDirectives {
24
+ text-decoration: underline;
25
+ }
26
+ pre.zenburnesque .TagName {
27
+ }
28
+ pre.zenburnesque .StorageTypes {
29
+ color: #6080FF;
30
+ }
31
+ pre.zenburnesque .Operators {
32
+ color: #FFFFA0;
33
+ }
34
+ pre.zenburnesque {
35
+ background-color: #404040;
36
+ color: #DEDEDE;
37
+ }
38
+ pre.zenburnesque .LibraryConstant {
39
+ }
40
+ pre.zenburnesque .VariantTypes {
41
+ color: #4080A0;
42
+ }
43
+ pre.zenburnesque .Characters {
44
+ color: #FF8080;
45
+ }
46
+ pre.zenburnesque .FunctionArgument {
47
+ }
48
+ pre.zenburnesque .LanguageKeyword {
49
+ color: #FFFFA0;
50
+ }
51
+ pre.zenburnesque .BuiltInConstant {
52
+ }
53
+ pre.zenburnesque .FloatingPointNumbers {
54
+ text-decoration: underline;
55
+ }
56
+ pre.zenburnesque .ClassTypeName {
57
+ color: #F4A020;
58
+ }
59
+ pre.zenburnesque .TypeName1 {
60
+ color: #FFE000;
61
+ }
62
+ pre.zenburnesque .ModuleKeyword {
63
+ font-weight: bold;
64
+ color: #FF8000;
65
+ }
66
+ pre.zenburnesque .Invalid {
67
+ }
68
+ pre.zenburnesque .LibraryClassType {
69
+ }
70
+ pre.zenburnesque .LibraryFunction {
71
+ }
72
+ pre.zenburnesque .TagAttribute {
73
+ }
74
+ pre.zenburnesque .FloatingPointInfixOperators {
75
+ text-decoration: underline;
76
+ }
77
+ pre.zenburnesque .UserDefinedConstant {
78
+ }
79
+ pre.zenburnesque .String {
80
+ color: #FF2020;
81
+ }
82
+ pre.zenburnesque .FunctionName {
83
+ font-weight: bold;
84
+ color: #FFCC66;
85
+ }
86
+ pre.zenburnesque .Variable {
87
+ }
88
+ pre.zenburnesque .Comment {
89
+ color: #709070;
90
+ font-style: italic;
91
+ }
data/lib/brightly.rb ADDED
@@ -0,0 +1,10 @@
1
+ module Brightly
2
+ module Provider
3
+ autoload :Base, "brightly/provider/base"
4
+
5
+ autoload :Config, "brightly/provider/config"
6
+ autoload :Exec, "brightly/provider/exec"
7
+ end
8
+
9
+ autoload :Consumer, "brightly/consumer"
10
+ end
@@ -0,0 +1,28 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe Brightly::Provider do
4
+ it "returns html processed by markdown" do
5
+ post '/brighten', {:markdown => File.read(File.dirname(__FILE__) + '/data/simple.markdown'), :theme => 'blackboard'}
6
+ last_response.body.should == File.read(File.dirname(__FILE__) + '/data/simple.html')
7
+ end
8
+
9
+ it "returns html processed by markdown with ruby highlighted" do
10
+ post '/brighten', {:markdown => File.read(File.dirname(__FILE__) + '/data/code.markdown'), :theme => 'blackboard'}
11
+ last_response.body.should == File.read(File.dirname(__FILE__) + '/data/code.html')
12
+ end
13
+
14
+ it "returns html processed by markdown with html highlighted when there are nested <code> tags" do
15
+ post '/brighten', {:markdown => File.read(File.dirname(__FILE__) + '/data/nested.markdown'), :theme => 'blackboard'}
16
+ last_response.body.should == File.read(File.dirname(__FILE__) + '/data/nested.html')
17
+ end
18
+
19
+ it "returns html processed by markdown with embed javascript" do
20
+ post '/brighten', {:markdown => File.read(File.dirname(__FILE__) + '/data/javascript.markdown'), :theme => 'blackboard'}
21
+ last_response.body.should == File.read(File.dirname(__FILE__) + '/data/javascript.html')
22
+ end
23
+
24
+ it "returns html processed by markdown without double nesting parts of the highlighted code" do
25
+ post '/brighten', {:markdown => File.read(File.dirname(__FILE__) + '/data/double_nest.markdown'), :theme => 'blackboard'}
26
+ last_response.body.should == File.read(File.dirname(__FILE__) + '/data/double_nest.html')
27
+ end
28
+ end
@@ -0,0 +1,6 @@
1
+ <h1>Some Highlighted Ruby Code</h1>
2
+ <pre class="blackboard">
3
+ <span class="Keyword">def</span> <span class="Entity">foo</span>
4
+ puts <span class="String"><span class="String">&quot;</span>bar<span class="String">&quot;</span></span>
5
+ <span class="Keyword">end</span>
6
+ </pre>
@@ -0,0 +1,7 @@
1
+ # Some Highlighted Ruby Code
2
+
3
+ <code language="ruby">
4
+ def foo
5
+ puts "bar"
6
+ end
7
+ </code>
@@ -0,0 +1,16 @@
1
+
2
+ <pre class="blackboard">
3
+ <span class="Keyword">require</span> <span class="String"><span class="String">'</span>highline<span class="String">'</span></span>
4
+
5
+ namespace <span class="Constant"><span class="Constant">:</span>generate</span> <span class="Keyword">do</span>
6
+ desc <span class="String"><span class="String">&quot;</span>Do something with CLI<span class="String">&quot;</span></span>
7
+ task <span class="String"><span class="String">&quot;</span>Enter username &amp; password<span class="String">&quot;</span></span> <span class="Keyword">do</span>
8
+ username <span class="Keyword">=</span> <span class="Support">HighLine</span>.<span class="Entity">new</span>.<span class="Entity">ask</span>(<span class="String"><span class="String">&quot;</span>Please enter the 'username': <span class="String">&quot;</span></span>) <span class="Keyword">do </span>|<span class="Variable">q</span>|
9
+ q.<span class="Entity">validate</span> <span class="Keyword">=</span> <span class="String"><span class="String">/</span></span><span class="String"><span class="String"><span class="String">[</span>a-zA-z<span class="String">]</span></span><span class="String"><span class="String">[</span>a-zA-Z0-9<span class="String">]</span></span><span class="String"><span class="String">{</span>2,8<span class="String">}</span></span>$</span><span class="String"><span class="String">/</span></span>
10
+ <span class="Keyword">end</span>
11
+ password <span class="Keyword">=</span> <span class="Support">HighLine</span>.<span class="Entity">new</span>.<span class="Entity">ask</span>(<span class="String"><span class="String">&quot;</span>Please enter the 'admin' password: <span class="String">&quot;</span></span>) <span class="Keyword">do </span>|<span class="Variable">q</span>|
12
+ q.<span class="Entity">echo</span> <span class="Keyword">=</span> <span class="Constant">false</span>
13
+ <span class="Keyword">end</span>
14
+ <span class="Keyword">end</span>
15
+ <span class="Keyword">end</span>
16
+ </pre>
@@ -0,0 +1,15 @@
1
+ <code language="ruby">
2
+ require 'highline'
3
+
4
+ namespace :generate do
5
+ desc "Do something with CLI"
6
+ task "Enter username & password" do
7
+ username = HighLine.new.ask("Please enter the 'username': ") do |q|
8
+ q.validate = /[a-zA-z][a-zA-Z0-9]{2,8}$/
9
+ end
10
+ password = HighLine.new.ask("Please enter the 'admin' password: ") do |q|
11
+ q.echo = false
12
+ end
13
+ end
14
+ end
15
+ </code>
@@ -0,0 +1,9 @@
1
+ <script type="text/javascript">
2
+ console.log("Pie");
3
+ </script>
4
+ <h1>And A Bit of Javascript</h1>
5
+
6
+ <p>Write "Pie" to the console:</p>
7
+ <pre class="blackboard">
8
+ <span class="Entity">console</span><span class="Support">.log</span>(<span class="String"><span class="String">&quot;</span>Pie<span class="String">&quot;</span></span>);
9
+ </pre>
@@ -0,0 +1,6 @@
1
+ # And A Bit of Javascript
2
+
3
+ Write "Pie" to the console:
4
+ <code language="javascript" embed="embed">
5
+ console.log("Pie");
6
+ </code>
@@ -0,0 +1,8 @@
1
+ <h1>Some Highlighted HTML Code</h1>
2
+ <pre class="blackboard">
3
+ <span class="MetaTag"><span class="MetaTag">&lt;</span><span class="MetaTag">code</span> <span class="MetaTag">language</span>=<span class="String"><span class="String">&quot;</span>ruby<span class="String">&quot;</span></span><span class="MetaTag">&gt;</span></span>
4
+ def foo
5
+ puts &quot;bar&quot;
6
+ end
7
+ <span class="MetaTag"><span class="MetaTag">&lt;/</span><span class="MetaTag">code</span><span class="MetaTag">&gt;</span></span>
8
+ </pre>
@@ -0,0 +1,9 @@
1
+ # Some Highlighted HTML Code
2
+
3
+ <code language="html">
4
+ <code language="ruby">
5
+ def foo
6
+ puts "bar"
7
+ end
8
+ </code>
9
+ </code>
@@ -0,0 +1,3 @@
1
+ <h1>A Title</h1>
2
+
3
+ <p>And some body text that should process nicely</p>
@@ -0,0 +1,3 @@
1
+ # A Title
2
+
3
+ And some body text that should process nicely
data/spec/rcov.opts ADDED
@@ -0,0 +1,2 @@
1
+ --exclude "spec/*,/Library/*"
2
+ -T
data/spec/spec.opts ADDED
@@ -0,0 +1,4 @@
1
+ --color
2
+ --loadby mtime
3
+ --reverse
4
+ -fs
@@ -0,0 +1,14 @@
1
+ require 'rubygems'
2
+ require 'brightly'
3
+ require 'spec'
4
+ require 'spec/autorun'
5
+ require 'rack/test'
6
+
7
+ Spec::Runner.configure do |config|
8
+ config.include Rack::Test::Methods
9
+
10
+ # Add an app method for RSpec
11
+ def app
12
+ Rack::Lint.new(Brightly::Provider::Base.new)
13
+ end
14
+ end
metadata ADDED
@@ -0,0 +1,153 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: brightly
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Adam Elliot
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-11-19 00:00:00 -07:00
13
+ default_executable: brightly
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: sinatra
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.9.4
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: ultraviolet
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.10.2
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: rdiscount
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.3.5
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: rspec
47
+ type: :development
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.2.9
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: rack-test
57
+ type: :development
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 0.5.0
64
+ version:
65
+ description: Adds syntax highlighting and some other code stuff to Markdown
66
+ email: adam@warptube.com
67
+ executables:
68
+ - brightly
69
+ extensions: []
70
+
71
+ extra_rdoc_files:
72
+ - LICENSE
73
+ - README.rdoc
74
+ files:
75
+ - .document
76
+ - .gitignore
77
+ - LICENSE
78
+ - README.rdoc
79
+ - Rakefile
80
+ - VERSION
81
+ - bin/brightly
82
+ - brightly.gemspec
83
+ - lib/brightly.rb
84
+ - lib/brightly/consumer.rb
85
+ - lib/brightly/provider/base.rb
86
+ - lib/brightly/provider/config.rb
87
+ - lib/brightly/provider/exec.rb
88
+ - lib/brightly/provider/public/stylesheets/active4d.css
89
+ - lib/brightly/provider/public/stylesheets/all_hallows_eve.css
90
+ - lib/brightly/provider/public/stylesheets/amy.css
91
+ - lib/brightly/provider/public/stylesheets/blackboard.css
92
+ - lib/brightly/provider/public/stylesheets/brilliance_black.css
93
+ - lib/brightly/provider/public/stylesheets/brilliance_dull.css
94
+ - lib/brightly/provider/public/stylesheets/cobalt.css
95
+ - lib/brightly/provider/public/stylesheets/dawn.css
96
+ - lib/brightly/provider/public/stylesheets/eiffel.css
97
+ - lib/brightly/provider/public/stylesheets/espresso_libre.css
98
+ - lib/brightly/provider/public/stylesheets/idle.css
99
+ - lib/brightly/provider/public/stylesheets/iplastic.css
100
+ - lib/brightly/provider/public/stylesheets/lazy.css
101
+ - lib/brightly/provider/public/stylesheets/mac_classic.css
102
+ - lib/brightly/provider/public/stylesheets/magicwb_amiga.css
103
+ - lib/brightly/provider/public/stylesheets/pastels_on_dark.css
104
+ - lib/brightly/provider/public/stylesheets/slush_poppies.css
105
+ - lib/brightly/provider/public/stylesheets/spacecadet.css
106
+ - lib/brightly/provider/public/stylesheets/sunburst.css
107
+ - lib/brightly/provider/public/stylesheets/twilight.css
108
+ - lib/brightly/provider/public/stylesheets/zenburnesque.css
109
+ - spec/brightly_spec.rb
110
+ - spec/data/code.html
111
+ - spec/data/code.markdown
112
+ - spec/data/double_nest.html
113
+ - spec/data/double_nest.markdown
114
+ - spec/data/javascript.html
115
+ - spec/data/javascript.markdown
116
+ - spec/data/nested.html
117
+ - spec/data/nested.markdown
118
+ - spec/data/simple.html
119
+ - spec/data/simple.markdown
120
+ - spec/rcov.opts
121
+ - spec/spec.opts
122
+ - spec/spec_helper.rb
123
+ has_rdoc: true
124
+ homepage: http://github.com/adamelliot/brightly
125
+ licenses: []
126
+
127
+ post_install_message:
128
+ rdoc_options:
129
+ - --charset=UTF-8
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: "0"
137
+ version:
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: "0"
143
+ version:
144
+ requirements: []
145
+
146
+ rubyforge_project:
147
+ rubygems_version: 1.3.5
148
+ signing_key:
149
+ specification_version: 3
150
+ summary: Simple standalone web app that adds syntax highlighting to Markdown
151
+ test_files:
152
+ - spec/brightly_spec.rb
153
+ - spec/spec_helper.rb