pretzel 0.1.2 → 0.1.3
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 +4 -4
- data/.travis.yml +6 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +26 -0
- data/README.md +6 -1
- data/lib/pretzel/core.rb +14 -66
- data/lib/pretzel/ext/convenience.rb +19 -0
- data/lib/pretzel/{json.rb → ext/json.rb} +0 -0
- data/lib/pretzel/{templating.rb → ext/templating.rb} +0 -0
- data/lib/pretzel/routing/eval.rb +48 -0
- data/lib/pretzel/routing/methods.rb +20 -0
- data/lib/pretzel/version.rb +1 -1
- data/pretzel.gemspec +2 -0
- data/test/scrap.rb +0 -2
- data/test/setup_environment.rb +3 -0
- data/test/test_json.rb +0 -1
- data/test/test_templating.rb +0 -1
- metadata +10 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e05d6a69c72f4ba45c60b408450e799144a9e56e
|
4
|
+
data.tar.gz: ec51b8960b12bd6c0e4b8dc2d20057551089ef09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5efb05569eaa7bb78ac28685768106aa5e88280c8ad017ea49a06ea756c36119eed674390c096056abdf4a16ef9d1344be52c696ea4b005ffc5941cf29b0637
|
7
|
+
data.tar.gz: 533058ca02af687c4ddbe22e4464cec7a16ccb0d226e2730cc03e8a856a5929fbc7ccffc6c17ab0022944ba71fb4cdeca394cf5ca5d3c58195017eea147afa96
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
daemons (1.1.9)
|
5
|
+
eventmachine (1.0.7)
|
6
|
+
liquid (3.0.1)
|
7
|
+
minitest (5.5.1)
|
8
|
+
rack (1.6.0)
|
9
|
+
rack-test (0.6.3)
|
10
|
+
rack (>= 1.0)
|
11
|
+
rake (10.4.2)
|
12
|
+
thin (1.6.3)
|
13
|
+
daemons (~> 1.0, >= 1.0.9)
|
14
|
+
eventmachine (~> 1.0)
|
15
|
+
rack (~> 1.0)
|
16
|
+
|
17
|
+
PLATFORMS
|
18
|
+
ruby
|
19
|
+
|
20
|
+
DEPENDENCIES
|
21
|
+
liquid
|
22
|
+
minitest
|
23
|
+
rack
|
24
|
+
rack-test
|
25
|
+
rake
|
26
|
+
thin
|
data/README.md
CHANGED
@@ -1,2 +1,7 @@
|
|
1
|
+
|
1
2
|
# pretzel
|
2
|
-
|
3
|
+

|
4
|
+

