rack-blogengine 0.1.7 → 0.1.8

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