rack-blogengine 0.2.3 → 0.2.4
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 +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:
|