RHP 0.0.2a

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.
@@ -0,0 +1,4 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
4
+ .DS_Store
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in rhp.gemspec
4
+ gemspec
@@ -0,0 +1,23 @@
1
+ = RHP: Hypertext Preprocessor.
2
+
3
+ == Usage
4
+ First install the RHP gem:
5
+ $: sudo gem i rhp
6
+
7
+ Next, pick or create a directory with some files to serve:
8
+ $: mkdir site
9
+ $: cd site
10
+ $: echo '%h1 hello from HAML' > index.html.haml
11
+
12
+ Now start the server:
13
+ $: rhp
14
+
15
+ That's it!
16
+
17
+
18
+ == More info
19
+
20
+ RHP is probably buggy and definitely a security risk. It should not be used by anyone under any circumstances. Luckily ruby has no shortage of solid, innovative and well-thought-out web frameworks for you to pick from.
21
+
22
+
23
+ Development by Arthur Gunn.
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
data/bin/rhp ADDED
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env ruby
2
+ # require File.expand_path('../../lib/rhp', __FILE__)
3
+ require 'rhp'
4
+ require 'optparse'
5
+
6
+ usage = <<USAGE
7
+ Usage: rhp <options>
8
+
9
+ To use rhp, cd to your sites base public directory, and run.
10
+
11
+ Options
12
+ -p, --port The port to run RHP from. Default: 2718
13
+ USAGE
14
+
15
+ options = {
16
+ :port => 2718,
17
+ :config => File.expand_path("../../lib/rhp/config.ru", __FILE__)
18
+ }
19
+
20
+ ARGV.options do |o|
21
+ o.on("-p", "--port") do |port|
22
+ options[:port] = port
23
+ end
24
+
25
+ # o.on("-c", "--config") do |config|
26
+ # options[:config] = File.expand_path(config, Dir.pwd)
27
+ # end
28
+
29
+ o.on_tail("-h", "--help") { puts usage; exit }
30
+
31
+ o.parse!
32
+ end
33
+
34
+ project_path = ARGV.first || '.'
35
+ RHP::Server.project_root = File.expand_path(project_path, Dir.pwd)
36
+
37
+
38
+ server = Rack::Server.new.tap do |s|
39
+ s.options[:config] = options[:config]
40
+ s.options[:Port] = options[:port]
41
+ end
42
+
43
+
44
+ puts "RHP started at http://0.0.0.0:#{options[:port]}/ from #{project_path}\n"
45
+ server.start
@@ -0,0 +1,80 @@
1
+ require "rack"
2
+ require "tilt"
3
+
4
+ module RHP
5
+ class Server
6
+ class << self
7
+ def project_root=(path)
8
+ @@project_root = path
9
+ end
10
+
11
+ def project_root
12
+ @@project_root
13
+ end
14
+
15
+ def call(env)
16
+ file_request = FileRequest.new(env["PATH_INFO"])
17
+
18
+ [200, {"Content-Type" => file_request.mime_type}, [file_request.content]]
19
+ end
20
+ end
21
+ end
22
+
23
+ class FileRequest
24
+ attr_accessor :request_path
25
+ EXTENSIONS_REGEX = "\\.(#{Tilt.mappings.keys.join('|')})$"
26
+
27
+ def initialize(path)
28
+ # /pages/
29
+ self.request_path = path.gsub(/\/$/, "/index.html").gsub(/^\//, "")
30
+ self.request_path = "#{self.request_path}/index.html" if File.directory?(raw_file_path)
31
+ # pages/index.html
32
+ end
33
+
34
+ def content
35
+ if Tilt.mappings.keys.include?(extension)
36
+ "Files with the .#{extension} extension may not be accessed directly."
37
+ elsif File.file?(raw_file_path.to_s)
38
+ File.read(raw_file_path)
39
+ elsif File.file?(template_path.to_s)
40
+ Tilt.new(template_path).render
41
+ else
42
+ "ERROR!"
43
+ end
44
+ end
45
+
46
+ def mime_type
47
+ Rack::Mime::mime_type(".#{extension}", "text/html")
48
+ end
49
+
50
+ protected
51
+
52
+ def raw_file_path
53
+ File.expand_path(request_path, Server.project_root)
54
+ # /Users/.. ../site/public/pages/index.html
55
+ end
56
+
57
+ def template_path
58
+ Dir.glob("#{raw_file_path}*").find do |file|
59
+ /#{raw_file_path}#{EXTENSIONS_REGEX}/ === file
60
+ end
61
+ # /Users/.. ../site/public/pages/index.html.haml
62
+ end
63
+
64
+ def request_filename
65
+ request_path.split("/").last
66
+ # index.html
67
+ end
68
+
69
+ def template_extension
70
+ template_path.split(".").last
71
+ # haml
72
+ end
73
+
74
+ def extension
75
+ request_filename.split(".").last
76
+ # html
77
+ end
78
+
79
+ end
80
+ end
@@ -0,0 +1 @@
1
+ run RHP::Server
@@ -0,0 +1,3 @@
1
+ module RHP
2
+ VERSION = "0.0.2a"
3
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "rhp/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "RHP"
7
+ s.version = RHP::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Arthur Gunn"]
10
+ s.email = ["arthur@gunn.co.nz"]
11
+ s.homepage = ""
12
+ s.summary = %q{The RHP (or ruby) Hypertext Preprocessor. (VaporWare)}
13
+ s.description = %q{Pages are written in any templating language supported by the tilt gem. Routes are based only on directory structure and file names. Simple!}
14
+
15
+ s.add_dependency "rack", "~>1.2.0"
16
+ s.add_dependency "tilt", "~>1.2.0"
17
+
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
22
+ end
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: RHP
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: true
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 2a
9
+ version: 0.0.2a
10
+ platform: ruby
11
+ authors:
12
+ - Arthur Gunn
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-01-17 00:00:00 +13:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rack
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 1
30
+ - 2
31
+ - 0
32
+ version: 1.2.0
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: tilt
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ segments:
44
+ - 1
45
+ - 2
46
+ - 0
47
+ version: 1.2.0
48
+ type: :runtime
49
+ version_requirements: *id002
50
+ description: Pages are written in any templating language supported by the tilt gem. Routes are based only on directory structure and file names. Simple!
51
+ email:
52
+ - arthur@gunn.co.nz
53
+ executables:
54
+ - rhp
55
+ extensions: []
56
+
57
+ extra_rdoc_files: []
58
+
59
+ files:
60
+ - .gitignore
61
+ - Gemfile
62
+ - README.rdoc
63
+ - Rakefile
64
+ - bin/rhp
65
+ - lib/rhp.rb
66
+ - lib/rhp/config.ru
67
+ - lib/rhp/version.rb
68
+ - rhp.gemspec
69
+ has_rdoc: true
70
+ homepage: ""
71
+ licenses: []
72
+
73
+ post_install_message:
74
+ rdoc_options: []
75
+
76
+ require_paths:
77
+ - lib
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ none: false
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ segments:
84
+ - 0
85
+ version: "0"
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ">"
90
+ - !ruby/object:Gem::Version
91
+ segments:
92
+ - 1
93
+ - 3
94
+ - 1
95
+ version: 1.3.1
96
+ requirements: []
97
+
98
+ rubyforge_project:
99
+ rubygems_version: 1.3.7
100
+ signing_key:
101
+ specification_version: 3
102
+ summary: The RHP (or ruby) Hypertext Preprocessor. (VaporWare)
103
+ test_files: []
104
+