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 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: