rack-blogengine 0.1.7 → 0.1.8

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
- ---
2
- SHA1:
3
- metadata.gz: 7aa9f7345a6ce8fe4d9db0a916d6fd8532717ea3
4
- data.tar.gz: caba5a9583c222feae1ac9353afcd2795a9e0740
5
- SHA512:
6
- metadata.gz: fcd1c84cb6d85a0f915d01db281f7229e435fea47c77dacc0c2ca1da4a169918909c4f567d9ac4e02578ac77c7073232d964bd579cd5184a1b00d4e62cdc627c
7
- data.tar.gz: 654e2452901577730a41e5901ac18d58fcaecf31e2ab47f249b7c2bd1a35f5d6a5d621500686bbb946c571033af5a324c776cbb1d5513ef40da0960db8cd111a
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ac2f380861a964dc372755134ec9ba579c01a518
4
+ data.tar.gz: a4eea9aa413b6fc8636168a37cf9d130d50c073e
5
+ SHA512:
6
+ metadata.gz: 4af90b6015da703e146f5932629858c22a20f76c97509a2a7d3ac52259c0b9aa54e4b59e41313acbbdee2ac66c48b94baa0c07ff033353d4b493397e25630080
7
+ data.tar.gz: c9dd2c8c09abdea19e83669aade5317f8263f14fedf23f33f31e4e0a879f77a5c8fb1fda60acadc5e4fce41c554e4f4c051dcb946db4db03ad38c9f81a227c28
data/README.md CHANGED
@@ -4,33 +4,45 @@ Rack Middleware to serve a simple blog
4
4
 
5
5
  ## Installation
6
6
 
7
- Add this line to your application's Gemfile:
7
+ $ gem install rack-blogengine
8
8
 
9
- gem 'rack-blogengine'
9
+ ## Usage
10
10
 
11
- And then execute:
11
+ `rack-blogengine generate <folder>` will create your Folder skeleton
12
12
 
13
- $ bundle
13
+ ### Structure
14
14
 
15
- Or install it yourself as:
15
+ These folders and files will be created for you
16
16
 
17
- $ gem install rack-blogengine
17
+ #### Folders
18
+ `targetfolder/assets`
18
19
 
19
- ## Usage
20
+ `targetfolder/assets/style`
20
21
 
21
- `rack-blogengine generate <folder>` will create your Folder skeleton
22
+ `targetfolder/assets/js`
22
23
 
23
- ### Structure
24
+ `targetfolder/assets/layout`
25
+
26
+ `targetfolder/assets/images`
27
+
28
+ `targetfolder/operator`
29
+
30
+ #### Files
31
+ `targetfolder/assets/style/style.css`
24
32
 
25
- `targetfolder/layout` - save your layout.html in this folder
33
+ `targetfolder/assets/js/script.js`
26
34
 
27
- `targetfolder/assets` - your assets (images, js, css etc) will be served from this folder (http://pathtoapp.tld/assets)
35
+ `targetfolder/assets/layout/layout.html` (filled with basic structure)
28
36
 
29
- `targetfolder/test.content` - your available blog entries matches to the .content files, each .content file is a blog entry
37
+ `targetfolder/index.content` (filled with dummy content)
38
+
39
+ `targetfolder/config.yml` (basic config setup - server: webrick, port: 3000)
40
+
41
+ `targetfolder/operator/operator.rb` (define your operator methods in module UserOperator)
30
42
 
31
43
  ### Layout
32
44
 
33
- In the layout.html you use {title} and {content} which will then be populated with the values from each .content file
45
+ In the layout.html you use {title}, {content} and {date} which will then be populated with the values from each .content file
34
46
  Example:
35
47
  ```html
36
48
  <!DOCTYPE html>
@@ -41,6 +53,7 @@ Example:
41
53
  <body>
42
54
  <h1>{title}</h1>
43
55
  <div>
56
+ {date}
44
57
  {content}
45
58
  </div>
46
59
  </body>
@@ -54,6 +67,8 @@ The Content files (.content) includes your content
54
67
 
55
68
  `[title][/title]` - the title for your article
56
69
 
70
+ `[date][/date]` - publishing date of your article
71
+
57
72
  `[content][/content]` - your content
58
73
 
59
74
  ### Hint
@@ -9,7 +9,8 @@ module Rack
9
9
  route = ApplicationRouter.map_route(env, $targetfolder)
10
10
  if route
11
11
  return route["response"]
12
- else
12
+ else
13
+ #TODO Errorpage handling
13
14
  return [404, {"Content-Type" => "text/html; charset=UTF-8"}, ["Page not found"]]
14
15
  end
15
16
  end
@@ -11,6 +11,8 @@ module Rack
11
11
  header = {"Content-Type" => "text/html; charset=UTF-8"}
12
12
  path = env["PATH_INFO"]
13
13
 
14
+ # TODO: dont parse all docs on every request -> doc cache (maybe parse at rack-blogengine run)
15
+ # for fasten up accessing eg contentoperator in layout.html which has faraday request -> too big load times on every request!!!
14
16
  documents = DocParser.parseInDocuments(target)
15
17
 
16
18
 
@@ -9,15 +9,14 @@ module Rack
9
9
  puts "Command #{name} not available"
10
10
  print "Available Commands are: \n\n"
11
11
  self.class.instance_methods(false).each do |method|
12
- print "\t #{method}\n" unless method == :method_missing
12
+ print "\t #{method}\n" unless method == :method_missing #|| method == :setup || method == :getConfig
13
13
  end
14
14
  print "\n"
15
15
  end
16
16
 
17
- # Method to run the cli command
17
+ # Method to run the rack Application
18
18
  # @param [String] target
19
19
  def run(target)
20
-
21
20
  unless target.empty?
22
21
  if target.include?("/")
23
22
  target = target.dup
@@ -28,22 +27,27 @@ module Rack
28
27
  system("cd #{target}")
29
28
 
30
29
  $targetfolder = "#{Dir.pwd}/#{target}"
31
- config = YAML::load(::File.open("#{$targetfolder}/config.yml"))
32
- app = Rack::Builder.new do
33
- use Rack::CommonLogger
34
- use Rack::ShowExceptions
30
+ config = getConfig($targetfolder)
35
31
 
32
+ app = Rack::Builder.new do
36
33
  map "/assets" do
37
34
  run Rack::Directory.new("#{$targetfolder}/assets")
38
35
  end
36
+
37
+ use Rack::CommonLogger
38
+ use Rack::ShowExceptions
39
39
  use Rack::Lint
40
+
41
+ if config["Usage"] == "yes"
42
+ use Rack::Auth::Basic, "Protected Area" do |username, password|
43
+ username == config["Username"] && password == config["Password"]
44
+ end
45
+ end
46
+
40
47
  run Rack::Blogengine::Application
41
48
  end
42
49
 
43
-
44
- port = config["Port"];
45
- server = config["Server"];
46
- Rack::Server.start( :app => app, :Port => port, :server => server )
50
+ Rack::Server.start( :app => app, :Port => config["Port"], :server => config["Server"] )
47
51
  else
48
52
  puts "Target is not a folder!"
49
53
  end
@@ -54,7 +58,6 @@ module Rack
54
58
 
55
59
  # Command to generate the folder skeleton
56
60
  # @param [String] folder
57
- # TODO: refactor this - similar functions for each set up set => outsource to a method setup()
58
61
  def generate(folder)
59
62
  puts "\tGenerating folder skeleton\n"
60
63
  system("mkdir #{folder}")
@@ -68,46 +71,62 @@ module Rack
68
71
  puts "\n\tSetting up essential Files\n"
69
72
 
70
73
  # SET UP operator.rb
71
- puts "\tSet up #{folder}/operator/operator.rb\n"
72
- system("touch #{folder}/operator/operator.rb")
73
- content = IO.read("#{::File.dirname(__FILE__)}/files/operator.rb")
74
- ::File.open("#{folder}/operator/operator.rb", 'w') { |file| file.write(content) }
74
+ setup("operator.rb", "#{folder}/operator", true)
75
75
 
76
76
  # SET UP config.yml
77
- puts "\tSet up config.yml\n"
78
- system("touch #{folder}/config.yml")
79
- content = IO.read("#{::File.dirname(__FILE__)}/files/config.yml")
80
- ::File.open("#{folder}/config.yml", 'w') { |file| file.write(content) }
77
+ setup("config.yml", "#{folder}", true)
81
78
 
82
79
  # SET UP index.content
83
- puts "\tSet up #{folder}/index.content\n"
84
- system("touch #{folder}/index.content")
85
- content = IO.read("#{::File.dirname(__FILE__)}/files/index.content")
86
- ::File.open("#{folder}/index.content", 'w') { |file| file.write(content) }
80
+ setup("index.content", "#{folder}", true)
87
81
 
88
82
  # SET UP layout.html
89
- puts "\tSet up #{folder}/assets/layout/layout.html\n"
90
- system("touch #{folder}/assets/layout/layout.html")
91
- content = IO.read("#{::File.dirname(__FILE__)}/files/layout.html")
92
- ::File.open("#{folder}/assets/layout/layout.html", 'w') { |file| file.write(content) }
83
+ setup("layout.html", "#{folder}/assets/layout", true)
93
84
 
94
85
  # SET UP style.css
95
- puts "\tSet up #{folder}/assets/style/style.css\n"
96
- system("touch #{folder}/assets/style/style.css")
86
+ setup("style.css", "#{folder}/assets/style", false)
97
87
 
98
- # SET UP style.css
99
- puts "\tSet up #{folder}/assets/js/script.js\n"
100
- system("touch #{folder}/assets/js/script.js")
88
+ # SET UP script.js
89
+ setup("script.js", "#{folder}/assets/js", false)
101
90
 
102
91
  puts "\n\tSetup finished! Have Fun\n"
103
92
  puts "\tTo test it type rack-blogengine run #{folder}"
104
93
  end
105
94
 
95
+
96
+
106
97
  # Display Version
107
98
  # return [String] VERSION
108
99
  def version?
109
100
  puts Rack::Blogengine::VERSION
110
101
  end
102
+
103
+ private
104
+
105
+ # Helper method for generate to set up all essential files
106
+ # param [String] name
107
+ # param [String] path
108
+ # param [boolean] essential
109
+ def setup(name, path, essential)
110
+ puts "\tSet up #{path}/#{name}\n"
111
+ system("touch #{path}/#{name}")
112
+ if essential
113
+ content = IO.read("#{::File.dirname(__FILE__)}/files/#{name}")
114
+ ::File.open("#{path}/#{name}", 'w') { |file| file.write(content) }
115
+ end
116
+ end
117
+
118
+ # Get YAML Config settings for Server.start && HTTPauth
119
+ def getConfig(target)
120
+ configYAML = YAML::load(::File.open("#{target}/config.yml"))
121
+
122
+ port = configYAML["Port"]
123
+ server = configYAML["Server"]
124
+ username = configYAML["HTTPauth"]["username"].to_s.strip
125
+ password = configYAML["HTTPauth"]["password"].to_s.strip
126
+ usage = configYAML["HTTPauth"]["usage"]
127
+
128
+ config = {"Port" => port, "Server" => server, "Username" => username, "Password" => password, "Usage" => usage}
129
+ end
111
130
  end
112
131
  end
113
132
  end
@@ -73,22 +73,25 @@ module Rack
73
73
 
74
74
  if contentblock.include? "[date]:"
75
75
  contentblock["[date]:"] = ""
76
- #TODO: Generate Date out of [date] string
77
- #@date = Date.new(..splitted date string..)
78
- @date = contentblock.strip
76
+ datearray = contentblock.split(",")
77
+ datearray = datearray.map do |date|
78
+ date = date.to_i
79
+ end
80
+
81
+ @date = Date.new(datearray[0], datearray[1], datearray[2])
79
82
  end
80
83
  end
81
84
  end
82
85
 
83
- # Replace layout placeholder with content from .content file
84
- # @param [String] layout
85
- # return [String] html placeholder replaced with content
86
+ # Replace layout placeholder with content from .content file
87
+ # @param [String] layout
88
+ # return [String] html placeholder replaced with content
86
89
  def self.fillFileContents(layout)
87
90
  html = layout.dup
88
91
 
89
92
  html.gsub! "{title}", @title
90
93
  html["{content}"] = @content
91
- html.gsub! "{date}", @date
94
+ html.gsub! "{date}", @date.strftime('%d.%m.%Y')
92
95
 
93
96
  return html
94
97
  end
@@ -1,2 +1,6 @@
1
1
  Port: 3000
2
- Server: "webrick"
2
+ Server: "webrick"
3
+ HTTPauth:
4
+ username:
5
+ password:
6
+ usage: "no"
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  module Blogengine
3
- VERSION = "0.1.7".freeze
3
+ VERSION = "0.1.8".freeze
4
4
  end
5
- end
5
+ end
metadata CHANGED
@@ -1,80 +1,66 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rack-blogengine
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.7
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.8
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Benny1992
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-10 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
11
+
12
+ date: 2014-01-15 00:00:00 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ prerelease: false
14
16
  name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.3'
17
+ version_requirements: &id001 !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: "1.3"
20
22
  type: :development
23
+ requirement: *id001
24
+ - !ruby/object:Gem::Dependency
21
25
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.3'
27
- - !ruby/object:Gem::Dependency
28
26
  name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
27
+ version_requirements: &id002 !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - &id004
30
+ - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: "0"
34
33
  type: :development
34
+ requirement: *id002
35
+ - !ruby/object:Gem::Dependency
35
36
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
37
  name: rspec
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
38
+ version_requirements: &id003 !ruby/object:Gem::Requirement
39
+ requirements:
45
40
  - - ">="
46
- - !ruby/object:Gem::Version
41
+ - !ruby/object:Gem::Version
47
42
  version: 2.0.0
48
43
  type: :development
44
+ requirement: *id003
45
+ - !ruby/object:Gem::Dependency
49
46
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: 2.0.0
55
- - !ruby/object:Gem::Dependency
56
47
  name: rack
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
48
+ version_requirements: &id005 !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - *id004
62
51
  type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
52
+ requirement: *id005
69
53
  description: Blogengine based on rack applications
70
- email:
54
+ email:
71
55
  - klotz.benjamin@yahoo.de
72
- executables:
56
+ executables:
73
57
  - rack-blogengine
74
58
  extensions: []
59
+
75
60
  extra_rdoc_files: []
76
- files:
77
- - ".gitignore"
61
+
62
+ files:
63
+ - .gitignore
78
64
  - Gemfile
79
65
  - LICENSE.txt
80
66
  - README.md
@@ -93,29 +79,29 @@ files:
93
79
  - lib/rack/blogengine/operator.rb
94
80
  - lib/rack/blogengine/version.rb
95
81
  - rack-blogengine.gemspec
96
- homepage: ''
97
- licenses:
82
+ homepage: ""
83
+ licenses:
98
84
  - MIT
99
85
  metadata: {}
86
+
100
87
  post_install_message:
101
88
  rdoc_options: []
102
- require_paths:
89
+
90
+ require_paths:
103
91
  - lib
104
92
  - spec
105
- required_ruby_version: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- required_rubygems_version: !ruby/object:Gem::Requirement
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- version: '0'
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - *id004
96
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - *id004
115
99
  requirements: []
100
+
116
101
  rubyforge_project:
117
- rubygems_version: 2.2.0.rc.1
102
+ rubygems_version: 2.2.0
118
103
  signing_key:
119
104
  specification_version: 4
120
105
  summary: Blogengine based on rack applications
121
106
  test_files: []
107
+