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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: be673f3f32e05e24da51c8cf90e8ef3904df61b8
4
- data.tar.gz: c960faa025ed506ae5c96737de9126de91bdd356
3
+ metadata.gz: f534d53e3f8a5de64f425c908071cc8065f4a7b3
4
+ data.tar.gz: 9c43691dc1d6f4afbe44f92712e2cbd3ceb77fcb
5
5
  SHA512:
6
- metadata.gz: 5003c80502f0b50d63c1157fbec62be65fd530417a21c03b8cbbf83a0058b8f4213bc1664187fb4f84e834494465fc85610f9490cb8c461af2c91f6d33a8f30b
7
- data.tar.gz: 82c214bc379dea1aa34092306f99966e4e6ec087e15244122bac5f800722ad5d9ad1889317e8ff5a3f0146187167a9e6d3e763e1974981c2f0a130a13b8b82e4
6
+ metadata.gz: d713e85703385cc5302c553e39c03c03c3f9ee2210d680e78c045597a7e6f26d734148dcb317c8670dcef21daf92a6dd04b100d507b7db7691d30bb68b5bd5f1
7
+ data.tar.gz: 368350df768dd879a29436e1847f7bacb900b9071385d4512575796ec663246bcade7a112d09fd6ed83e14942980638f8b83430c6c7400f9545f72f0f10da150
data/.travis.yml CHANGED
@@ -5,6 +5,7 @@ rvm:
5
5
  - 1.9.3
6
6
  - 2.0.0
7
7
  - 2.1.0
8
+ - ruby-head
8
9
  - jruby
9
10
  - rbx
10
11
 
@@ -12,4 +13,6 @@ matrix:
12
13
  allow_failures:
13
14
  - rvm: rbx
14
15
  - rvm: jruby
15
- - rvm: ruby-head
16
+ - rvm: ruby-head
17
+
18
+ script: "env COVERAGE=true bundle exec rake"
data/Gemfile CHANGED
@@ -1,6 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
  gem "rubysl-test-unit", :platform => :rbx
3
- gem 'coveralls', require: false
4
-
5
3
  # Specify your gem's dependencies in rack-blogengine.gemspec
6
4
  gemspec
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/**/spec_*.rb']
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
@@ -3,4 +3,8 @@ Server: "webrick"
3
3
  HTTPauth:
4
4
  username:
5
5
  password:
6
- usage: "no"
6
+ usage: "no"
7
+
8
+ Pygments:
9
+ style: "tango"
10
+ seperator: "pre"
@@ -0,0 +1,4 @@
1
+ [path]:[/path]
2
+ [title]:INDEX[/title]
3
+ [date]:2013,01,01[/date]
4
+ [content]:[/content]
@@ -0,0 +1,6 @@
1
+ [path]:[/path]
2
+ [title]:INDEX[/title]
3
+ [date]:[/date]
4
+ [content]:
5
+ <h2>This is the Index Page</h2>
6
+ [/content]
@@ -0,0 +1,6 @@
1
+ [path]:[/path]
2
+ [title]:[/title]
3
+ [date]:2013,01,01[/date]
4
+ [content]:
5
+ <h2>This is the Index Page</h2>
6
+ [/content]
@@ -1,9 +1,25 @@
1
+ require 'simplecov'
1
2
  require 'coveralls'
2
- Coveralls.wear!
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
@@ -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
- app = Rack::Builder.new do
32
- map '/assets' do
33
- run Rack::Directory.new("#{target}/assets")
34
- end
35
-
36
- use Rack::CommonLogger
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
- if config['Usage'] == 'yes'
41
- use Rack::Auth::Basic, 'Protected Area' do |username, password|
42
- username == config['Username'] && password == config['Password']
43
- end
44
- end
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
- # Parse in all Documents in cli.run(target)
47
- # -> $documents are parsed in only once and then cached via a global variable
48
- # Todo Cache without global variable?
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
- run Application
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
- sort documents
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
@@ -7,7 +7,7 @@ module Rack
7
7
  #
8
8
  module Blogengine
9
9
  class << self
10
- attr_accessor :documents
10
+ attr_accessor :documents, :config
11
11
 
12
12
  def root
13
13
  ::File.dirname(::File.dirname(::File.expand_path('../..', __FILE__)))
@@ -6,11 +6,8 @@
6
6
  #
7
7
  class Operator
8
8
  def initialize(target)
9
- Dir.foreach("#{target}/operator/") do |item|
10
- extension = item.split('.')[1]
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
@@ -6,6 +6,6 @@ module Rack
6
6
  # @author [benny]
7
7
  #
8
8
  module Blogengine
9
- VERSION = '0.2.3'.freeze
9
+ VERSION = '0.2.4'.freeze
10
10
  end
11
11
  end
@@ -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
- Coveralls.wear!
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
- # threads = []
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
- # thr2 = Thread.new do
71
- # sleep 10
72
- # system("rm -rf #{testpath}")
73
- # exit!
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
- # threads << thr1 << thr2
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
- Coveralls.wear!
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
- # require 'minitest/pride' # for colored output
9
- # require 'test_notifier/runner/minitest' # for a notifier
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.3
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-17 00:00:00 Z
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
- version_requirements: *id006
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: