sinatra-bells 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d6214bebfaad377d0320032568aec9fd2b53d6ff
4
- data.tar.gz: c7d10f33f00a5b6e69c45aefc6f5bb6a907003cb
3
+ metadata.gz: 98d7abf3723618e62f1581222f4cc1cfc104b310
4
+ data.tar.gz: aae9d2fea9ccbc9a5d7e10a00920be9c20fe601d
5
5
  SHA512:
6
- metadata.gz: 9812d79432110a6617fe07e35a06d71d40e7e5523bdeb378d5866cdaea4356d2cc9de4e86679eb097b82d451deab3f859704ac266cb40dae943869307f68f179
7
- data.tar.gz: 4b971fa58f45e4821697ff43b7cb6b2180099e67ff2c2d8b3f74faf1c60c912d192be21a7c62e83386b055253297379a0f8e49fcc124eeb300f7e67ec997acf9
6
+ metadata.gz: 0d07e09b9fea86fbd557a73bd5c8a05bcbcb7ab819fd92572695878342a57fb19c373f8d6d5a634e6f010e507566e2ffee99645dd14dfdcbd0b422afbd1e0006
7
+ data.tar.gz: ebf36cc4c4eae35d5a21fc2388c1c7cf4ffb7a52377b7214dbef14f68217094c0f885c286db9c26fd96a232e289d1a30cab4ab3190848ce741496a0f234d46d8
data/ChangeLog CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  = Revision history for sinatra-bells
4
4
 
5
+ == 0.0.2 [2014-12-19]
6
+
7
+ * Sinatra::Bells::Helpers::Controller installs default error handlers.
8
+ * Added Sinatra::Bells::Helpers::HTML#link_to_if.
9
+ * Added Sinatra::Bells::Helpers::HTML#disabled?.
10
+ * Added Sinatra::Bells::Helpers::HTML#active?.
11
+ * Extended Sinatra::Bells#route to handle regexp paths.
12
+ * Extended Sinatra::Bells::Helpers::HTML#link_to to accept query params.
13
+
5
14
  == 0.0.1 [2014-04-14]
6
15
 
7
16
  * First release.
data/README CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  == VERSION
4
4
 
5
- This documentation refers to sinatra-bells version 0.0.1
5
+ This documentation refers to sinatra-bells version 0.0.2
6
6
 
7
7
 
8
8
  == DESCRIPTION
@@ -12,7 +12,7 @@ Extends Sinatra[http://sinatrarb.com/] with some convenience shortcuts.
12
12
 
13
13
  == LINKS
14
14
 
15
- Documentation:: https://blackwinter.github.io/sinatra-bells/
15
+ Documentation:: https://blackwinter.github.com/sinatra-bells
16
16
  Source code:: https://github.com/blackwinter/sinatra-bells
17
17
  RubyGem:: https://rubygems.org/gems/sinatra-bells
18
18
 
data/Rakefile CHANGED
@@ -1,4 +1,4 @@
1
- require File.expand_path(%q{../lib/sinatra/bells/version}, __FILE__)
1
+ require_relative 'lib/sinatra/bells/version'
2
2
 
3
3
  begin
4
4
  require 'hen'
@@ -13,7 +13,7 @@ begin
13
13
  email: %q{jens.wille@gmail.com},
14
14
  license: %q{AGPL-3.0},
15
15
  homepage: :blackwinter,
16
- dependencies: %w[sinatra],
16
+ dependencies: { sinatra: '~> 1.4' },
17
17
 
18
18
  required_ruby_version: '>= 1.9.3'
19
19
  }
@@ -34,8 +34,30 @@ class Sinatra::Bells
34
34
 
35
35
  module Controller
36
36
 
37
+ def self.included(base)
38
+ error_code = Rack::Utils::HTTP_STATUS_CODES
39
+
40
+ base.class_eval {
41
+ [400, 401, 403, 404, 500].each { |code|
42
+ error(code) {
43
+ @code, @error = code, error_code[code]
44
+ render_error
45
+ }
46
+ }
47
+
48
+ [400, 401, 403].each { |code|
49
+ name = error_code[code].downcase.tr(' ', '_')
50
+ define_method(name) { |body = nil| error(code, body) }
51
+ }
52
+ }
53
+ end
54
+
37
55
  protected
38
56
 
57
+ def render_error
58
+ erb ''
59
+ end
60
+
39
61
  def send_file(file, options = {})
40
62
  options.is_a?(Hash) ? super :
41
63
  File.readable?(file) ? super(file, type: options) : not_found
@@ -26,6 +26,8 @@
26
26
  ###############################################################################
27
27
  #++
28
28
 
29
+ require 'cgi'
30
+
29
31
  class Sinatra::Bells
30
32
 
31
33
  module Helpers
@@ -36,7 +38,23 @@ class Sinatra::Bells
36
38
 
37
39
  def link_to(text, *args)
38
40
  options = args.last.is_a?(Hash) ? args.pop : {}
