duffy 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +29 -5
- data/lib/duffy/duffy_helper.rb +20 -14
- data/lib/duffy/string.rb +6 -8
- data/lib/duffy/version.rb +1 -1
- data/lib/duffy.rb +35 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 361bbe6eab3ff805b7cb85505c2eaa7454288060
|
4
|
+
data.tar.gz: 3898b205ab16a15c0650c2114ac5ddee28b69d43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1dae822379c3e5093f64b02918624bce7fb1dea26bc8879f3904c78c2e5b7924103fa1413b8dbbfcd76bbf100aa5d177360a81025825812272b52fff92da226
|
7
|
+
data.tar.gz: c15affda9804b108a6de7e1236b8c774a8e91a4f4f435d5f19f7a150eeb350d4535a0b506813c4c20312cd3ac0e57a670f6642f6fac6b0220e1ab13f7f659175
|
data/README.md
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
# Duffy
|
2
2
|
|
3
|
-
|
3
|
+
This is a collection of reusable things I don't want to keep duplicating in tons of projects.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
7
|
Add this line to your application's Gemfile:
|
8
|
+
* This is a work in progress. If someone decides to use this, you may want to lock your version number in your gemfile.
|
8
9
|
|
9
10
|
```ruby
|
10
11
|
gem 'duffy'
|
@@ -14,13 +15,36 @@ And then execute:
|
|
14
15
|
|
15
16
|
$ bundle
|
16
17
|
|
17
|
-
|
18
|
+
## Usage
|
18
19
|
|
19
|
-
|
20
|
+
String Patches:
|
21
|
+
```ruby
|
22
|
+
to_ssn
|
23
|
+
to_numeric
|
24
|
+
to_alpha
|
25
|
+
to_alpha_numeric
|
26
|
+
pretty_phone
|
27
|
+
pretty_committer # TODO: Setup gem configuration to load patterns
|
28
|
+
space2nbsp
|
29
|
+
nl2br
|
30
|
+
gender_human
|
31
|
+
smart_titlecase # Note: Has config options. See lib/duffy.rb
|
32
|
+
```
|
20
33
|
|
21
|
-
|
34
|
+
Git Access:
|
35
|
+
This one is namespaced incase you use the 'git' gem. I found it to be overkill for what I wanted.
|
36
|
+
```ruby
|
37
|
+
Duffy::Git.log # => Produce tab separated listing of current git log.
|
38
|
+
Duffy::Git.count # => Count of git commits in current branch
|
39
|
+
```
|
22
40
|
|
23
|
-
|
41
|
+
View Helpers:
|
42
|
+
This is a work in progress. I'm going to try to put all my generic helpers here.
|
43
|
+
```ruby
|
44
|
+
menu_tag
|
45
|
+
excel_icon
|
46
|
+
icon
|
47
|
+
```
|
24
48
|
|
25
49
|
## Contributing
|
26
50
|
|
data/lib/duffy/duffy_helper.rb
CHANGED
@@ -1,32 +1,38 @@
|
|
1
1
|
module DuffyHelper
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
# This creates menu entries in the format Zurb Foundation expects.
|
4
|
+
# It's just an <li> with a link inside it.
|
5
|
+
# menu_tag('Help', help_path) => <li><a href="/help">Help</a></li>
|
6
|
+
def menu_tag(title, link, options = {})
|
7
|
+
content_tag(:li, link_to(title, link), options)
|
5
8
|
end
|
6
9
|
|
7
|
-
|
8
|
-
|
10
|
+
# Create Excel icon in consistent location
|
11
|
+
# This is intended to display the xlsx version of a view.
|
12
|
+
# Add a yield(:excel) somewhere in your application layout:
|
13
|
+
# content_tag( :li, yield(:excel), class: :excel) if content_for?(:excel)
|
14
|
+
def excel_icon(link = params.merge(format: "xlsx"))
|
9
15
|
content_for :excel do
|
10
|
-
link_to(image_tag('excel.png'
|
16
|
+
link_to(image_tag('excel.png'), link)
|
11
17
|
end
|
12
18
|
end
|
13
19
|
|
20
|
+
# Create a simple link with the class "icon"
|
21
|
+
# Generate a uniq and reasonable id based on the link passed (if any)
|
22
|
+
# Add any classes passed in via options
|
23
|
+
# Add the "favorite" class if icon is favorited
|
24
|
+
# - This is application specific and will just not do anything if it runs into a problem
|
25
|
+
# If any uncaught exceptions are thrown in production you'll just get nothing, otherwise you'll get the error on screen.
|
14
26
|
def icon(title, link, options = {})
|
15
27
|
begin
|
16
|
-
options[:id] = "icon_#{link.parameterize("_")}"
|
28
|
+
options[:id] = "icon_#{link.parameterize("_")}" unless link.blank?
|
17
29
|
options[:class] = [:icon] << options[:class]
|
18
|
-
options[:class] <<
|
30
|
+
options[:class] << :favorite if defined?(current_user) and (current_user.person.details.where(key: "favorite_#{options[:id]}").any? rescue false)
|
31
|
+
options[:class] = options[:class].flatten.compact
|
19
32
|
link_to(title, link, options)
|
20
33
|
rescue Exception => e
|
21
34
|
Rails.env.development? ? content_tag(:p, e) : nil
|
22
35
|
end
|
23
36
|
end
|
24
37
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
38
|
end
|
data/lib/duffy/string.rb
CHANGED
@@ -57,14 +57,10 @@ class String
|
|
57
57
|
end
|
58
58
|
|
59
59
|
# Parse a git username into a friendly name
|
60
|
+
# Expects committers to be a hash in this format: { jpd" => "Jacob", /ers|Eric/ => "Eric" }
|
61
|
+
# All String keys are converted to Regex, explicit Regex is fine too.
|
60
62
|
def pretty_committer
|
61
|
-
|
62
|
-
when /jpd/ then "Jacob"
|
63
|
-
when /ers|Eric/ then "Eric"
|
64
|
-
when /gac/ then "Glenn"
|
65
|
-
when /jes/ then "Samsky"
|
66
|
-
else self
|
67
|
-
end
|
63
|
+
Hash(Duffy.configuration.committers).map{|k,v| v if Regexp.new(k) =~ self}.compact.first or self
|
68
64
|
end
|
69
65
|
|
70
66
|
def space2nbsp
|
@@ -125,9 +121,11 @@ class String
|
|
125
121
|
end #each
|
126
122
|
|
127
123
|
# Special Cases:
|
124
|
+
upcase_re = (Array(Duffy.configuration.upcase_custom) + Array(Duffy.configuration.upcase_default)).uniq.join("|")
|
125
|
+
|
128
126
|
result.gsub!(/ V(s?)\. /, ' v\1. ') # "v." and "vs."
|
129
127
|
result.gsub!(/([''])S\b/, '\1s') # 'S (otherwise you get "the SEC'S decision")
|
130
|
-
result.gsub!(/\b(
|
128
|
+
result.gsub!(/\b(#{upcase_re})\b/i) { |w| w.upcase } unless upcase_re.blank?
|
131
129
|
result
|
132
130
|
end
|
133
131
|
end
|
data/lib/duffy/version.rb
CHANGED
data/lib/duffy.rb
CHANGED
@@ -13,4 +13,38 @@ require File.dirname(__FILE__) + "/duffy/railtie" if defined?(Rails)
|
|
13
13
|
module Duffy
|
14
14
|
class Engine < Rails::Engine
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
|
+
def self.configuration
|
18
|
+
@configuration ||= Duffy::Configuration.new
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.configure
|
22
|
+
yield configuration
|
23
|
+
end
|
24
|
+
|
25
|
+
# Override any duffy defaults conveniently with config options
|
26
|
+
# example:
|
27
|
+
# [config/initializers/duffy.rb]
|
28
|
+
# Duffy.configure do |config|
|
29
|
+
# config.upcase_custom = %w(AOB CHS CME CT DFM HRS PA UDDS UWMF WREN)
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
class Configuration
|
33
|
+
include ActiveSupport::Configurable
|
34
|
+
|
35
|
+
# Smart Titlecase
|
36
|
+
# Use :update_custom to add uppercase special cases
|
37
|
+
# Use :update_default to replace my defaults
|
38
|
+
config_accessor(:upcase_custom) # {%w(NBC CNN FOO)}
|
39
|
+
config_accessor(:upcase_default) {%w(HR II III IV Q&A USA)}
|
40
|
+
|
41
|
+
# Pretty Committer
|
42
|
+
config_accessor(:committers) # {"jpd" => "Jacob", "ers|Eric" => "Eric"}
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: duffy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jacob Duffy
|
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
96
|
version: '0'
|
97
97
|
requirements: []
|
98
98
|
rubyforge_project:
|
99
|
-
rubygems_version: 2.4.
|
99
|
+
rubygems_version: 2.4.3
|
100
100
|
signing_key:
|
101
101
|
specification_version: 4
|
102
102
|
summary: Library of things
|