rack-rscript 0.5.0 → 0.5.1

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: 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