glorify 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,7 +5,7 @@ require "glorify/version"
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "glorify"
7
7
  s.version = Sinatra::Glorify::VERSION
8
- s.authors = ["Zachary Scott"]
8
+ s.authors = ["Zachary Scott", "Jonathan Stott"]
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}
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.require_paths = ["lib"]
16
16
 
17
17
  s.add_runtime_dependency "sinatra"
18
- s.add_runtime_dependency "redcarpet", "~> 1.0"
18
+ s.add_runtime_dependency "redcarpet", "~> 2.0"
19
19
  s.add_runtime_dependency "albino"
20
20
  s.add_runtime_dependency "nokogiri"
21
21
  end
@@ -1,19 +1,15 @@
1
1
  require "sinatra/base"
2
2
  require "glorify/version"
3
- require "redcarpet"
4
- require "albino"
5
- require "nokogiri"
6
- require "net/http"
3
+ require "glorify/renderer"
7
4
 
8
5
  module Sinatra
9
6
  module Glorify
10
7
  module Helpers
11
8
  def glorify text
12
- options = [:filter_html, :autolink,
13
- :no_intraemphasis, :fenced_code, :gh_blockcode]
14
- highlighter(Redcarpet.new(text, *options).to_html)
15
- end
16
-
9
+ rndr = Glorify::Renderer.new(:use_albino => settings.use_albino)
10
+ Redcarpet::Markdown.new(rndr, settings.glorify_extensions).render(text)
11
+ end
12
+
17
13
  def glorify_css
18
14
  <<-css
19
15
  .hll { background-color: #ffffcc }
@@ -78,42 +74,15 @@ module Sinatra
78
74
  .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
79
75
  css
80
76
  end
81
-
82
- private
83
- def highlighter html
84
- doc = Nokogiri::HTML(html)
85
- doc.search("//pre[@lang]").each do |pre|
86
- pre.replace colorize(pre.text.rstrip, pre[:lang])
87
- end
88
- doc.search('pre').each do |pre|
89
- pre.children.each do |c|
90
- c.parent = pre.parent
91
- end
92
- pre.remove
93
- end
94
- doc.search('div').each do |div|
95
- if div['class'] == 'highlight'
96
- div.replace(Nokogiri.make("<pre>#{div.to_html}</pre>"))
97
- end
98
- end
99
- doc.to_s
100
- end
101
-
102
- def colorize(code, lang)
103
- if(pygmentize?)
104
- Albino.colorize(code, lang)
105
- else
106
- Net::HTTP.post_form(URI.parse('http://pygments.appspot.com/'),
107
- {'code'=>code, 'lang'=>lang}).body
108
- end
109
- end
110
-
111
- def pygmentize?
112
- system 'pygmentize -V'
113
- end
114
77
  end
115
-
78
+
116
79
  def self.registered(app)
80
+ app.set :use_albino, proc { system 'pygmentize -V' }
81
+ app.set :glorify_extensions, { :filter_html => true,
82
+ :autolink => true,
83
+ :no_intra_emphasis => true,
84
+ :fenced_code_blocks => true
85
+ }
117
86
  app.helpers Glorify::Helpers
118
87
  app.get '/pygments.css' do
119
88
  glorify_css
@@ -0,0 +1,25 @@
1
+ require "redcarpet"
2
+ require "albino"
3
+ require "net/http"
4
+
5
+ module Sinatra
6
+ module Glorify
7
+ class Renderer < Redcarpet::Render::HTML
8
+ attr_reader :use_albino
9
+
10
+ def initialize(options={})
11
+ @use_albino = options.fetch(:use_albino, true)
12
+ super
13
+ end
14
+
15
+ def block_code(code, lang)
16
+ if use_albino
17
+ Albino.colorize(code, lang)
18
+ else
19
+ Net::HTTP.post_form(URI.parse('http://pygments.appspot.com/'),
20
+ {'code'=>code, 'lang'=>lang}).body
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,5 +1,5 @@
1
1
  module Sinatra
2
2
  module Glorify
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,21 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glorify
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Zachary Scott
14
+ - Jonathan Stott
14
15
  autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2012-01-11 00:00:00 Z
19
+ date: 2012-01-29 00:00:00 Z
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: sinatra
@@ -39,11 +40,11 @@ dependencies:
39
40
  requirements:
40
41
  - - ~>
41
42
  - !ruby/object:Gem::Version
42
- hash: 15
43
+ hash: 3
43
44
  segments:
44
- - 1
45
+ - 2
45
46
  - 0
46
- version: "1.0"
47
+ version: "2.0"
47
48
  type: :runtime
48
49
  version_requirements: *id002
49
50
  - !ruby/object:Gem::Dependency
@@ -94,6 +95,7 @@ files:
94
95
  - example/subclassed_app.rb
95
96
  - glorify.gemspec
96
97
  - lib/glorify.rb
98
+ - lib/glorify/renderer.rb
97
99
  - lib/glorify/version.rb
98
100
  homepage: http://github.com/zzak/glorify
99
101
  licenses: []