rembrandt 0.0.2 → 0.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 586a9a58bb833d6fedb3bba1861445ff3c2b8b41
4
- data.tar.gz: 106a4f5990356d6ed2ff8aec46f489b8557640a6
3
+ metadata.gz: a112457eb1b4df68b42a90a4776fc11c5eee535a
4
+ data.tar.gz: 106843ea850f71e800213a19cc52158df22b483b
5
5
  SHA512:
6
- metadata.gz: 74f1d4257baafabe27a16f1440c03c655692caaf18c0dd31d3d54a140c11dd6864dd047f704d353ed004e8019d621ebe7a11342ed0a1e5695c2d1d19b243d316
7
- data.tar.gz: 992527bc9dbb36a77f8bf8e22b0add05707a9d9e95cc1dfe6ec584b91f87e153b16050989ef8211c8a08164fe506adb3f9966f2316d86750e68c192adea45441
6
+ metadata.gz: 1ef0e17c8794f1d61522813f4e838ad9d1c43fe4a6eb43e8b04cbd647e423d4ffd904c350f334ca066333655b9ba240392f7287ccd4c66b673f632a5e95a4b85
7
+ data.tar.gz: d90d7325af4d8a74478f69fba12e6c73c2c513a7cac4889fbdcd1cf973c8093e9dcbb8f555d074c1a0561576fd34c6174979f5e85298d03817fcde693437d599
@@ -5,10 +5,19 @@ module Rembrandt
5
5
  tmp_file = File.open(".colorize_temp", "w")
6
6
  tmp_file.write(input)
7
7
  tmp_file.close
8
- output = `pygmentize -f html -l #{language} .colorize_temp`
8
+ output = `pygmentize -f html -l #{language} -O encoding=utf8 .colorize_temp`
9
9
  `rm .colorize_temp`
10
10
  output
11
11
  end
12
+
13
+ def self.available?
14
+ present_on_system?
15
+ end
16
+
17
+ def self.present_on_system?
18
+ !`which pygmentize`.empty?
19
+ end
20
+
12
21
  end
13
22
  end
14
23
  end
@@ -10,6 +10,11 @@ module Rembrandt
10
10
  def url
11
11
  @url ||= URI.parse('http://pygmentize.herokuapp.com/')
12
12
  end
13
+
14
+ def self.available?
15
+ site = Net::HTTP.new('pygmentize.herokuapp.com', 80)
16
+ site.request_head('/').code == "200"
17
+ end
13
18
  end
14
19
  end
15
20
  end
@@ -5,15 +5,15 @@ module Rembrandt
5
5
  attr_reader :engine
6
6
 
7
7
  def initialize(input_engine = nil)
8
- @engine = (input_engine || default_engine).new
8
+ @engine = (input_engine || autoselect_engine).new
9
9
  end
10
10
 
11
11
  def default_language
12
12
  "ruby"
13
13
  end
14
14
 
15
- def default_engine
16
- Engines::Pygmentize
15
+ def autoselect_engine
16
+ [Engines::Pygmentize, Engines::WebService].detect(&:available?)
17
17
  end
18
18
 
19
19
  def highlight(input, language = default_language)
@@ -1,3 +1,3 @@
1
1
  module Rembrandt
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/rembrandt.gemspec CHANGED
@@ -24,4 +24,5 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "guard-minitest"
25
25
  spec.add_development_dependency "vcr"
26
26
  spec.add_development_dependency "webmock"
27
+ spec.add_development_dependency "mocha"
27
28
  end
@@ -15,4 +15,9 @@ class EnginesPygmentizeTest < CodeHighlightTest
15
15
  def test_it_highlights
16
16
  assert_highlight 'ruby_sample_1.rb', 'ruby'
17
17
  end
18
+
19
+ def test_it_is_available_when_present_on_the_local_system
20
+ Rembrandt::Engines::Pygmentize.stubs(:present_on_system?).returns(true)
21
+ assert Rembrandt::Engines::Pygmentize.available?
22
+ end
18
23
  end
