snails 0.0.5 → 0.0.6
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 +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