rack-rscript 0.5.0 → 0.5.1

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
1
  ---
2
2
  SHA1:
3
- metadata.gz: 55972a208542517da8beba86637de37f933782c3
4
- data.tar.gz: 9d61daaff9c6f99598ffbbe45b585bd3c3827584
3
+ metadata.gz: 236a901662593c36baccb7009a0b09691284922c
4
+ data.tar.gz: 85f8d4557a9d4c8d273e434786aefb6e4a8b8ab0
5
5
  SHA512:
6
- metadata.gz: 264e35690081f7b5fab48af4447becf1d4b16e7168532575bd18687d1778fea16622c2ebedee888031b3a89d8b0ad149e717f7c42501d093a5a8638ce995b831
7
- data.tar.gz: 506b439e1e559adfd235f391dbc8325cfa6e8ad298264efed408cb8160edd9c46e4a8a3d88494558f8dc3eb76256a2327471b39ee3a9155f287654821ebd2f9a
6
+ metadata.gz: 6017b101e716b89f5de149ae6f0fb0f366ddd3725364ae308cff7487169e2d345bb3fc8c00c084a7bcf887e37b5d6076c258504890dcb38fe6c0f9bbbc569fc7
7
+ data.tar.gz: 6b892c84e5a4f8261619b734b1678d5fe70b69e21393a9061164e1fad8a355f2d515307f690737884e8339dcd975e0371dc42bfe832f6a5002b6409a4fb060c0
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/rack-rscript.rb CHANGED
@@ -7,6 +7,8 @@ require 'rscript'
7
7
  require 'app-routes'
8
8
  require 'logger'
9
9
  require 'haml'
10
+ require 'slim'
11
+ require 'tilt'
10
12
 
11
13
  class Redirect
12
14
  attr_reader :to_url
@@ -21,6 +23,9 @@ class RackRscript
21
23
 
22
24
  def initialize(raw_opts={})
23
25
  @params = {}
26
+ @templates = {}
27
+
28
+ @rrscript = RScript.new
24
29
 
25
30
  opts = {logfile: '', logrotate: 'daily', pkg_src: ''}.merge(raw_opts)
26
31
  @url_base = opts[:pkg_src] # web server serving the RSF files
@@ -60,11 +65,20 @@ class RackRscript
60
65
  content, status_code = "404: page not found", 404
61
66
  end
62
67
 
63
- haml_proc = lambda{|c, ct| [Haml::Engine.new(c).render, 'text/html']}
68
+ tilt_proc = lambda do |s, content_type|
69
+ type = content_type[/[^\/]+$/]
70
+ s = [s,{}] unless s.is_a? Array
71
+ content, options = s
72
+ [Tilt[type].new(options) {|x| content}.render, 'text/html']
73
+ end
74
+
75
+ passthru_proc = lambda{|c, ct| [c,ct]}
64
76
 
65
77
  ct_list = {
66
- 'text/html' => lambda{|c, ct| [c,ct]},
67
- 'text/haml' => haml_proc, 'application/haml' => haml_proc
78
+ 'text/html' => passthru_proc,
79
+ 'text/haml' => tilt_proc,
80
+ 'text/slim' => tilt_proc,
81
+ 'text/plain' => passthru_proc
68
82
  }
69
83
  content_type ||= 'text/html'
70
84
  status_code ||= 200
@@ -91,7 +105,7 @@ class RackRscript
91
105
  @params.merge! h
92
106
  end
93
107
 
94
- result, args = RScript.new.read([url, jobs.split(/\s/), \
108
+ result, args = @rrscript.read([url, jobs.split(/\s/), \
95
109
  qargs].flatten)
96
110
 
97
111
  rws = self
@@ -117,6 +131,14 @@ class RackRscript
117
131
  def redirect(url)
118
132
  Redirect.new url
119
133
  end
134
+
135
+ def haml(name,options={})
136
+ render name, :haml
137
+ end
138
+
139
+ def slim(name,options={})
140
+ render name, :slim
141
+ end
120
142
 
121
143
  private
122
144
 
@@ -132,6 +154,27 @@ class RackRscript
132
154
  run_job("%s%s.rsf" % [@url_base, package], "//job:" + job, params, args)
133
155
  end
134
156
 
157
+ get '/source/:package/:job' do |package,job|
158
+ url = "%s%s.rsf" % [@url_base, package]
159
+ [@rrscript.read([url, '//job:' + job]).first, 'text/plain']
160
+ end
161
+
162
+ get '/source/:package' do |package,job|
163
+ url = "%s%s.rsf" % [@url_base, package]
164
+ [open(url,'User-Agent' => 'Rack-Rscript v0.5'){|x| x.read },'text/plain']
165
+ end
166
+
167
+
135
168
  end
169
+
170
+ def render(name,type, options={})
171
+ layout = Tilt[type.to_s].new(options) {|x| @templates[:layout]}
172
+ template = Tilt[type.to_s].new(options) {|x| @templates[name]}
173
+ layout.render{ template.render }
174
+ end
175
+
176
+ def template(name,&blk)
177
+ @templates.merge!({name => blk.call})
178
+ end
136
179
 
137
- end
180
+ end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-rscript
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -29,7 +29,7 @@ cert_chain:
29
29
  PrSIAHSciIEyWkxdvMiXuEOAU+cBA3uVHTfpn/QHpap2lC3rCNFDCt1jdNhsvPJW
30
30
  P8hoKd8f6iDnTJw4mqinZSTTIweaDo1s
31
31
  -----END CERTIFICATE-----
32
- date: 2013-08-17 00:00:00.000000000 Z
32
+ date: 2013-08-19 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: rack
metadata.gz.sig CHANGED
Binary file