nifty-utils 1.0.0
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.
- data/lib/nifty/utils.rb +2 -0
- data/lib/nifty/utils/active_record.rb +38 -0
- data/lib/nifty/utils/railtie.rb +23 -0
- data/lib/nifty/utils/version.rb +5 -0
- data/lib/nifty/utils/view_helpers.rb +52 -0
- metadata +50 -0
data/lib/nifty/utils.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
module Nifty
|
2
|
+
module Utils
|
3
|
+
module ActiveRecord
|
4
|
+
|
5
|
+
#:nodoc:
|
6
|
+
def self.included(base)
|
7
|
+
base.extend ClassMethods
|
8
|
+
end
|
9
|
+
|
10
|
+
module ClassMethods
|
11
|
+
|
12
|
+
# Allows you to automatically create inquiry methods for string field. For example, if you have
|
13
|
+
# an Order model which has a status field containing 'approved' or 'delivered' you may wish to
|
14
|
+
# have a #approved? or #delivered? method on the model.
|
15
|
+
#
|
16
|
+
# class Order < ActiveRecord::Baser
|
17
|
+
# STATUSES = ['approved', 'delivered']
|
18
|
+
# inquirer :status, *STATUSES
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
# order = Order.new(:status => 'approved')
|
22
|
+
# order.approved? #=> true
|
23
|
+
# order.delivered? #=> false
|
24
|
+
#
|
25
|
+
#
|
26
|
+
def inquirer(field, *options)
|
27
|
+
options.each do |option|
|
28
|
+
define_method "#{option}?" do
|
29
|
+
self.read_attribute(field).to_s == option.to_s
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Nifty
|
2
|
+
module Utils
|
3
|
+
class Railtie < Rails::Railtie #:nodoc:
|
4
|
+
|
5
|
+
initializer 'nifty.utils.initialize' do
|
6
|
+
|
7
|
+
# Load the Active Record extensions
|
8
|
+
ActiveSupport.on_load(:active_record) do
|
9
|
+
require 'nifty/utils/active_record'
|
10
|
+
::ActiveRecord::Base.send :include, Nifty::Utils::ActiveRecord
|
11
|
+
end
|
12
|
+
|
13
|
+
# load the Action View helpers
|
14
|
+
ActiveSupport.on_load(:action_view) do
|
15
|
+
require 'nifty/utils/view_helpers'
|
16
|
+
ActionView::Base.send :include, Nifty::Utils::ViewHelpers
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Nifty
|
2
|
+
module Utils
|
3
|
+
module ViewHelpers
|
4
|
+
|
5
|
+
# Displays the full contents of the `flash` hash within an appropriate <div>
|
6
|
+
# element. The ID of the outputted div will be `flash-alert` where alert is the
|
7
|
+
# type of flash.
|
8
|
+
#
|
9
|
+
# If there are multiple flashes set, they will all be displayed.
|
10
|
+
def display_flash
|
11
|
+
flashes = flash.collect do |key,msg|
|
12
|
+
content_tag :div, content_tag(:p, h(msg)), :id => "flash-#{key}"
|
13
|
+
end.join.html_safe
|
14
|
+
end
|
15
|
+
|
16
|
+
# Renders an `<img>` containing a link to the gravatar for the given e-mail address.
|
17
|
+
# Available options as follows:
|
18
|
+
#
|
19
|
+
# * <tt>:size</tt>: the size in pixels of the outputted gravatar. Defaults to 35.
|
20
|
+
# * <tt>:default</tt>: the gravatar to fallback to if the user has no gravatar
|
21
|
+
# (see gravatar for available options or pass a URL). Defaults to 'identicon'.
|
22
|
+
# * <tt>:rating</tt>: the maximum rating to use. Defaults to PG.
|
23
|
+
# * <tt>:class</tt>: the value for the class attribute for the outputted img tag.
|
24
|
+
# Defaults to 'gravatar'.
|
25
|
+
# * <tt>:secure</tt>: wherher or not to output an HTTPS version of the gravatar or not.
|
26
|
+
# Defaults to the value of `request.ssl?`.
|
27
|
+
def gravatar(email, options = {})
|
28
|
+
options[:size] ||= 35
|
29
|
+
options[:default] ||= 'identicon'
|
30
|
+
options[:rating] ||= 'PG'
|
31
|
+
options[:class] ||= 'gravatar'
|
32
|
+
options[:secure] ||= request.ssl?
|
33
|
+
host = (options[:secure] ? 'https://secure.gravatar.com' : 'http://gravatar.com')
|
34
|
+
path = "/avatar.php?gravatar_id=#{Digest::MD5.hexdigest(email)}&rating=#{options[:rating]}&size=#{options[:size] * 2}&d=#{options[:default]}"
|
35
|
+
image_tag([host,path].join, :class => options[:class], :width => options[:size], :height => options[:size])
|
36
|
+
end
|
37
|
+
|
38
|
+
# Renders a tick or cross character based on the provided boolean. Additional options
|
39
|
+
# can be passed if needed.
|
40
|
+
#
|
41
|
+
# * <tt>:true_text</tt> - text to display next to a tick
|
42
|
+
# * <tt>:false_text</tt> - text to display next to a cross
|
43
|
+
def boolean_tag(bool, tip = nil, options = {})
|
44
|
+
true_text, false_text = "", ""
|
45
|
+
true_text = " <b>#{options[:true_text]}</b>" if options[:true_text]
|
46
|
+
false_text = " <b>#{options[:false_text]}</b>" if options[:false_text]
|
47
|
+
content_tag :span, (bool ? "<span class='true'>✔#{true_text}</span>" : "<span class='false'>✘#{false_text}</span>").html_safe, :class => "boolean", :title => tip
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
metadata
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nifty-utils
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Adam Cooke
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-09-26 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: A set of useful utilties for Rails applications
|
15
|
+
email:
|
16
|
+
- adam@niftyware.io
|
17
|
+
executables: []
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- lib/nifty/utils/active_record.rb
|
22
|
+
- lib/nifty/utils/railtie.rb
|
23
|
+
- lib/nifty/utils/version.rb
|
24
|
+
- lib/nifty/utils/view_helpers.rb
|
25
|
+
- lib/nifty/utils.rb
|
26
|
+
homepage: https://github.com/niftyware/utils
|
27
|
+
licenses: []
|
28
|
+
post_install_message:
|
29
|
+
rdoc_options: []
|
30
|
+
require_paths:
|
31
|
+
- lib
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
requirements: []
|
45
|
+
rubyforge_project:
|
46
|
+
rubygems_version: 1.8.23
|
47
|
+
signing_key:
|
48
|
+
specification_version: 3
|
49
|
+
summary: A set of useful utilties for Rails applications
|
50
|
+
test_files: []
|