|
5
|
+
[](https://codeclimate.com/github/pretzelhands/pretzel)
|
6
|
+
|
7
|
+
ReadMe coming soon.
|
data/lib/pretzel/core.rb
CHANGED
@@ -3,10 +3,20 @@ require "forwardable"
|
|
3
3
|
require "securerandom"
|
4
4
|
|
5
5
|
require_relative "version"
|
6
|
+
require_relative "ext/convenience"
|
7
|
+
|
8
|
+
require_relative "routing/eval"
|
9
|
+
require_relative "routing/methods"
|
6
10
|
|
7
11
|
module Pretzel
|
8
12
|
class Core
|
13
|
+
include Pretzel::Routing::Evaluation
|
14
|
+
extend Pretzel::Routing::Methods
|
15
|
+
|
16
|
+
include Pretzel::Extension::Convenience
|
17
|
+
|
9
18
|
attr_reader :request, :response, :parameters
|
19
|
+
|
10
20
|
class << self
|
11
21
|
extend Forwardable
|
12
22
|
def_delegators :builder, :map, :use
|
@@ -29,36 +39,6 @@ module Pretzel
|
|
29
39
|
builder
|
30
40
|
end
|
31
41
|
|
32
|
-
%w(get post delete put options head).each do |verb|
|
33
|
-
define_method(verb) do |route, &block|
|
34
|
-
routes[verb.to_sym] << [compile_route(route), block]
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
%w(before after).each do |filter|
|
39
|
-
define_method(filter) do |&block|
|
40
|
-
filters[filter.to_sym] ||= Array.new
|
41
|
-
filters[filter.to_sym] << block
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# For all regex lovers.
|
46
|
-
private
|
47
|
-
def compile_route(pattern)
|
48
|
-
keys = []
|
49
|
-
pattern = pattern[0...-1] if pattern.end_with?("/")
|
50
|
-
pattern.gsub!(/(:\w+)/) do # Get all colon-prefixed params
|
51
|
-
keys << $1[1..-1] # Put the name of them into the keys array.
|
52
|
-
"([^/?#]+)" # Substitute with a capture group.
|
53
|
-
end
|
54
|
-
# Return the regex and the param names.
|
55
|
-
if pattern != "/" # No trailing slash for the root route.
|
56
|
-
[%r{^#{pattern}\/?$}, keys]
|
57
|
-
else
|
58
|
-
[%r{^#{pattern}$}, keys]
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
42
|
def builder
|
63
43
|
@builder ||= Rack::Builder.new
|
64
44
|
end
|
@@ -78,6 +58,9 @@ module Pretzel
|
|
78
58
|
@response = Rack::Response.new
|
79
59
|
@parameters = request.params
|
80
60
|
|
61
|
+
@response["Server"] = "Ruby/#{RUBY_VERSION}"
|
62
|
+
@response["X-Generated-By"] = "Pretzel/#{Pretzel::VERSION}"
|
63
|
+
|
81
64
|
evaluate_route
|
82
65
|
|
83
66
|
@response.finish
|
@@ -88,41 +71,6 @@ module Pretzel
|
|
88
71
|
response.header.merge!(res.detect{|x| x.is_a?(Hash) } || {})
|
89
72
|
response.body = [res.detect{|x| x.is_a?(String) } || ""]
|
90
73
|
throw :halt, response
|
91
|
-
end
|
92
|
-
|
93
|
-
def status(status)
|
94
|
-
response.status = status
|
95
|
-
end
|
96
|
-
|
97
|
-
def session
|
98
|
-
request.session || raise("Rack::Session not set.")
|
99
|
-
end
|
100
|
-
|
101
|
-
def redirect(url)
|
102
|
-
response.redirect url
|
103
|
-
end
|
104
|
-
|
105
|
-
private
|
106
|
-
def evaluate_route
|
107
|
-
catch(:halt) do
|
108
|
-
response["Server"] = "Ruby/#{RUBY_VERSION}"
|
109
|
-
response["X-Generated-By"] = "Pretzel/#{Pretzel::VERSION}"
|
110
|
-
|
111
|
-
self.class.routes[request.request_method.downcase.to_sym].each do |route, block|
|
112
|
-
if matching_route = request.path_info.match(route[0])
|
113
|
-
if (route_captures = matching_route.captures) && !route_captures.empty?
|
114
|
-
route_parameters = Hash[*route[1].zip(route_captures).flatten]
|
115
|
-
@parameters = route_parameters.merge(parameters)
|
116
|
-
end
|
117
|
-
|
118
|
-
self.class.filters[:before].each { |filter| instance_exec(&filter) } unless self.class.filters[:before].nil?
|
119
|
-
response.write instance_eval(&block)
|
120
|
-
self.class.filters[:after].each { |filter| instance_exec(&filter) } unless self.class.filters[:after].nil?
|
121
|
-
return
|
122
|
-
end
|
123
|
-
end
|
124
|
-
halt 404, "Not found."
|
125
|
-
end
|
126
|
-
end
|
74
|
+
end
|
127
75
|
end # end class
|
128
76
|
end # end module
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Pretzel
|
2
|
+
module Extension
|
3
|
+
module Convenience
|
4
|
+
|
5
|
+
def status(status)
|
6
|
+
response.status = status
|
7
|
+
end
|
8
|
+
|
9
|
+
def session
|
10
|
+
request.session || raise("Rack::Session not set.")
|
11
|
+
end
|
12
|
+
|
13
|
+
def redirect(url)
|
14
|
+
response.redirect url
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Pretzel
|
2
|
+
module Routing
|
3
|
+
module Evaluation
|
4
|
+
|
5
|
+
def self.included(parent)
|
6
|
+
parent.extend ClassMethods
|
7
|
+
end
|
8
|
+
|
9
|
+
# For all regex lovers.
|
10
|
+
module ClassMethods
|
11
|
+
def compile_route(pattern)
|
12
|
+
keys = []
|
13
|
+
pattern = pattern[0...-1] if pattern.end_with?("/")
|
14
|
+
pattern.gsub!(/(:\w+)/) do # Get all colon-prefixed params
|
15
|
+
keys << $1[1..-1] # Put the name of them into the keys array.
|
16
|
+
"([^/?#]+)" # Substitute with a capture group.
|
17
|
+
end
|
18
|
+
# Return the regex and the param names.
|
19
|
+
if pattern != "/" # No trailing slash for the root route.
|
20
|
+
[%r{^#{pattern}\/?$}, keys]
|
21
|
+
else
|
22
|
+
[%r{^#{pattern}$}, keys]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
def evaluate_route
|
29
|
+
catch(:halt) do
|
30
|
+
method = request.request_method.downcase.to_sym
|
31
|
+
|
32
|
+
self.class.routes[method].each do |route, block|
|
33
|
+
if request.path_info.match(route[0])
|
34
|
+
self.class.filters[:before].each { |filter| instance_exec(&filter) } if self.class.filters[:before]
|
35
|
+
response.write instance_eval(&block)
|
36
|
+
self.class.filters[:after].each { |filter| instance_exec(&filter) } if self.class.filters[:after]
|
37
|
+
|
38
|
+
return
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
halt 404, "Not found."
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Pretzel
|
2
|
+
module Routing
|
3
|
+
module Methods
|
4
|
+
|
5
|
+
%w(get post delete put options head).each do |verb|
|
6
|
+
define_method(verb) do |route, &block|
|
7
|
+
routes[verb.to_sym] << [compile_route(route), block]
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
%w(before after).each do |filter|
|
12
|
+
define_method(filter) do |&block|
|
13
|
+
filters[filter.to_sym] ||= Array.new
|
14
|
+
filters[filter.to_sym] << block
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/pretzel/version.rb
CHANGED
data/pretzel.gemspec
CHANGED
@@ -10,6 +10,8 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.email = ["richard@blechi.at"]
|
11
11
|
s.homepage = "http://github.com/pretzelhands/pretzel"
|
12
12
|
|
13
|
+
s.required_ruby_version = ">= 2.0.0"
|
14
|
+
|
13
15
|
s.files = `git ls-files`.split("\n")
|
14
16
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
15
17
|
s.require_paths = ["lib"]
|
data/test/scrap.rb
CHANGED
data/test/setup_environment.rb
CHANGED
@@ -2,5 +2,8 @@ pretzel_dir = File.dirname(File.dirname(__FILE__)) + '/lib'
|
|
2
2
|
$LOAD_PATH.unshift pretzel_dir unless $LOAD_PATH.include?(pretzel_dir)
|
3
3
|
|
4
4
|
require "pretzel/core"
|
5
|
+
require "pretzel/ext/templating"
|
6
|
+
require "pretzel/ext/json"
|
7
|
+
|
5
8
|
require "rack/test"
|
6
9
|
require "minitest/autorun"
|
data/test/test_json.rb
CHANGED
data/test/test_templating.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pretzel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Blechinger
|
@@ -88,12 +88,18 @@ extensions: []
|
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
90
|
- ".gitignore"
|
91
|
+
- ".travis.yml"
|
92
|
+
- Gemfile
|
93
|
+
- Gemfile.lock
|
91
94
|
- LICENSE
|
92
95
|
- README.md
|
93
96
|
- Rakefile
|
94
97
|
- lib/pretzel/core.rb
|
95
|
-
- lib/pretzel/
|
96
|
-
- lib/pretzel/
|
98
|
+
- lib/pretzel/ext/convenience.rb
|
99
|
+
- lib/pretzel/ext/json.rb
|
100
|
+
- lib/pretzel/ext/templating.rb
|
101
|
+
- lib/pretzel/routing/eval.rb
|
102
|
+
- lib/pretzel/routing/methods.rb
|
97
103
|
- lib/pretzel/version.rb
|
98
104
|
- pretzel.gemspec
|
99
105
|
- test/assets/test.css
|
@@ -124,7 +130,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
124
130
|
requirements:
|
125
131
|
- - ">="
|
126
132
|
- !ruby/object:Gem::Version
|
127
|
-
version:
|
133
|
+
version: 2.0.0
|
128
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
135
|
requirements:
|
130
136
|
- - ">="
|