glorify 0.1.0 → 0.2.0
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 +29 -15
- data/example.rb +21 -0
- data/glorify.gemspec +2 -1
- data/lib/glorify.rb +8 -7
- data/lib/glorify/extensions.rb +9 -0
- data/lib/glorify/template.rb +18 -0
- data/lib/glorify/version.rb +1 -1
- data/spec/glorify/blocks.md +1 -0
- data/spec/glorify/header.md +1 -0
- data/spec/glorify/ruby_blocks.md +5 -0
- data/spec/glorify/{ruby_blocks.erb → with_helper.erb} +0 -0
- data/spec/glorify_spec.rb +26 -3
- data/spec/spec_helper.rb +10 -0
- metadata +26 -9
- data/spec/glorify/blocks.erb +0 -1
- data/spec/glorify/header.erb +0 -1
- data/spec/glorify/layout.erb +0 -1
data/README.md
CHANGED
@@ -2,8 +2,11 @@
|
|
2
2
|
|
3
3
|
Sinatra helper to parse markdown with syntax highlighting like the pros
|
4
4
|
|
5
|
-
Renders via redcarpet with syntax highlighting thanks to
|
6
|
-
|
5
|
+
Renders markdown via redcarpet with syntax highlighting thanks to
|
6
|
+
[pygments.rb](https://github.com/tmm1/pygments.rb).
|
7
|
+
|
8
|
+
Able to use fenced code blocks like github, and includes a default pygments
|
9
|
+
stylesheet.
|
7
10
|
|
8
11
|
## install
|
9
12
|
|
@@ -19,28 +22,36 @@ gem 'sinatra'
|
|
19
22
|
gem 'glorify'
|
20
23
|
```
|
21
24
|
|
22
|
-
##
|
25
|
+
## using `Glorify::Template`
|
26
|
+
|
27
|
+
glorify comes with a tilt template for rendering markdown.
|
28
|
+
|
29
|
+
this allows you to override the default markdown renderer and use redcarpet2
|
30
|
+
with pygments.rb to highlight any code blocks within your view.
|
23
31
|
|
24
|
-
|
32
|
+
in order to do this, you will need to prefer the template class.
|
25
33
|
|
26
|
-
|
34
|
+
```ruby
|
35
|
+
Tilt.prefer Sinatra::Glorify::Template
|
36
|
+
```
|
27
37
|
|
28
|
-
|
38
|
+
then any views that render `markdown` will use Glorify::Template instead.
|
29
39
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
40
|
+
```ruby
|
41
|
+
register Sinatra::Glorify
|
42
|
+
get '/' do
|
43
|
+
markdown :a_view_with_code_blocks
|
44
|
+
end
|
45
|
+
```
|
34
46
|
|
35
|
-
|
47
|
+
## using the helper
|
36
48
|
|
37
|
-
|
38
|
-
|
39
|
-
```
|
49
|
+
if you want to stick with your current renderer and just render some code
|
50
|
+
blocks within your view, use the `glorify` helper method.
|
40
51
|
|
41
52
|
### classical app
|
42
53
|
|
43
|
-
simply `require 'glorify'` to use with a classic style sinatra app.
|
54
|
+
simply `require 'glorify'` to use the helper with a classic style sinatra app.
|
44
55
|
|
45
56
|
```ruby
|
46
57
|
require 'sinatra'
|
@@ -85,6 +96,9 @@ this is just a simple `erb` template, but you get the idea.
|
|
85
96
|
</html>
|
86
97
|
```
|
87
98
|
|
99
|
+
the default pygments stylesheet that comes with glorify is available at the
|
100
|
+
`/pygments.css` route
|
101
|
+
|
88
102
|
### on heroku
|
89
103
|
|
90
104
|
to make this work on heroku you'll have to use python2.6
|
data/example.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
$: << File.expand_path(".") + '/lib'
|
2
|
+
require 'sinatra'
|
3
|
+
require 'glorify'
|
4
|
+
require 'erb'
|
5
|
+
|
6
|
+
set :markdown, :layout_engine => :erb
|
7
|
+
set :views, File.dirname(__FILE__)
|
8
|
+
Tilt.prefer Sinatra::Glorify::Template
|
9
|
+
|
10
|
+
get "/" do
|
11
|
+
markdown :README
|
12
|
+
end
|
13
|
+
|
14
|
+
__END__
|
15
|
+
@@layout
|
16
|
+
<html>
|
17
|
+
<head>
|
18
|
+
<link href="/pygments.css" media="screen" rel="stylesheet" type="text/css">
|
19
|
+
</head>
|
20
|
+
<body><%= yield %></body>
|
21
|
+
</html>
|
data/glorify.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.email = ["zachary@zacharyscott.net"]
|
10
10
|
s.homepage = "http://github.com/zzak/glorify"
|
11
11
|
s.summary = %q{Sinatra helper to parse markdown with syntax highlighting like the pros}
|
12
|
-
s.description = %q{Renders via redcarpet with syntax highlighting thanks to pygments.rb. Able to use fenced code blocks like github, and includes a default pygments stylesheet.}
|
12
|
+
s.description = %q{Renders markdown via redcarpet with syntax highlighting thanks to pygments.rb. Able to use fenced code blocks like github, and includes a default pygments stylesheet.}
|
13
13
|
|
14
14
|
s.files = `git ls-files`.split("\n")
|
15
15
|
s.require_paths = ["lib"]
|
@@ -22,4 +22,5 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.add_development_dependency "minitest"
|
23
23
|
s.add_development_dependency "rack-test"
|
24
24
|
s.add_development_dependency "rake"
|
25
|
+
s.add_development_dependency "w3c_validators"
|
25
26
|
end
|
data/lib/glorify.rb
CHANGED
@@ -1,29 +1,30 @@
|
|
1
1
|
require "sinatra/base"
|
2
2
|
require "glorify/css"
|
3
|
+
require "glorify/extensions"
|
3
4
|
require "glorify/version"
|
4
5
|
require "glorify/renderer"
|
6
|
+
require "glorify/template"
|
5
7
|
|
6
8
|
module Sinatra
|
7
9
|
module Glorify
|
8
10
|
module Helpers
|
9
11
|
def glorify text
|
10
|
-
|
11
|
-
|
12
|
+
Redcarpet::Markdown.new(Glorify::Renderer.new,
|
13
|
+
Glorify::EXTENSIONS).render(text)
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
15
17
|
def self.registered(app)
|
16
|
-
app.set :glorify_extensions,
|
17
|
-
:autolink => true,
|
18
|
-
:no_intra_emphasis => true,
|
19
|
-
:fenced_code_blocks => true
|
20
|
-
}
|
18
|
+
app.set :glorify_extensions, Glorify::EXTENSIONS
|
21
19
|
app.helpers Glorify::Helpers
|
20
|
+
|
22
21
|
app.get '/pygments.css' do
|
22
|
+
content_type 'text/css'
|
23
23
|
glorify_css
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
Tilt.register Glorify::Template, 'markdown', 'mkd', 'md'
|
28
29
|
register Glorify
|
29
30
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'redcarpet' unless defined? Redcarpet
|
2
|
+
require 'tilt/template'
|
3
|
+
|
4
|
+
module Sinatra
|
5
|
+
module Glorify
|
6
|
+
class Template < Tilt::Template
|
7
|
+
def prepare
|
8
|
+
@engine = Redcarpet::Markdown.new(Glorify::Renderer.new,
|
9
|
+
Glorify::EXTENSIONS)
|
10
|
+
@output = nil
|
11
|
+
end
|
12
|
+
|
13
|
+
def evaluate(scope, locals, &block)
|
14
|
+
@output ||= @engine.render(data)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/glorify/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
```puts "Hello, world!"```
|
@@ -0,0 +1 @@
|
|
1
|
+
# a sip of glory
|
File without changes
|
data/spec/glorify_spec.rb
CHANGED
@@ -8,7 +8,8 @@ describe Sinatra::Glorify do
|
|
8
8
|
|
9
9
|
it "should parse a header" do
|
10
10
|
mock_app do
|
11
|
-
|
11
|
+
Tilt.prefer Sinatra::Glorify::Template
|
12
|
+
get('/') { markdown :header }
|
12
13
|
end
|
13
14
|
expected = "<h1>a sip of glory</h1>"
|
14
15
|
get('/')
|
@@ -18,7 +19,8 @@ describe Sinatra::Glorify do
|
|
18
19
|
|
19
20
|
it "should parse code blocks" do
|
20
21
|
mock_app do
|
21
|
-
|
22
|
+
Tilt.prefer Sinatra::Glorify::Template
|
23
|
+
get('/') { markdown :blocks }
|
22
24
|
end
|
23
25
|
expected = "<p><code>puts "Hello, world!"</code></p>"
|
24
26
|
get('/')
|
@@ -27,17 +29,38 @@ describe Sinatra::Glorify do
|
|
27
29
|
end
|
28
30
|
|
29
31
|
it "should parse ruby blocks" do
|
32
|
+
mock_app do
|
33
|
+
get('/') do
|
34
|
+
Tilt.prefer Sinatra::Glorify::Template
|
35
|
+
markdown :ruby_blocks
|
36
|
+
end
|
37
|
+
end
|
38
|
+
get('/')
|
39
|
+
assert ok?
|
40
|
+
refute_empty Nokogiri::HTML(body).search("//div[@class = 'highlight']/pre")
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should parse with a helper" do
|
30
44
|
mock_app do
|
31
45
|
get('/') do
|
32
46
|
@some_code = File.open(
|
33
47
|
File.expand_path('../glorify/some_code.md', __FILE__),
|
34
48
|
"rb"
|
35
49
|
).read
|
36
|
-
erb :
|
50
|
+
erb :with_helper
|
37
51
|
end
|
38
52
|
end
|
39
53
|
get('/')
|
40
54
|
assert ok?
|
41
55
|
refute_empty Nokogiri::HTML(body).search("//div[@class = 'highlight']/pre")
|
42
56
|
end
|
57
|
+
|
58
|
+
it "should include a valid css helper for pygments" do
|
59
|
+
mock_app
|
60
|
+
get('/pygments.css')
|
61
|
+
assert ok?
|
62
|
+
|
63
|
+
assert_match /text\/css/, content_type
|
64
|
+
assert_empty validate_css(body).errors
|
65
|
+
end
|
43
66
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -8,6 +8,7 @@ require 'nokogiri'
|
|
8
8
|
require 'rack/test'
|
9
9
|
require 'sinatra/base'
|
10
10
|
require 'erb'
|
11
|
+
require 'w3c_validators'
|
11
12
|
|
12
13
|
Sinatra::Base.set :environment, :test
|
13
14
|
Sinatra::Base.set :views, File.expand_path('../glorify', __FILE__)
|
@@ -15,6 +16,7 @@ Sinatra::Base.register Sinatra::Glorify
|
|
15
16
|
|
16
17
|
class MiniTest::Spec
|
17
18
|
include Rack::Test::Methods
|
19
|
+
include W3CValidators
|
18
20
|
|
19
21
|
def mock_app(base=Sinatra::Base, &block)
|
20
22
|
@app = Sinatra.new(base, &block)
|
@@ -31,4 +33,12 @@ class MiniTest::Spec
|
|
31
33
|
def ok?
|
32
34
|
last_response.ok?
|
33
35
|
end
|
36
|
+
|
37
|
+
def content_type
|
38
|
+
last_response.headers['Content-Type']
|
39
|
+
end
|
40
|
+
|
41
|
+
def validate_css(css)
|
42
|
+
CSSValidator.new.validate_text css
|
43
|
+
end
|
34
44
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glorify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Zachary Scott
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2012-
|
20
|
+
date: 2012-06-15 00:00:00 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: sinatra
|
@@ -118,7 +118,21 @@ dependencies:
|
|
118
118
|
version: "0"
|
119
119
|
type: :development
|
120
120
|
version_requirements: *id007
|
121
|
-
|
121
|
+
- !ruby/object:Gem::Dependency
|
122
|
+
name: w3c_validators
|
123
|
+
prerelease: false
|
124
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
125
|
+
none: false
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
hash: 3
|
130
|
+
segments:
|
131
|
+
- 0
|
132
|
+
version: "0"
|
133
|
+
type: :development
|
134
|
+
version_requirements: *id008
|
135
|
+
description: Renders markdown via redcarpet with syntax highlighting thanks to pygments.rb. Able to use fenced code blocks like github, and includes a default pygments stylesheet.
|
122
136
|
email:
|
123
137
|
- zachary@zacharyscott.net
|
124
138
|
executables: []
|
@@ -132,16 +146,19 @@ files:
|
|
132
146
|
- Gemfile
|
133
147
|
- README.md
|
134
148
|
- Rakefile
|
149
|
+
- example.rb
|
135
150
|
- glorify.gemspec
|
136
151
|
- lib/glorify.rb
|
137
152
|
- lib/glorify/css.rb
|
153
|
+
- lib/glorify/extensions.rb
|
138
154
|
- lib/glorify/renderer.rb
|
155
|
+
- lib/glorify/template.rb
|
139
156
|
- lib/glorify/version.rb
|
140
|
-
- spec/glorify/blocks.
|
141
|
-
- spec/glorify/header.
|
142
|
-
- spec/glorify/
|
143
|
-
- spec/glorify/ruby_blocks.erb
|
157
|
+
- spec/glorify/blocks.md
|
158
|
+
- spec/glorify/header.md
|
159
|
+
- spec/glorify/ruby_blocks.md
|
144
160
|
- spec/glorify/some_code.md
|
161
|
+
- spec/glorify/with_helper.erb
|
145
162
|
- spec/glorify_spec.rb
|
146
163
|
- spec/spec_helper.rb
|
147
164
|
homepage: http://github.com/zzak/glorify
|
data/spec/glorify/blocks.erb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
<%= glorify('```puts "Hello, world!"```') %>
|
data/spec/glorify/header.erb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
<%= glorify("#a sip of glory") %>
|
data/spec/glorify/layout.erb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
<%= yield %>
|