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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7d4b91f04b6560e42b18bd3879f18bef72404f1f
4
- data.tar.gz: a4fb8cc81e6aaa6c61ba1d2c5459de761fda4bce
3
+ metadata.gz: e05d6a69c72f4ba45c60b408450e799144a9e56e
4
+ data.tar.gz: ec51b8960b12bd6c0e4b8dc2d20057551089ef09
5
5
  SHA512:
6
- metadata.gz: e4e6fcdc2c2602efb6ac107514df1fa0283d46b714bb30674f4fd8d5afbb9299b4f5de5b3248166aa0ce66d25bd18bbecb1dce43581d1e9cf7dd1fac6960aa42
7
- data.tar.gz: c76cbfedea4b99b7bea1a64cefe833338f4dc5965b13f36d4ee9c237dd1c15fd4a42b4e1f40b8170ea9b6b0109f0ee23751f64026ad02c566ae8a15775f1e99a
6
+ metadata.gz: a5efb05569eaa7bb78ac28685768106aa5e88280c8ad017ea49a06ea756c36119eed674390c096056abdf4a16ef9d1344be52c696ea4b005ffc5941cf29b0637
7
+ data.tar.gz: 533058ca02af687c4ddbe22e4464cec7a16ccb0d226e2730cc03e8a856a5929fbc7ccffc6c17ab0022944ba71fb4cdeca394cf5ca5d3c58195017eea147afa96
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ bundler_args: --without production
3
+ rvm:
4
+ - 2.2.0
5
+ - 2.1.0
6
+ - 2.0.0
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "rack"
4
+ gem "liquid"
5
+
6
+ group :production do
7
+ gem "thin"
8
+ end
9
+
10
+ group :test do
11
+ gem "minitest"
12
+ gem "rack-test"
13
+ gem "rake"
14
+ end
@@ -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
- The basic Pretzel application kit. Extensible and fun to work with!
3
+ ![TravisCI badge](https://travis-ci.org/pretzelhands/pretzel.svg?branch=master)
4
+ ![Version badge](https://badge.fury.io/rb/pretzel.svg)
5
+ [![Code Climate](https://codeclimate.com/github/pretzelhands/pretzel/badges/gpa.svg)](https://codeclimate.com/github/pretzelhands/pretzel)
6
+
7
+ ReadMe coming soon.
@@ -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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Pretzel
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -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"]
@@ -2,8 +2,6 @@
2
2
  # implemented. The code here is not intended to be sensible.
3
3
 
4
4
  require_relative "setup_environment"
5
- require "pretzel/templating"
6
- require "pretzel/json"
7
5
 
8
6
  class ScrapApplication < Pretzel::Core
9
7
  include Pretzel::Extension::Templating
@@ -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"
@@ -1,5 +1,4 @@
1
1
  require_relative "setup_environment"
2
- require "pretzel/json"
3
2
  require "rack"
4
3
 
5
4
  class JSONApplication < Pretzel::Core
@@ -1,5 +1,4 @@
1
1
  require_relative "setup_environment"
2
- require "pretzel/templating"
3
2
  require "rack"
4
3
 
5
4
  class TemplatingApplication < Pretzel::Core
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.2
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/json.rb
96
- - lib/pretzel/templating.rb
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: '0'
133
+ version: 2.0.0
128
134
  required_rubygems_version: !ruby/object:Gem::Requirement
129
135
  requirements:
130
136
  - - ">="