39
- _a(text, options.merge(href: uri(args.join('/'))))
41
+
42
+ href = uri(args.join('/'))
43
+
44
+ if params = options.delete(:params)
45
+ href << '?' << Array(params).flat_map { |key, value|
46
+ key = CGI.escape(key.to_s)
47
+
48
+ value.nil? ? key : Array(value)
49
+ .map { |val| "#{key}=#{CGI.escape(val.to_s)}" }
50
+ }.join('&')
51
+ end
52
+
53
+ _a(text, options.merge(href: href))
54
+ end
55
+
56
+ def link_to_if(condition, text, *args)
57
+ condition ? link_to(text, *args) : block_given? ? yield(text, *args) : text
40
58
  end
41
59
 
42
60
  def _tag(name, *args)
@@ -64,6 +82,14 @@ class Sinatra::Bells
64
82
  _tag(:ul, *args) { |tag| list.each { |*item| tag << yield(*item) } }
65
83
  end
66
84
 
85
+ def active?(path)
86
+ 'active' if request.path_info =~ /\A#{Regexp.escape(path)}(?:\/|\?|\z)/
87
+ end
88
+
89
+ def disabled?(condition)
90
+ 'disabled' unless condition
91
+ end
92
+
67
93
  end
68
94
 
69
95
  end
@@ -6,7 +6,7 @@ module Sinatra
6
6
 
7
7
  MAJOR = 0
8
8
  MINOR = 0
9
- TINY = 1
9
+ TINY = 2
10
10
 
11
11
  class << self
12
12
 
data/lib/sinatra/bells.rb CHANGED
@@ -61,12 +61,10 @@ module Sinatra
61
61
  template, render = render, settings.default_render
62
62
  end
63
63
 
64
- dot = '.' unless path.end_with?('/')
65
-
66
64
  blocks = {}
67
65
 
68
- render.each { |type, method|
69
- super(verb, "#{path}#{dot}#{type}", options, &blocks[type] = lambda {
66
+ type_paths(render, path) { |type_path, type, method|
67
+ super(verb, type_path, options, &blocks[type] = lambda {
70
68
  content_type(type)
71
69
  instance_eval(&block)
72
70
  instance_eval(&method)
@@ -78,8 +76,21 @@ module Sinatra
78
76
  send(settings.default_renderer, template)
79
77
  }
80
78
 
79
+ blocks.each { |type, type_block|
80
+ super(verb, path, options.merge(provides: type), &type_block)
81
+ }
82
+ end
83
+
84
+ def type_paths(render, path)
85
+ path, re = path.source, path if path.is_a?(Regexp)
86
+ anchor = $& if re && path.sub!(/\\z|\$/i, '')
87
+
88
+ dot = '.' unless path.end_with?('/')
89
+ dot = Regexp.escape(dot) if dot && re
90
+
81
91
  render.each { |type, method|
82
- super(verb, path, options.merge(provides: type), &blocks[type])
92
+ type_path = "#{path}#{dot}#{type}#{anchor}"
93
+ yield re ? Regexp.new(type_path, re.options) : type_path, type, method
83
94
  }
84
95
  end
85
96
 
metadata CHANGED
@@ -1,43 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-bells
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jens Wille
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-14 00:00:00.000000000 Z
11
+ date: 2014-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '1.4'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: hen
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.8'
31
34
  - - ">="
32
35
  - !ruby/object:Gem::Version
33
- version: '0'
36
+ version: 0.8.1
34
37
  type: :development
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '0.8'
38
44
  - - ">="
39
45
  - !ruby/object:Gem::Version
40
- version: '0'
46
+ version: 0.8.1
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: rake
43
49
  requirement: !ruby/object:Gem::Requirement
@@ -77,13 +83,18 @@ licenses:
77
83
  metadata: {}
78
84
  post_install_message: |2+
79
85
 
80
- sinatra-bells-0.0.1 [2014-04-14]:
86
+ sinatra-bells-0.0.2 [2014-12-19]:
81
87
 
82
- * First release.
88
+ * Sinatra::Bells::Helpers::Controller installs default error handlers.
89
+ * Added Sinatra::Bells::Helpers::HTML#link_to_if.
90
+ * Added Sinatra::Bells::Helpers::HTML#disabled?.
91
+ * Added Sinatra::Bells::Helpers::HTML#active?.
92
+ * Extended Sinatra::Bells#route to handle regexp paths.
93
+ * Extended Sinatra::Bells::Helpers::HTML#link_to to accept query params.
83
94
 
84
95
  rdoc_options:
85
96
  - "--title"
86
- - sinatra-bells Application documentation (v0.0.1)
97
+ - sinatra-bells Application documentation (v0.0.2)
87
98
  - "--charset"
88
99
  - UTF-8
89
100
  - "--line-numbers"
@@ -104,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
115
  version: '0'
105
116
  requirements: []
106
117
  rubyforge_project:
107
- rubygems_version: 2.2.2
118
+ rubygems_version: 2.4.5
108
119
  signing_key:
109
120
  specification_version: 4
110
121
  summary: Sinatra with some more bells and whistles.