Dex_Rack 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  require "sinatra/base"
2
2
 
3
3
  class Dex_Rack < Sinatra::Base
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
data/lib/Dex_Rack.rb CHANGED
@@ -13,7 +13,7 @@ class Dex_Rack
13
13
  use Rack::Lint
14
14
 
15
15
  set :public_folder, RACK_DIR + "/public"
16
- set :views_folder, RACK_DIR + "/views"
16
+ set :views_folder, RACK_DIR + "/views"
17
17
 
18
18
  # use Rack::Static, \
19
19
  # :urls=>%w{ /stylesheets/ /javascripts/ /images/ /index.html }, \
@@ -80,115 +80,129 @@ class Dex_Rack
80
80
  redirect to("/"), 302
81
81
  end
82
82
 
83
- %w{ dex dex? }.each { |m|
84
- eval %~
83
+ module Base # ============================================
84
+
85
+ %w{ dex dex? }.each { |m|
86
+ eval %~
85
87
  def #{m} *args
86
88
  settings.#{m}(*args)
87
89
  end
88
- ~
89
- }
90
+ ~
91
+ }
90
92
 
91
- def recent page = :last, limit = 10
92
- nav = page_nav( dex.count, limit, page)
93
+ def count
94
+ @count ||= dex.count
95
+ end
93
96
 
94
- return redirect(to('/'), 302) if !nav
95
-
96
- nav[:prev_url] = "/recent/#{nav[:prev]}" if nav[:prev]
97
- nav[:next_url] = "/recent/#{nav[:next]}" if nav[:next]
98
- nav[:next_url] = "/" if nav[:next] == nav[:total]
99
-
100
- vars = nav.merge(
101
- Hash[
102
- :title => "Dex List",
103
- :list => dex.limit(nav[:limit], nav[:offset]).to_a.reverse,
104
- :app => self
105
- ])
106
-
107
- layout(vars, :index)
108
- end
97
+ def list_recent limit, offset
98
+ dex.limit(limit, offset).to_a.reverse
99
+ end
109
100
 
110
- def layout vars, file_name
111
- Markaby::Builder.set(:indent, 2)
112
- mab = Markaby::Builder.new
113
- file = File.join(settings.views_folder, "/layout.rb")
114
- vars[:view_file] = File.join(settings.views_folder, "#{file_name}.rb" )
115
- vars[:app] = self
116
- mab.instance_eval {
117
- eval File.read(file), nil, file, 1
118
- }
119
- mab.to_s
120
- end
101
+ def recent page = :last, limit = 10
102
+ nav = page_nav( count, limit, page)
121
103
 
122
- def status_to_word num
123
- case num
124
- when 0
125
- "Unresolved"
126
- when 1
127
- "Resolved"
104
+ return redirect(to('/'), 302) if !nav
105
+
106
+ nav[:prev_url] = "/recent/#{nav[:prev]}" if nav[:prev]
107
+ nav[:next_url] = "/recent/#{nav[:next]}" if nav[:next]
108
+ nav[:next_url] = "/" if nav[:next] == nav[:total]
109
+
110
+ vars = nav.merge(
111
+ Hash[
112
+ :title => "Dex List",
113
+ :list => dex.limit(nav[:limit], nav[:offset]).to_a.reverse,
114
+ :app => self
115
+ ])
116
+
117
+ layout(vars, :index)
118
+ end
119
+
120
+ def layout vars, file_name
121
+ Markaby::Builder.set(:indent, 2)
122
+ mab = Markaby::Builder.new
123
+ file = File.join(settings.views_folder, "/layout.rb")
124
+ vars[:view_file] = File.join(settings.views_folder, "#{file_name}.rb" )
125
+ vars[:app] = self
126
+ mab.instance_eval {
127
+ eval File.read(file), nil, file, 1
128
+ }
129
+ mab.to_s
128
130
  end
129
- end
130
131
 
