snails 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/snails.rb +72 -6
- data/snails.gemspec +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4400d3577ffe665951a185e806b60dfc17d4df1f
|
4
|
+
data.tar.gz: 7c3b08235ab641c057492e1b947ea00b6c8e2ea4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 427ca357316bc92b3bb1ecdfbeda822e872e0e5c958496c8bcd431c43fe10071c8fb5f080fed5e34a013a6da62f7b2daa5cb6294279a505f81c3f8ebe92c1e9b
|
7
|
+
data.tar.gz: 803ee94a83c7c8740c0788742f85389ef522a5b6596542e4c26124b9a4fd8d04e67a4c27bd623c8481137800bf3c64cd75f830c23a9b93bb468b01821c3f2b13
|
data/lib/snails.rb
CHANGED
@@ -49,19 +49,21 @@ module Snails
|
|
49
49
|
super
|
50
50
|
end
|
51
51
|
|
52
|
-
LOGGER = Logger.new(File.exist?("#{Dir.pwd}/log") ? "#{Dir.pwd}/log/#{Snails.env}.log" : nil)
|
53
|
-
|
54
52
|
cwd = Pathname.new(Dir.pwd) # settings.root
|
53
|
+
LOGGER = Logger.new(File.exist?(cwd.join('log')) ? cwd.join('log', "#{Snails.env}.log") : nil)
|
54
|
+
|
55
55
|
set :protection, except: :frame_options
|
56
56
|
set :views, cwd.join('lib', 'views')
|
57
57
|
set :session_secret, ENV.fetch('SESSION_SECRET') { SecureRandom.hex }
|
58
|
+
set :static_paths, %w(/css /img /js /files /fonts favicon.ico)
|
59
|
+
|
58
60
|
enable :sessions
|
59
61
|
enable :method_override
|
60
62
|
enable :logging
|
61
63
|
|
62
64
|
register Sinatra::Flash
|
63
65
|
use Rack::CommonLogger, LOGGER
|
64
|
-
use Rack::Static, urls:
|
66
|
+
use Rack::Static, urls: static_paths, root: 'public'
|
65
67
|
|
66
68
|
configure :production, :staging do
|
67
69
|
set :raise_errors, true
|
@@ -100,7 +102,7 @@ module Snails
|
|
100
102
|
end
|
101
103
|
|
102
104
|
def show_error(code)
|
103
|
-
erb :"errors/#{code}", :
|
105
|
+
erb :"errors/#{code}", layout: false
|
104
106
|
end
|
105
107
|
|
106
108
|
end
|
@@ -183,7 +185,7 @@ module Snails
|
|
183
185
|
cwd = Pathname.new(Dir.pwd)
|
184
186
|
app.set :sprockets, Sprockets::Environment.new(cwd)
|
185
187
|
app.set :assets_prefix, '/assets' # URL
|
186
|
-
|
188
|
+
app.set :digest_assets, false
|
187
189
|
app.set :assets_public_path, -> { cwd.join('public', 'assets') } # output dir
|
188
190
|
app.set :assets_paths, %w(assets) # source files
|
189
191
|
app.set :assets_precompile, %w(js/main.js css/main.css)
|
@@ -202,7 +204,7 @@ module Snails
|
|
202
204
|
|
203
205
|
app.configure :development do
|
204
206
|
# allow asset requests to pass
|
205
|
-
|
207
|
+
app.allow_paths.push /^#{app.assets_prefix}(\/\w+)?\/([\w\.-]+)/
|
206
208
|
|
207
209
|
# and serve them
|
208
210
|
app.get "#{app.assets_prefix}/*" do |path|
|
@@ -279,6 +281,10 @@ module Snails
|
|
279
281
|
|
280
282
|
module ViewHelpers
|
281
283
|
|
284
|
+
def self.included(base)
|
285
|
+
Time.include(RelativeTime) unless Time.instance_methods.include?(:relative)
|
286
|
+
end
|
287
|
+
|
282
288
|
def action
|
283
289
|
request.path_info.gsub('/','').blank? ? 'home' : request.path_info.gsub('/',' ')
|
284
290
|
end
|
@@ -293,6 +299,29 @@ module Snails
|
|
293
299
|
erb(view_name.to_sym, { layout: layout }.merge(opts))
|
294
300
|
end
|
295
301
|
|
302
|
+
#########################################
|
303
|
+
# pagination
|
304
|
+
|
305
|
+
def get_page(counter)
|
306
|
+
curr = params[:page].to_i
|
307
|
+
i = (curr == 0 && counter == 1) ? 2
|
308
|
+
: (curr == 2 && counter == -1) ? 0
|
309
|
+
: curr + counter
|
310
|
+
i == 0 ? "" : "/page/#{i}"
|
311
|
+
end
|
312
|
+
|
313
|
+
def show_pager(array, path)
|
314
|
+
# remove page from path
|
315
|
+
path = (env['SCRIPT_NAME'] + path.gsub(/[?|&|\/]page[=|\/]\d+/,''))
|
316
|
+
|
317
|
+
prevlink = '<li>' + link_to("#{path}#{get_page(-1)}", '← Prev').sub('//', '/') + '</li>'
|
318
|
+
nextlink = array.count != Routes::PER_PAGE ? ""
|
319
|
+
: '<li>' + link_to("#{path}#{get_page(1)}", 'Next →').sub('//', '/') + '</li>'
|
320
|
+
|
321
|
+
str = params[:page] ? prevlink + nextlink : nextlink
|
322
|
+
str != "" ? "<ul class='pager'>" + str + "</ul>" : ''
|
323
|
+
end
|
324
|
+
|
296
325
|
#########################################
|
297
326
|
# formatting
|
298
327
|
|
@@ -426,4 +455,41 @@ module Snails
|
|
426
455
|
|
427
456
|
end
|
428
457
|
|
458
|
+
module RelativeTime
|
459
|
+
|
460
|
+
def in_words
|
461
|
+
minutes = (((Time.now - self).abs)/60).round
|
462
|
+
return nil if minutes < 0
|
463
|
+
|
464
|
+
case minutes
|
465
|
+
when 0..1 then 'menos de un min'
|
466
|
+
when 2..4 then 'menos de 5 min'
|
467
|
+
when 5..14 then 'menos de 15 min'
|
468
|
+
when 15..29 then "media hora"
|
469
|
+
when 30..59 then "#{minutes} minutos"
|
470
|
+
when 60..119 then '1 hora'
|
471
|
+
when 120..239 then '2 horas'
|
472
|
+
when 240..479 then '4 horas'
|
473
|
+
when 480..719 then '8 horas'
|
474
|
+
when 720..1439 then '12 horas'
|
475
|
+
when 1440..11519 then "#{(minutes/1440).floor} días"
|
476
|
+
when 11520..43199 then "#{(minutes/11520).floor} semanas"
|
477
|
+
when 43200..525599 then "#{(minutes/43200).floor} meses"
|
478
|
+
else "#{(minutes/525600).floor} años"
|
479
|
+
end
|
480
|
+
end
|
481
|
+
|
482
|
+
def relative
|
483
|
+
if str = in_words
|
484
|
+
if Time.now < self
|
485
|
+
# "#{str} más"
|
486
|
+
"en #{str}"
|
487
|
+
else
|
488
|
+
"hace #{str}"
|
489
|
+
end
|
490
|
+
end
|
491
|
+
end
|
492
|
+
|
493
|
+
end
|
494
|
+
|
429
495
|
end
|
data/snails.gemspec
CHANGED