almost-sinatra 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/HISTORY.md +3 -0
- data/Manifest.txt +5 -0
- data/README.md +1 -0
- data/Rakefile +30 -0
- data/lib/almost-sinatra.rb +113 -0
- metadata +112 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e893991c5706400658705b56a665b65727bdbb4c
|
4
|
+
data.tar.gz: 6a013d524a66d24d7b065b32b8fea6a6dd56d3c4
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ad0e291fee7da826346f6c0569e3e144cd533bb373e6d1424e3e433ae6fb392c40da01fa9376e772586163631a82ba2f5fbd3d0b3d88f3c500ec150311291c44
|
7
|
+
data.tar.gz: c5431ba712ded1e434510410ed8ca8211b113dffd5c38c5bb26c10bb3e2ec4959e9be9cf8e67640f4729580c121418fd31957ceb3f4408236fee01a58295587e
|
data/HISTORY.md
ADDED
data/Manifest.txt
ADDED
data/README.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# Almost Sinatra
|
data/Rakefile
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'hoe'
|
2
|
+
|
3
|
+
Hoe.spec 'almost-sinatra' do
|
4
|
+
|
5
|
+
self.version = '0.1.0'
|
6
|
+
|
7
|
+
self.summary = 'almost-sinatra - six lines of almost sinatra refactored and bundled up for easy (re)use - build your own webframework from scratch with rack and tilt'
|
8
|
+
self.description = summary
|
9
|
+
|
10
|
+
self.urls = ['https://github.com/rubylibs/almost-sinatra']
|
11
|
+
|
12
|
+
self.author = ['Konstantin Haase', 'Gerald Bauer']
|
13
|
+
self.email = 'ruby-talk@ruby-lang.org'
|
14
|
+
|
15
|
+
# switch extension to .markdown for gihub formatting
|
16
|
+
self.readme_file = 'README.md'
|
17
|
+
self.history_file = 'HISTORY.md'
|
18
|
+
|
19
|
+
self.extra_deps = [
|
20
|
+
['rack' ],
|
21
|
+
['tilt' ],
|
22
|
+
]
|
23
|
+
|
24
|
+
self.licenses = ['Public Domain']
|
25
|
+
|
26
|
+
self.spec_extras = {
|
27
|
+
required_ruby_version: '>= 2.3'
|
28
|
+
}
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
###
|
5
|
+
# almost_sinatra.rb
|
6
|
+
# -- Sinatra refactored, only six lines now. A hack by Konstantin Haase.
|
7
|
+
# see https://github.com/rkh/almost-sinatra/blob/master/almost_sinatra.rb
|
8
|
+
#
|
9
|
+
# e.g.
|
10
|
+
#
|
11
|
+
# %w.rack tilt date INT TERM..map{|l|trap(l){$r.stop}rescue require l};$u=Date;$z=($u.new.year + 145).abs;puts "== Almost Sinatra/No Version has taken the stage on #$z for development with backup from Webrick"
|
12
|
+
# $n=Module.new{extend Rack;a,D,S,q=Rack::Builder.new,Object.method(:define_method),/@@ *([^\n]+)\n(((?!@@)[^\n]*\n)*)/m
|
13
|
+
# %w[get post put delete].map{|m|D.(m){|u,&b|a.map(u){run->(e){[200,{"Content-Type"=>"text/html"},[a.instance_eval(&b)]]}}}}
|
14
|
+
# Tilt.mappings.map{|k,v|D.(k){|n,*o|$t||=(h=$u._jisx0301("hash, please");File.read(caller[0][/^[^:]+/]).scan(S){|a,b|h[a]=b};h);v[0].new(*o){n=="#{n}"?n:$t[n.to_s]}.render(a,o[0].try(:[],:locals)||{})}}
|
15
|
+
# %w[set enable disable configure helpers use register].map{|m|D.(m){|*_,&b|b.try :[]}};END{Rack::Handler.get("webrick").run(a,Port:$z){|s|$r=s}}
|
16
|
+
# %w[params session].map{|m|D.(m){q.send m}};a.use Rack::Session::Cookie;a.use Rack::Lock;D.(:before){|&b|a.use Rack::Config,&b};before{|e|q=Rack::Request.new e;q.params.dup.map{|k,v|params[k.to_sym]=v}}}
|
17
|
+
#
|
18
|
+
#
|
19
|
+
# Why? Why? Why?
|
20
|
+
#
|
21
|
+
# > Until programmers stop acting like obfuscation is morally hazardous,
|
22
|
+
# > they're not artists, just kids who don’t want their food to touch.
|
23
|
+
# > -- \_why
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
# Almost Sinatra - A Breakdown - Line 1/6
|
29
|
+
#
|
30
|
+
# Line 1:
|
31
|
+
# %w.rack tilt date INT TERM..map{|l|trap(l){$r.stop}rescue require l};$u=Date;$z=($u.new.year + 145).abs;puts "== Almost Sinatra/No Version has taken the stage on #$z for development with backup from Webrick"
|
32
|
+
|
33
|
+
require 'rack'
|
34
|
+
require 'tilt'
|
35
|
+
|
36
|
+
trap( 'INT' ) { $server.stop } # rename $r to $server
|
37
|
+
trap( 'TERM' ) { $server.stop }
|
38
|
+
|
39
|
+
$port = 4567 # rename $z to $port
|
40
|
+
|
41
|
+
puts "== Almost Sinatra has taken the stage on #{$port} for development with backup from Webrick"
|
42
|
+
|
43
|
+
|
44
|
+
# Almost Sinatra - A Breakdown - Line 2/6
|
45
|
+
#
|
46
|
+
# Line 2:
|
47
|
+
# $n=Module.new{extend Rack;a,D,S,q=Rack::Builder.new,Object.method(:define_method),/@@ *([^\n]+)\n(((?!@@)[^\n]*\n)*)/m
|
48
|
+
|
49
|
+
$n = Module.new do
|
50
|
+
app = Rack::Builder.new # rename a to app
|
51
|
+
req = nil # rename q to req
|
52
|
+
|
53
|
+
|
54
|
+
# Almost Sinatra - A Breakdown - Line 3/6
|
55
|
+
#
|
56
|
+
# Line 3:
|
57
|
+
# %w[get post put delete].map{|m|D.(m){|u,&b|a.map(u){run->(e){[200,{"Content-Type"=>"text/html"},[a.instance_eval(&b)]]}}}}
|
58
|
+
|
59
|
+
['get','post','put','delete'].each do |method|
|
60
|
+
define_method method do |path, &block|
|
61
|
+
app.map( path ) do
|
62
|
+
run ->(env){ [200, {'Content-Type'=>'text/html'}, [app.instance_eval( &block )]]}
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
# Almost Sinatra - A Breakdown - Line 4/6
|
69
|
+
#
|
70
|
+
# Line 4:
|
71
|
+
# Tilt.mappings.map{|k,v|D.(k){|n,*o|$t||=(h=$u._jisx0301("hash, please");File.read(caller[0][/^[^:]+/]).scan(S){|a,b|h[a]=b};h);v[0].new(*o){n=="#{n}"?n:$t[n.to_s]}.render(a,o[0].try(:[],:locals)||{})}}
|
72
|
+
|
73
|
+
Tilt.mappings.each do |ext, engines| # rename k to ext and v to engines
|
74
|
+
define_method ext do |text, *args| # rename n to text and o to args
|
75
|
+
template = engines[0].new(*args) do
|
76
|
+
text
|
77
|
+
end
|
78
|
+
locals = (args[0].respond_to?(:[]) ? args[0][:locals] : nil) || {} # was o[0].try(:[],:locals)||{}
|
79
|
+
template.render( app, locals )
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
# Almost Sinatra - A Breakdown - Line 5/6
|
87
|
+
#
|
88
|
+
# Line 5:
|
89
|
+
# %w[set enable disable configure helpers use register].map{|m|D.(m){|*_,&b|b.try :[]}};END{Rack::Handler.get("webrick").run(a,Port:$z){|s|$r=s}}
|
90
|
+
|
91
|
+
# was END { ... }; change to run! method
|
92
|
+
define_method 'run!' do
|
93
|
+
Rack::Handler.get('webrick').run( app, Port:$port ) {|server| $server=server }
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
# Almost Sinatra - A Breakdown - Line 6/6
|
98
|
+
#
|
99
|
+
# Line 6:
|
100
|
+
# %w[params session].map{|m|D.(m){q.send m}};a.use Rack::Session::Cookie;a.use Rack::Lock;D.(:before){|&b|a.use Rack::Config,&b};before{|e|q=Rack::Request.new e;q.params.dup.map{|k,v|params[k.to_sym]=v}}}
|
101
|
+
|
102
|
+
['params','session'].each do |method|
|
103
|
+
define_method method do
|
104
|
+
req.send method
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
app.use Rack::Session::Cookie
|
109
|
+
app.use Rack::Lock
|
110
|
+
app.use Rack::Config do |env|
|
111
|
+
req = Rack::Request.new( env )
|
112
|
+
end
|
113
|
+
end # Module.new
|
metadata
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: almost-sinatra
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Konstantin Haase
|
8
|
+
- Gerald Bauer
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2017-12-05 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rack
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: tilt
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rdoc
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '4.0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '4.0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: hoe
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '3.16'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '3.16'
|
70
|
+
description: almost-sinatra - six lines of almost sinatra refactored and bundled up
|
71
|
+
for easy (re)use - build your own webframework from scratch with rack and tilt
|
72
|
+
email: ruby-talk@ruby-lang.org
|
73
|
+
executables: []
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files:
|
76
|
+
- HISTORY.md
|
77
|
+
- Manifest.txt
|
78
|
+
- README.md
|
79
|
+
files:
|
80
|
+
- HISTORY.md
|
81
|
+
- Manifest.txt
|
82
|
+
- README.md
|
83
|
+
- Rakefile
|
84
|
+
- lib/almost-sinatra.rb
|
85
|
+
homepage: https://github.com/rubylibs/almost-sinatra
|
86
|
+
licenses:
|
87
|
+
- Public Domain
|
88
|
+
metadata: {}
|
89
|
+
post_install_message:
|
90
|
+
rdoc_options:
|
91
|
+
- "--main"
|
92
|
+
- README.md
|
93
|
+
require_paths:
|
94
|
+
- lib
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '2.3'
|
100
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
requirements: []
|
106
|
+
rubyforge_project:
|
107
|
+
rubygems_version: 2.5.2
|
108
|
+
signing_key:
|
109
|
+
specification_version: 4
|
110
|
+
summary: almost-sinatra - six lines of almost sinatra refactored and bundled up for
|
111
|
+
easy (re)use - build your own webframework from scratch with rack and tilt
|
112
|
+
test_files: []
|