131
- def backtrace_to_html s
132
- last_file = nil
133
- str = ""
134
- s.split("\n").map { |l|
135
- file, num, code = l.split(':')
136
- str.<< %!
132
+ def status_to_word num
133
+ case num
134
+ when 0
135
+ "Unresolved"
136
+ when 1
137
+ "Resolved"
138
+ end
139
+ end
140
+
141
+ def backtrace_to_html s
142
+ last_file = nil
143
+ str = ""
144
+ s.split("\n").map { |l|
145
+ file, num, code = l.split(':')
146
+ str.<< %!
137
147
  <div class="line">
138
148
  <span class="num">#{CGI::escapeHTML num}</span>
139
149
  <span class="code">#{CGI::escapeHTML code}</span>
140
150
  </div>!
141
- str.<< %!
151
+ str.<< %!
142
152
  <div class="file">#{CGI::escapeHTML file}</div>
143
- ! if file != last_file
144
-
145
- last_file = file
146
- str
147
- }.join
148
- end
153
+ ! if file != last_file
149
154
 
150
- def human_time t
151
- target = Time.now.utc.to_i - t.to_i
152
- if target < 61
153
- return "<1m ago"
154
- else
155
- ChronicDuration.output(target, :format=>:short).sub(/\d+s\Z/, '') + " ago"
155
+ last_file = file
156
+ str
157
+ }.join
158
+ end
159
+
160
+ def human_time t
161
+ target = Time.now.utc.to_i - t.to_i
162
+ if target < 61
163
+ return "<1m ago"
164
+ else
165
+ ChronicDuration.output(target, :format=>:short).sub(/\d+s\Z/, '') + " ago"
166
+ end
156
167
  end
157
- end
158
168
 
159
- def page_nav count, div, page = :last
160
- count = count.to_i
169
+ def page_nav count, div, page = :last
170
+ count = count.to_i
161
171
 
162
- div = div.to_i
163
- total = ( count / Float(div) ).ceil
164
- page = total if page == :last
165
- page = page.to_i
166
-
167
- if count > 0
168
- if total < 1 || page < 1 || page > total || div < 2
169
- return nil
172
+ div = div.to_i
173
+ total = ( count / Float(div) ).ceil
174
+ page = total if page == :last
175
+ page = page.to_i
176
+
177
+ if count > 0
178
+ if total < 1 || page < 1 || page > total || div < 2
179
+ return nil
180
+ end
170
181
  end
182
+
183
+ n = page + 1
184
+ n = nil if n > total
185
+ p = page - 1
186
+ p = nil if p < 1
187
+ offset = div * (page - 1)
188
+ offset = 0 if offset < 1
189
+
190
+ Hash[
191
+
192
+ :total => total,
193
+ :next => n,
194
+ :prev => p,
195
+ :page => page,
196
+
197
+ :count => count,
198
+ :limit => div,
199
+ :offset => offset
200
+
201
+ ]
171
202
  end
172
203
 
173
- n = page + 1
174
- n = nil if n > total
175
- p = page - 1
176
- p = nil if p < 1
177
- offset = div * (page - 1)
178
- offset = 0 if offset < 1
179
-
180
- Hash[
181
-
182
- :total => total,
183
- :next => n,
184
- :prev => p,
185
- :page => page,
186
-
187
- :count => count,
188
- :limit => div,
189
- :offset => offset
190
-
191
- ]
192
- end
204
+ end # === Base =======================================================
193
205
 
206
+ include Base
207
+
194
208
  end # === class Dex_Rack
data/spec/Dex_App.rb CHANGED
@@ -1,4 +1,41 @@
1
1
 
2
+ describe "Dex_Rack" do
3
+
4
+ it "has methods that can be overridden" do
5
+ m = Module.new {
6
+ def recent *args
7
+ 'ok'
8
+ end
9
+
10
+ }
11
+
12
+ d = Class.new(Dex_Rack) {
13
+
14
+ include m
15
+
16
+ def initialize
17
+ end
18
+
19
+ get "/new-recent" do
20
+ recent
21
+ end
22
+
23
+ }
24
+
25
+ def self.app
26
+ @app
27
+ end
28
+
29
+ @app = d
30
+ get "/new-recent"
31
+
32
+ last_response.body.should == 'ok'
33
+
34
+ end
35
+
36
+ end # === Dex_Rack
37
+
38
+
2
39
  describe "get /" do
3
40
 
4
41
  behaves_like 'Test DB'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Dex_Rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-07 00:00:00.000000000 Z
12
+ date: 2012-05-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bacon