Dex_Rack 0.1.1 → 0.1.2

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.
@@ -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