@@ -17,4 +17,10 @@ class EnginesPygmentizeTest < CodeHighlightTest
17
17
  assert_highlight 'ruby_sample_1.rb', 'ruby'
18
18
  end
19
19
  end
20
+
21
+ def test_it_is_available_when_the_website_responds
22
+ VCR.use_cassette('web_engine_is_accessible') do
23
+ assert Rembrandt::Engines::WebService.available?
24
+ end
25
+ end
20
26
  end
@@ -1,5 +1,5 @@
1
1
  require './test/test_helper'
2
- require './lib/rembrandt/highlighter'
2
+ require './lib/rembrandt'
3
3
 
4
4
  class HighlighterTest < CodeHighlightTest
5
5
  def test_it_exists
@@ -38,4 +38,19 @@ class HighlighterTest < CodeHighlightTest
38
38
  stubbed_highlighter = Rembrandt::Highlighter.new(StubEngine)
39
39
  assert_equal "stub highlight", stubbed_highlighter.highlight("hello", "ruby")
40
40
  end
41
+
42
+ def test_it_defaults_to_pygmentize_if_available
43
+ expected_engine = Rembrandt::Engines::Pygmentize
44
+ expected_engine.stubs(:available?).returns(true)
45
+ lighter = Rembrandt::Highlighter.new
46
+ assert_equal expected_engine, lighter.engine.class
47
+ end
48
+
49
+ def test_it_uses_the_web_engine_if_pygmentize_is_not_available
50
+ Rembrandt::Engines::Pygmentize.stubs(:available?).returns(false)
51
+ Rembrandt::Engines::WebService.stubs(:available?).returns(true)
52
+ expected_engine = Rembrandt::Engines::WebService
53
+ lighter = Rembrandt::Highlighter.new
54
+ assert_equal expected_engine, lighter.engine.class
55
+ end
41
56
  end
@@ -0,0 +1,34 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: head
5
+ uri: http://pygmentize.herokuapp.com/
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Content-Length:
20
+ - '1885'
21
+ Content-Type:
22
+ - text/html; charset=utf-8
23
+ Date:
24
+ - Mon, 23 Dec 2013 01:24:09 GMT
25
+ Server:
26
+ - Werkzeug/0.8.1 Python/2.7.1
27
+ Connection:
28
+ - keep-alive
29
+ body:
30
+ encoding: UTF-8
31
+ string: ''
32
+ http_version:
33
+ recorded_at: Mon, 23 Dec 2013 01:24:09 GMT
34
+ recorded_with: VCR 2.8.0
data/test/test_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'minitest/autorun'
2
2
  require 'minitest/pride'
3
3
  require 'vcr'
4
+ require 'mocha/setup'
4
5
 
5
6
  VCR.configure do |c|
6
7
  c.cassette_library_dir = 'test/support/vcr_cassettes'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rembrandt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Casimir
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-22 00:00:00.000000000 Z
11
+ date: 2013-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: mocha
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  description: A library for generating and storing syntax-highlighted code
98
112
  email:
99
113
  - jeff@casimircreative.com
@@ -123,6 +137,7 @@ files:
123
137
  - test/support/ruby_sample_1.rb
124
138
  - test/support/ruby_sample_1.rb.html
125
139
  - test/support/vcr_cassettes/web_engine_highlights_ruby_sample_1.yml
140
+ - test/support/vcr_cassettes/web_engine_is_accessible.yml
126
141
  - test/test_helper.rb
127
142
  homepage: http://github.com/jcasimir/rembrandt
128
143
  licenses:
@@ -158,4 +173,5 @@ test_files:
158
173
  - test/support/ruby_sample_1.rb
159
174
  - test/support/ruby_sample_1.rb.html
160
175
  - test/support/vcr_cassettes/web_engine_highlights_ruby_sample_1.yml
176
+ - test/support/vcr_cassettes/web_engine_is_accessible.yml
161
177
  - test/test_helper.rb