rack-blogengine 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -1
- data/Gemfile +0 -2
- data/Rakefile +4 -4
- data/assets/config.yml +5 -1
- data/assets/content_error.content +4 -0
- data/assets/date_error.content +6 -0
- data/assets/title_error.content +6 -0
- data/features/support/env.rb +17 -1
- data/lib/rack/blogengine.rb +5 -0
- data/lib/rack/blogengine/command_line_interface.rb +35 -25
- data/lib/rack/blogengine/document_parser.rb +45 -4
- data/lib/rack/blogengine/methods.rb +1 -1
- data/lib/rack/blogengine/operator.rb +2 -5
- data/lib/rack/blogengine/version.rb +1 -1
- data/rack-blogengine.gemspec +3 -0
- data/spec/spec_helper.rb +16 -1
- data/test/rack/blogengine/command_line_interface_test.rb +22 -10
- data/test/rack/blogengine/document_parser_test.rb +65 -2
- data/test/test_helper.rb +18 -3
- metadata +43 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f534d53e3f8a5de64f425c908071cc8065f4a7b3
|
4
|
+
data.tar.gz: 9c43691dc1d6f4afbe44f92712e2cbd3ceb77fcb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d713e85703385cc5302c553e39c03c03c3f9ee2210d680e78c045597a7e6f26d734148dcb317c8670dcef21daf92a6dd04b100d507b7db7691d30bb68b5bd5f1
|
7
|
+
data.tar.gz: 368350df768dd879a29436e1847f7bacb900b9071385d4512575796ec663246bcade7a112d09fd6ed83e14942980638f8b83430c6c7400f9545f72f0f10da150
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -5,14 +5,14 @@ require 'cucumber/rake/task'
|
|
5
5
|
|
6
6
|
namespace :test do
|
7
7
|
Rake::TestTask.new(:unit) do |t|
|
8
|
-
t.libs << "test"
|
8
|
+
t.libs << "test" << "bin" << "ext"
|
9
9
|
t.test_files = FileList['test/**/*_test.rb']
|
10
10
|
t.verbose = true
|
11
11
|
end
|
12
12
|
|
13
13
|
Rake::TestTask.new(:spec) do |t|
|
14
|
-
t.libs << "spec"
|
15
|
-
t.test_files = FileList['spec
|
14
|
+
t.libs << "spec" << "bin" << "ext"
|
15
|
+
t.test_files = FileList['spec/**/*_spec.rb']
|
16
16
|
t.verbose = true
|
17
17
|
end
|
18
18
|
|
@@ -25,4 +25,4 @@ task :default do
|
|
25
25
|
Rake::Task['test:unit'].invoke
|
26
26
|
# Rake::Task['test:spec'].invoke
|
27
27
|
Rake::Task['test:feature'].invoke
|
28
|
-
end
|
28
|
+
end
|
data/assets/config.yml
CHANGED
data/features/support/env.rb
CHANGED
@@ -1,9 +1,25 @@
|
|
1
|
+
require 'simplecov'
|
1
2
|
require 'coveralls'
|
2
|
-
|
3
|
+
|
4
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
5
|
+
SimpleCov::Formatter::HTMLFormatter,
|
6
|
+
Coveralls::SimpleCov::Formatter
|
7
|
+
]
|
8
|
+
|
9
|
+
SimpleCov.start do
|
10
|
+
project_name 'rack-blogengine'
|
11
|
+
add_filter '/test/'
|
12
|
+
add_filter '/pkg/'
|
13
|
+
add_filter '/spec/'
|
14
|
+
add_filter '/features/'
|
15
|
+
add_filter '/doc/'
|
16
|
+
add_filter '/assets/'
|
17
|
+
end if ENV["COVERAGE"]
|
3
18
|
|
4
19
|
require 'capybara/cucumber'
|
5
20
|
require 'rack/blogengine'
|
6
21
|
|
7
22
|
Rack::Blogengine.documents = [{ html: '<!DOCTYPE html><body><h2>index</h2></body></html>',
|
8
23
|
path: '/' }]
|
24
|
+
|
9
25
|
Capybara.app = Rack::Blogengine::Application
|
data/lib/rack/blogengine.rb
CHANGED
@@ -7,6 +7,11 @@ require 'rack/blogengine/command_line_interface'
|
|
7
7
|
require 'rack/blogengine/operator'
|
8
8
|
require 'rack/blogengine/methods'
|
9
9
|
|
10
|
+
# require third party libaries
|
11
|
+
require 'pathname'
|
12
|
+
require 'pygments'
|
13
|
+
require 'nokogiri'
|
14
|
+
|
10
15
|
module Rack
|
11
16
|
#
|
12
17
|
# BlogEngine Module used for namespacing
|
@@ -25,37 +25,45 @@ module Rack
|
|
25
25
|
print 'Specify a targetfolder!'
|
26
26
|
else
|
27
27
|
if Dir.exists?("#{target}")
|
28
|
-
system("cd #{target}")
|
29
28
|
config = get_config(target)
|
29
|
+
app = build_rack_app(target, config)
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
use Rack::ShowExceptions
|
38
|
-
use Rack::Lint
|
31
|
+
Rack::Server.start(app: app, Port: config['Port'], server: config['Server'])
|
32
|
+
else
|
33
|
+
print "#{target} is not a folder!"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
39
37
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
38
|
+
#
|
39
|
+
# Build rack app via Rack::Builder
|
40
|
+
# @param target String The Targetfolder where all relevant files are located
|
41
|
+
# @param config [type] Config via get_config -> parses in config.yml
|
42
|
+
#
|
43
|
+
# @return [type] [description]
|
44
|
+
def build_rack_app(target, config)
|
45
|
+
app = Rack::Builder.new do
|
46
|
+
map '/assets' do
|
47
|
+
run Rack::Directory.new("#{target}/assets")
|
48
|
+
end
|
45
49
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
# Global Variable replaced with module instance variable
|
50
|
-
Rack::Blogengine.documents = DocumentParser.parse_in_documents(target)
|
50
|
+
# use Rack::CommonLogger
|
51
|
+
# use Rack::ShowExceptions
|
52
|
+
# use Rack::Lint
|
51
53
|
|
52
|
-
|
54
|
+
if config['Usage'] == 'yes'
|
55
|
+
use Rack::Auth::Basic, 'Protected Area' do |username, password|
|
56
|
+
username == config['Username'] && password == config['Password']
|
53
57
|
end
|
54
|
-
|
55
|
-
Rack::Server.start(app: app, Port: config['Port'], server: config['Server'])
|
56
|
-
else
|
57
|
-
print "#{target} is not a folder!"
|
58
58
|
end
|
59
|
+
|
60
|
+
# Parse in all Documents in cli.run(target)
|
61
|
+
# -> $documents are parsed in only once and then cached via a global variable
|
62
|
+
# Todo Cache without global variable?
|
63
|
+
# Global Variable replaced with module instance variable
|
64
|
+
Rack::Blogengine.documents = DocumentParser.parse_in_documents(target)
|
65
|
+
|
66
|
+
run Application
|
59
67
|
end
|
60
68
|
end
|
61
69
|
|
@@ -126,8 +134,10 @@ module Rack
|
|
126
134
|
username = config_yaml['HTTPauth']['username'].to_s.strip
|
127
135
|
password = config_yaml['HTTPauth']['password'].to_s.strip
|
128
136
|
usage = config_yaml['HTTPauth']['usage']
|
137
|
+
pygments_style = config_yaml['Pygments']['style']
|
138
|
+
pygments_seperator = config_yaml['Pygments']['seperator']
|
129
139
|
|
130
|
-
{ 'Port' => port, 'Server' => server, 'Username' => username, 'Password' => password, 'Usage' => usage }
|
140
|
+
Rack::Blogengine.config = { 'Port' => port, 'Server' => server, 'Username' => username, 'Password' => password, 'Usage' => usage, 'pygments_style' => pygments_style, 'pygments_seperator' => pygments_seperator}
|
131
141
|
end
|
132
142
|
end
|
133
143
|
end
|
@@ -10,7 +10,7 @@ module Rack
|
|
10
10
|
#
|
11
11
|
module DocumentParser
|
12
12
|
class << self
|
13
|
-
attr_accessor :title, :content, :date
|
13
|
+
attr_accessor :title, :content, :date, :target
|
14
14
|
end
|
15
15
|
|
16
16
|
# Parse in .content Documents.
|
@@ -39,7 +39,8 @@ module Rack
|
|
39
39
|
documents << @document
|
40
40
|
end
|
41
41
|
|
42
|
-
|
42
|
+
generate_highlight_css(@target)
|
43
|
+
sort(documents)
|
43
44
|
|
44
45
|
# Has to exec operator after all docs were read,
|
45
46
|
# so documents are available for operators (list all docs, etc...)
|
@@ -68,7 +69,7 @@ module Rack
|
|
68
69
|
|
69
70
|
if contentblock.include? '[title]:'
|
70
71
|
contentblock['[title]:'] = ''
|
71
|
-
if contentblock.empty?
|
72
|
+
if contentblock.strip.empty?
|
72
73
|
raise "Title in #{file} is empty"
|
73
74
|
else
|
74
75
|
@title = contentblock.strip
|
@@ -77,7 +78,7 @@ module Rack
|
|
77
78
|
|
78
79
|
if contentblock.include? '[content]:'
|
79
80
|
contentblock['[content]:'] = ''
|
80
|
-
if contentblock.empty?
|
81
|
+
if contentblock.strip.empty?
|
81
82
|
raise "Content in #{file} is empty"
|
82
83
|
else
|
83
84
|
@content = contentblock.strip
|
@@ -110,6 +111,34 @@ module Rack
|
|
110
111
|
content.split('[/close]')
|
111
112
|
end
|
112
113
|
|
114
|
+
def self.get_highlight_code(content, seperator)
|
115
|
+
html = ::Nokogiri::HTML(content)
|
116
|
+
klass = html.css(seperator).attr('class')
|
117
|
+
brush = klass.to_s.split(':')[1]
|
118
|
+
|
119
|
+
highlight_code = { text: html.css(seperator).text, brush: brush }
|
120
|
+
end
|
121
|
+
|
122
|
+
def self.highlight(code, language, target)
|
123
|
+
if language
|
124
|
+
Pygments.highlight(code, :lexer => language.to_sym)
|
125
|
+
else
|
126
|
+
code
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
def self.generate_highlight_css(target)
|
131
|
+
cli = Rack::Blogengine::CommandLineInterface.new
|
132
|
+
system("rm #{target}/assets/style/highlight.css") if ::File.exist?("#{target}/assets/style/highlight.css")
|
133
|
+
|
134
|
+
cli.send(:setup, "highlight.css", "#{target}/assets/style", false)
|
135
|
+
|
136
|
+
path = "#{target}/assets/style"
|
137
|
+
|
138
|
+
css = Pygments.css(:style => Rack::Blogengine.config["pygments_style"])
|
139
|
+
::File.open("#{path}/highlight.css", 'w') { |file| file.write(css) }
|
140
|
+
end
|
141
|
+
|
113
142
|
# Replace layout placeholder with content from .content file
|
114
143
|
# @param [String] layout
|
115
144
|
# @param [String] title
|
@@ -122,6 +151,18 @@ module Rack
|
|
122
151
|
html.gsub! '{title}', title
|
123
152
|
html['{content}'] = content
|
124
153
|
html.gsub! '{date}', date.strftime('%d.%m.%Y')
|
154
|
+
|
155
|
+
html = Nokogiri::HTML(html)
|
156
|
+
seperator = Rack::Blogengine.config["pygments_seperator"]
|
157
|
+
|
158
|
+
html.css(seperator).map do |html|
|
159
|
+
highlight_code = get_highlight_code(html.to_s, seperator)
|
160
|
+
highlighted = highlight(highlight_code[:text], highlight_code[:brush], @target)
|
161
|
+
|
162
|
+
html.replace(highlighted)
|
163
|
+
end
|
164
|
+
|
165
|
+
return html.to_s
|
125
166
|
end
|
126
167
|
|
127
168
|
# Sort documents array by date of each documenthash
|
@@ -6,11 +6,8 @@
|
|
6
6
|
#
|
7
7
|
class Operator
|
8
8
|
def initialize(target)
|
9
|
-
|
10
|
-
|
11
|
-
next if item == '.' || item == '..' || extension != 'rb'
|
12
|
-
require "#{target}/operator/#{item}"
|
13
|
-
end
|
9
|
+
target = Pathname.new("#{target}").realpath.to_s
|
10
|
+
Dir["#{target}/operator/*.rb"].each {|file| require file }
|
14
11
|
|
15
12
|
extend UserOperator # load user operators
|
16
13
|
end
|
data/rack-blogengine.gemspec
CHANGED
@@ -22,6 +22,9 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "cucumber"
|
24
24
|
spec.add_development_dependency "capybara"
|
25
|
+
spec.add_development_dependency "coveralls"
|
25
26
|
|
26
27
|
spec.add_runtime_dependency "rack"
|
28
|
+
spec.add_runtime_dependency "pygments.rb"
|
29
|
+
spec.add_runtime_dependency "nokogiri"
|
27
30
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -21,8 +21,23 @@
|
|
21
21
|
# end
|
22
22
|
# =================================
|
23
23
|
|
24
|
+
require 'simplecov'
|
24
25
|
require 'coveralls'
|
25
|
-
|
26
|
+
|
27
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
28
|
+
SimpleCov::Formatter::HTMLFormatter,
|
29
|
+
Coveralls::SimpleCov::Formatter
|
30
|
+
]
|
31
|
+
|
32
|
+
SimpleCov.start do
|
33
|
+
project_name 'rack-blogengine'
|
34
|
+
add_filter '/test/'
|
35
|
+
add_filter '/pkg/'
|
36
|
+
add_filter '/spec/'
|
37
|
+
add_filter '/features/'
|
38
|
+
add_filter '/doc/'
|
39
|
+
add_filter '/assets/'
|
40
|
+
end if ENV["COVERAGE"]
|
26
41
|
|
27
42
|
# Minitest
|
28
43
|
require 'minitest/autorun'
|
@@ -61,22 +61,34 @@ class CommandLineInterfaceTest < MiniTest::Unit::TestCase
|
|
61
61
|
# def test_run
|
62
62
|
# capture_stdout { @cli.send(:generate, testpath) }
|
63
63
|
|
64
|
-
#
|
65
|
-
|
66
|
-
# thr1 = Thread.new do
|
64
|
+
# server_thread = Thread.new do
|
67
65
|
# capture_stdout { @cli.send(:run, testpath) }
|
68
66
|
# end
|
69
67
|
|
70
|
-
#
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
# end
|
68
|
+
# sleep(2) # wait a sec for the server to be booted
|
69
|
+
|
70
|
+
# Thread.list.each {|t| t.exit }
|
71
|
+
# Thread.list.each {|t| p t }
|
75
72
|
|
76
|
-
#
|
77
|
-
# threads.each { |thr| thr.join }
|
73
|
+
# system("rm -rf #{testpath}")
|
78
74
|
# end
|
79
75
|
|
76
|
+
def test_build_rack_app
|
77
|
+
capture_stdout { @cli.send(:generate, testpath) }
|
78
|
+
|
79
|
+
config = @cli.send(:get_config, testpath)
|
80
|
+
config['Usage'] = 'yes'
|
81
|
+
config["Username"] = 'testUser'
|
82
|
+
config['Password'] = 'test'
|
83
|
+
|
84
|
+
app = @cli.send(:build_rack_app, testpath, config)
|
85
|
+
|
86
|
+
assert_instance_of(Rack::Builder, app, 'App should be of class Rack::Builder')
|
87
|
+
# @todo : add better tests
|
88
|
+
|
89
|
+
system("rm -rf #{testpath}")
|
90
|
+
end
|
91
|
+
|
80
92
|
def test_get_config
|
81
93
|
capture_stdout { @cli.send(:generate, testpath) }
|
82
94
|
config = @cli.send(:get_config, testpath)
|
@@ -11,12 +11,13 @@ class DocumentParserTest < MiniTest::Unit::TestCase
|
|
11
11
|
def setup
|
12
12
|
cli = Rack::Blogengine::CommandLineInterface.new
|
13
13
|
capture_stdout { cli.generate(testpath) }
|
14
|
-
|
15
|
-
@documents = Rack::Blogengine::DocumentParser.parse_in_documents(testpath)
|
14
|
+
cli.send(:get_config, testpath)
|
16
15
|
end
|
17
16
|
|
18
17
|
# Test DocumentParser.parse_in_documents(path)
|
19
18
|
def test_parse_in_documents
|
19
|
+
@documents = Rack::Blogengine::DocumentParser.parse_in_documents(testpath)
|
20
|
+
|
20
21
|
@documents.each do |document|
|
21
22
|
# Check Hash keys
|
22
23
|
assert(document.key?(:html), 'Documents should contain a path')
|
@@ -39,12 +40,27 @@ class DocumentParserTest < MiniTest::Unit::TestCase
|
|
39
40
|
assert(html.include?(date.strftime('%d.%m.%Y')), 'Parsed and filled in HTML should contain Date')
|
40
41
|
end
|
41
42
|
|
43
|
+
def test_fill_file_contents_with_pygments
|
44
|
+
layout_file = ::File.open("#{testpath}/assets/layout/layout.html", 'r')
|
45
|
+
layout = layout_file.read
|
46
|
+
title = 'testtitle'
|
47
|
+
content = '<pre class="brush:ruby">def TestMethod</pre>'
|
48
|
+
date = Date.new
|
49
|
+
|
50
|
+
html = Rack::Blogengine::DocumentParser.fill_file_contents(layout, title, content, date)
|
51
|
+
|
52
|
+
assert(html.include?(title), 'Parsed and filled in HTML should contain Title')
|
53
|
+
assert(html.include?("highlight"), 'Parsed and filled in HTML with pygment handling should contain .highlight class')
|
54
|
+
assert(html.include?(date.strftime('%d.%m.%Y')), 'Parsed and filled in HTML should contain Date')
|
55
|
+
end
|
56
|
+
|
42
57
|
# Test DocumentParser.get_file_contents('file.content')
|
43
58
|
def test_get_file_contents
|
44
59
|
Rack::Blogengine::DocumentParser.title = ''
|
45
60
|
Rack::Blogengine::DocumentParser.content = ''
|
46
61
|
Rack::Blogengine::DocumentParser.date = ''
|
47
62
|
|
63
|
+
Rack::Blogengine::DocumentParser.target = "#{Rack::Blogengine.root}/assets"
|
48
64
|
Rack::Blogengine::DocumentParser.get_file_contents('index.content')
|
49
65
|
|
50
66
|
assert_equal('INDEX', Rack::Blogengine::DocumentParser.title, 'Parsed in Title should eql Title in test .content file')
|
@@ -52,6 +68,21 @@ class DocumentParserTest < MiniTest::Unit::TestCase
|
|
52
68
|
assert_instance_of(Date, Rack::Blogengine::DocumentParser.date, 'Parsed in Date should be of Class Date')
|
53
69
|
end
|
54
70
|
|
71
|
+
def test_get_file_contents_invalid_date
|
72
|
+
Rack::Blogengine::DocumentParser.target = "#{Rack::Blogengine.root}/assets"
|
73
|
+
assert_raises(RuntimeError) { Rack::Blogengine::DocumentParser.get_file_contents('date_error.content') }
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_get_file_contents_invalid_content
|
77
|
+
Rack::Blogengine::DocumentParser.target = "#{Rack::Blogengine.root}/assets"
|
78
|
+
assert_raises(RuntimeError) { Rack::Blogengine::DocumentParser.get_file_contents('content_error.content') }
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_get_file_contents_invalid_title
|
82
|
+
Rack::Blogengine::DocumentParser.target = "#{Rack::Blogengine.root}/assets"
|
83
|
+
assert_raises(RuntimeError) { Rack::Blogengine::DocumentParser.get_file_contents('title_error.content') }
|
84
|
+
end
|
85
|
+
|
55
86
|
# Test DocumentParser.get_content_array(contentstring)
|
56
87
|
# Should split up the content for each content section (Path, Title, Date, Content)
|
57
88
|
def test_get_content_array
|
@@ -86,6 +117,38 @@ class DocumentParserTest < MiniTest::Unit::TestCase
|
|
86
117
|
assert_equal(Date.new(2012, 12, 12), documents[0].date, 'Documents should be sorted by date (earlier first)')
|
87
118
|
end
|
88
119
|
|
120
|
+
def test_highlight
|
121
|
+
content = "def TestMethod"
|
122
|
+
|
123
|
+
highlighted = Rack::Blogengine::DocumentParser.highlight(content, 'ruby', testpath)
|
124
|
+
assert_match(/.highlight/, highlighted, "Highlighted html should contain a element with class highlight")
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_highlight_fail
|
128
|
+
content = "def TestMethod"
|
129
|
+
|
130
|
+
highlighted = Rack::Blogengine::DocumentParser.highlight(content, nil, testpath)
|
131
|
+
assert_equal(content, highlighted, "If Language is not defined Content should be returned unmodified")
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_generate_highlight_css
|
135
|
+
Rack::Blogengine::DocumentParser.generate_highlight_css(testpath)
|
136
|
+
# css = Pygments.css(Rack::Blogengine.config["pygments_style"])
|
137
|
+
highlightcss = ::File.read("#{testpath}/assets/style/highlight.css")
|
138
|
+
# assert_equal(css, highlightcss, "Highlight Css file should be automatically filled in")
|
139
|
+
refute_empty(highlightcss, "Highlight Css file should be automatically filled in")
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_get_highlight_code
|
143
|
+
content = "<html><head><title>Test</title></head><body><pre class='brush:ruby'>def TestMethod</pre></body></html>"
|
144
|
+
|
145
|
+
seperator = Rack::Blogengine.config["pygments_seperator"]
|
146
|
+
|
147
|
+
highlight_code = Rack::Blogengine::DocumentParser.get_highlight_code(content, seperator)
|
148
|
+
assert_equal('def TestMethod', highlight_code[:text], "Code between #{seperator} should be returned")
|
149
|
+
assert_equal('ruby', highlight_code[:brush], "Brush should be recognised by the class attribute")
|
150
|
+
end
|
151
|
+
|
89
152
|
def teardown
|
90
153
|
system("rm -rf #{testpath}")
|
91
154
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,12 +1,27 @@
|
|
1
|
+
require 'simplecov'
|
1
2
|
require 'coveralls'
|
2
|
-
|
3
|
+
|
4
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
5
|
+
SimpleCov::Formatter::HTMLFormatter,
|
6
|
+
Coveralls::SimpleCov::Formatter
|
7
|
+
]
|
8
|
+
|
9
|
+
SimpleCov.start do
|
10
|
+
project_name 'rack-blogengine'
|
11
|
+
add_filter '/test/'
|
12
|
+
add_filter '/pkg/'
|
13
|
+
add_filter '/spec/'
|
14
|
+
add_filter '/features/'
|
15
|
+
add_filter '/doc/'
|
16
|
+
add_filter '/assets/'
|
17
|
+
end if ENV["COVERAGE"]
|
3
18
|
|
4
19
|
# Previous content of test helper now starts here
|
5
20
|
|
6
21
|
# Minitest
|
7
22
|
require 'minitest/autorun'
|
8
|
-
|
9
|
-
|
23
|
+
require 'minitest/mock'
|
24
|
+
require 'minitest/pride' # for colored output
|
10
25
|
|
11
26
|
# TestUnit -> MiniTest (TestUnit is only compatibility Layer)
|
12
27
|
# require 'test/unit'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-blogengine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benny1992
|
@@ -9,53 +9,77 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2014-02-
|
12
|
+
date: 2014-02-20 00:00:00 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
prerelease: false
|
15
17
|
requirement: &id001 !ruby/object:Gem::Requirement
|
16
18
|
requirements:
|
17
19
|
- - ~>
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: "1.3"
|
20
|
-
name: bundler
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: *id001
|
23
22
|
type: :development
|
23
|
+
version_requirements: *id001
|
24
24
|
- !ruby/object:Gem::Dependency
|
25
|
+
name: rake
|
26
|
+
prerelease: false
|
25
27
|
requirement: &id002 !ruby/object:Gem::Requirement
|
26
28
|
requirements:
|
27
29
|
- &id003
|
28
30
|
- ">="
|
29
31
|
- !ruby/object:Gem::Version
|
30
32
|
version: "0"
|
31
|
-
name: rake
|
32
|
-
prerelease: false
|
33
|
-
version_requirements: *id002
|
34
33
|
type: :development
|
34
|
+
version_requirements: *id002
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
|
+
name: cucumber
|
37
|
+
prerelease: false
|
36
38
|
requirement: &id004 !ruby/object:Gem::Requirement
|
37
39
|
requirements:
|
38
40
|
- *id003
|
39
|
-
name: cucumber
|
40
|
-
prerelease: false
|
41
|
-
version_requirements: *id004
|
42
41
|
type: :development
|
42
|
+
version_requirements: *id004
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
|
+
name: capybara
|
45
|
+
prerelease: false
|
44
46
|
requirement: &id005 !ruby/object:Gem::Requirement
|
45
47
|
requirements:
|
46
48
|
- *id003
|
47
|
-
name: capybara
|
48
|
-
prerelease: false
|
49
|
-
version_requirements: *id005
|
50
49
|
type: :development
|
50
|
+
version_requirements: *id005
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
|
+
name: coveralls
|
53
|
+
prerelease: false
|
52
54
|
requirement: &id006 !ruby/object:Gem::Requirement
|
53
55
|
requirements:
|
54
56
|
- *id003
|
57
|
+
type: :development
|
58
|
+
version_requirements: *id006
|
59
|
+
- !ruby/object:Gem::Dependency
|
55
60
|
name: rack
|
56
61
|
prerelease: false
|
57
|
-
|
62
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- *id003
|
65
|
+
type: :runtime
|
66
|
+
version_requirements: *id007
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: pygments.rb
|
69
|
+
prerelease: false
|
70
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- *id003
|
73
|
+
type: :runtime
|
74
|
+
version_requirements: *id008
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: nokogiri
|
77
|
+
prerelease: false
|
78
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- *id003
|
58
81
|
type: :runtime
|
82
|
+
version_requirements: *id009
|
59
83
|
description: Blogengine based on rack applications
|
60
84
|
email:
|
61
85
|
- klotz.benjamin@yahoo.de
|
@@ -74,9 +98,12 @@ files:
|
|
74
98
|
- README.md
|
75
99
|
- Rakefile
|
76
100
|
- assets/config.yml
|
101
|
+
- assets/content_error.content
|
102
|
+
- assets/date_error.content
|
77
103
|
- assets/index.content
|
78
104
|
- assets/layout.html
|
79
105
|
- assets/operator.rb
|
106
|
+
- assets/title_error.content
|
80
107
|
- bin/rack-blogengine
|
81
108
|
- features/hello.feature
|
82
109
|
- features/step_definitions/hello_steps.rb
|
@@ -133,3 +160,4 @@ test_files:
|
|
133
160
|
- test/rack/blogengine/document_parser_test.rb
|
134
161
|
- test/rack/blogengine/document_test.rb
|
135
162
|
- test/test_helper.rb
|
163
|
+
has_rdoc:
|