safai 0.0.24 → 0.0.25
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/safai.rb +117 -6
- data/lib/safai/address.rb +0 -0
- data/lib/safai/clean.rb +0 -0
- data/lib/safai/date.rb +0 -0
- data/lib/safai/gravatar.rb +0 -0
- data/lib/safai/money.rb +0 -0
- data/lib/safai/regex.rb +0 -0
- data/lib/safai/spreadsheet.rb +0 -0
- metadata +4 -58
- data/generators/safai/safai_generator.rb +0 -9
- data/generators/safai/templates/migration.rb +0 -10
- data/generators/safai/templates/model.rb +0 -38
- data/init.rb +0 -1
- data/lib/safai/fires.rb +0 -37
- data/safai.gemspec +0 -32
data/lib/safai.rb
CHANGED
@@ -1,3 +1,119 @@
|
|
1
|
+
class Safai
|
2
|
+
|
3
|
+
#======================================
|
4
|
+
|
5
|
+
module Helpers
|
6
|
+
|
7
|
+
require 'money'
|
8
|
+
|
9
|
+
def f(ff)
|
10
|
+
sprintf("%0.02f", ff)
|
11
|
+
end
|
12
|
+
|
13
|
+
def title(page_title)
|
14
|
+
content_for(:title) { page_title }
|
15
|
+
end
|
16
|
+
|
17
|
+
def smart_date(i)
|
18
|
+
return "" if i.blank?
|
19
|
+
i.year == Time.now.year ? i.strftime("%d-%b") : i.strftime("%d-%b-%Y")
|
20
|
+
end
|
21
|
+
|
22
|
+
def smart_due_date(i)
|
23
|
+
if i == nil
|
24
|
+
return ""
|
25
|
+
elsif i.class.to_s == "Time" or i.class.to_s == "ActiveSupport::TimeWithZone"
|
26
|
+
i = i.to_date
|
27
|
+
end
|
28
|
+
if Date.today == i
|
29
|
+
return "<span style=\"background-color:#F7FAB9;padding:0px 2px 0px 2px;\">Today</span>"
|
30
|
+
elsif i - Date.today == 1
|
31
|
+
return "<span style=\"background-color:#F7FAB9;padding:0px 2px 0px 2px;\">Tomorrow</span>"
|
32
|
+
elsif Date.today - i > 0.9
|
33
|
+
return "<span style=\"background-color:#FFC7C7;padding:0px 2px 0px 2px;\">" + smart_date(i) + "</span>"
|
34
|
+
elsif Date.today - i < 1
|
35
|
+
return "<span style=\"background-color:#D2FFCC;padding:0px 2px 0px 2px;\">" + smart_date(i) + "</span>"
|
36
|
+
end
|
37
|
+
return smart_date(i)
|
38
|
+
end
|
39
|
+
|
40
|
+
def location_summary(u)
|
41
|
+
return Safai::Address.to_s(u)
|
42
|
+
end
|
43
|
+
|
44
|
+
def location_summary_short(u)
|
45
|
+
return Safai::Address.gist(u)
|
46
|
+
end
|
47
|
+
|
48
|
+
def location_map(u)
|
49
|
+
return Safai::Address.map(u, 300, 95)
|
50
|
+
end
|
51
|
+
|
52
|
+
def amt2(c, amount)
|
53
|
+
m = Money::Currency.new(c)
|
54
|
+
amount = sprintf("%0.02f", amount)
|
55
|
+
if !m.blank?
|
56
|
+
if !m.symbol.blank?
|
57
|
+
return "#{m.symbol} #{amount.to_s}".html_safe
|
58
|
+
end
|
59
|
+
end
|
60
|
+
return "#{c} #{amount.to_s}"
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
#======================================
|
66
|
+
|
67
|
+
module DeviseHelpers
|
68
|
+
|
69
|
+
def resource_name
|
70
|
+
:user
|
71
|
+
end
|
72
|
+
|
73
|
+
def resource
|
74
|
+
@resource ||= User.new
|
75
|
+
end
|
76
|
+
|
77
|
+
def devise_mapping
|
78
|
+
@devise_mapping ||= Devise.mappings[:user]
|
79
|
+
end
|
80
|
+
|
81
|
+
#DEVISE end
|
82
|
+
|
83
|
+
def devise_error_messages!
|
84
|
+
flash_alerts = []
|
85
|
+
error_key = 'errors.messages.not_saved'
|
86
|
+
|
87
|
+
if !flash.empty?
|
88
|
+
flash_alerts.push(flash[:error]) if flash[:error]
|
89
|
+
flash_alerts.push(flash[:alert]) if flash[:alert]
|
90
|
+
flash_alerts.push(flash[:notice]) if flash[:notice]
|
91
|
+
error_key = 'devise.failure.invalid'
|
92
|
+
end
|
93
|
+
|
94
|
+
return "" if resource.errors.empty? && flash_alerts.empty?
|
95
|
+
errors = resource.errors.empty? ? flash_alerts : resource.errors.full_messages
|
96
|
+
|
97
|
+
messages = errors.map { |msg| content_tag(:li, msg) }.join
|
98
|
+
sentence = I18n.t(error_key, :count => errors.count,
|
99
|
+
:resource => resource.class.model_name.human.downcase)
|
100
|
+
|
101
|
+
html = <<-HTML
|
102
|
+
<div id="error_explanation">
|
103
|
+
<h2>#{sentence}</h2>
|
104
|
+
<ul>#{messages}</ul>
|
105
|
+
</div>
|
106
|
+
HTML
|
107
|
+
|
108
|
+
html.html_safe
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
#======================================
|
114
|
+
|
115
|
+
end
|
116
|
+
|
1
117
|
require 'money'
|
2
118
|
require 'roo'
|
3
119
|
require 'safai/spreadsheet'
|
@@ -7,10 +123,5 @@ require 'safai/clean'
|
|
7
123
|
require 'safai/gravatar'
|
8
124
|
require 'safai/money'
|
9
125
|
require 'safai/date'
|
10
|
-
require 'safai/fires'
|
11
|
-
require 'safai/helpers'
|
12
|
-
ActiveRecord::Base.send :include, Safai::Fires
|
13
126
|
ActionView::Base.send :include, Safai::Helpers
|
14
|
-
|
15
|
-
class Safai
|
16
|
-
end
|
127
|
+
ActionView::Base.send :include, Safai::DeviseHelpers
|
data/lib/safai/address.rb
CHANGED
File without changes
|
data/lib/safai/clean.rb
CHANGED
File without changes
|
data/lib/safai/date.rb
CHANGED
File without changes
|
data/lib/safai/gravatar.rb
CHANGED
File without changes
|
data/lib/safai/money.rb
CHANGED
File without changes
|
data/lib/safai/regex.rb
CHANGED
File without changes
|
data/lib/safai/spreadsheet.rb
CHANGED
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: safai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.25
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -27,38 +27,6 @@ dependencies:
|
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: 0.2.13
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: htmldiff
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - '='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: 0.0.1
|
38
|
-
type: :development
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - '='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 0.0.1
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: coderay
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - '='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 1.0.8
|
54
|
-
type: :development
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - '='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 1.0.8
|
62
30
|
- !ruby/object:Gem::Dependency
|
63
31
|
name: roo
|
64
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,22 +43,6 @@ dependencies:
|
|
75
43
|
- - '='
|
76
44
|
- !ruby/object:Gem::Version
|
77
45
|
version: 1.10.1
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: RedCloth
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - '='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: 4.2.9
|
86
|
-
type: :development
|
87
|
-
prerelease: false
|
88
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - '='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: 4.2.9
|
94
46
|
- !ruby/object:Gem::Dependency
|
95
47
|
name: money
|
96
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,7 +59,7 @@ dependencies:
|
|
107
59
|
- - '='
|
108
60
|
- !ruby/object:Gem::Version
|
109
61
|
version: 5.1.0
|
110
|
-
description:
|
62
|
+
description: A simple hello world gem
|
111
63
|
email: ritvij.j@gmail.com
|
112
64
|
executables: []
|
113
65
|
extensions: []
|
@@ -120,14 +72,8 @@ files:
|
|
120
72
|
- lib/safai/clean.rb
|
121
73
|
- lib/safai/gravatar.rb
|
122
74
|
- lib/safai/money.rb
|
123
|
-
- init.rb
|
124
75
|
- lib/safai/date.rb
|
125
|
-
|
126
|
-
- generators/safai/templates/model.rb
|
127
|
-
- generators/safai/safai_generator.rb
|
128
|
-
- lib/safai/fires.rb
|
129
|
-
- safai.gemspec
|
130
|
-
homepage: http://github.com/ritvvijparrikh/safai
|
76
|
+
homepage: http://rubygems.org/gems/safai
|
131
77
|
licenses: []
|
132
78
|
post_install_message:
|
133
79
|
rdoc_options: []
|
@@ -150,5 +96,5 @@ rubyforge_project:
|
|
150
96
|
rubygems_version: 1.8.24
|
151
97
|
signing_key:
|
152
98
|
specification_version: 3
|
153
|
-
summary:
|
99
|
+
summary: Address logic gem
|
154
100
|
test_files: []
|
@@ -1,10 +0,0 @@
|
|
1
|
-
class CreateTimelineEvents < ActiveRecord::Migration
|
2
|
-
def self.change
|
3
|
-
create_table :timeline_events do |t|
|
4
|
-
t.string :event_type, :subject_type, :actor_type, :secondary_subject_type, :link
|
5
|
-
t.integer :subject_id, :actor_id, :secondary_subject_id
|
6
|
-
t.text :message
|
7
|
-
t.timestamps
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
class TimelineEvent < ActiveRecord::Base
|
2
|
-
|
3
|
-
#GEMS USED
|
4
|
-
#ACCESSORS
|
5
|
-
attr_accessible :event_type, :actor, :subject, :secondary_subject, :link, :message
|
6
|
-
|
7
|
-
#ASSOCIATIONS
|
8
|
-
belongs_to :actor, :polymorphic => true
|
9
|
-
belongs_to :subject, :polymorphic => true
|
10
|
-
belongs_to :secondary_subject, :polymorphic => true
|
11
|
-
|
12
|
-
#CALLBACKS
|
13
|
-
#VALIDATIONS
|
14
|
-
#QUERY SCOPES
|
15
|
-
#CUSTOM SCOPES
|
16
|
-
#SORTING SCOPES
|
17
|
-
default_scope :order => "created_at desc"
|
18
|
-
|
19
|
-
#OTHER STUFF
|
20
|
-
|
21
|
-
def tag
|
22
|
-
if alertable_type == "Campaign"
|
23
|
-
return "<span class='tag1'>Campaign</span>".html_safe
|
24
|
-
elsif alertable_type == "Impact" or alertable_type == "Project"
|
25
|
-
return "<span class='tag2'>Project</span>".html_safe
|
26
|
-
elsif alertable_type == "Bank"
|
27
|
-
return "<span class='tag3'>Bank Account</span>".html_safe
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
#PRIVATE STUFF
|
32
|
-
private
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
data/init.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require 'safai'
|
data/lib/safai/fires.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
module Fires
|
2
|
-
def self.included(klass)
|
3
|
-
klass.send(:extend, ClassMethods)
|
4
|
-
end
|
5
|
-
|
6
|
-
module ClassMethods
|
7
|
-
def fires(event_type, opts)
|
8
|
-
raise ArgumentError, "Argument :on is mandatory" unless opts.has_key?(:on)
|
9
|
-
|
10
|
-
# Array provided, set multiple callbacks
|
11
|
-
if opts[:on].kind_of?(Array)
|
12
|
-
opts[:on].each { |on| fires(event_type, opts.merge({:on => on})) }
|
13
|
-
return
|
14
|
-
end
|
15
|
-
|
16
|
-
opts[:subject] = :self unless opts.has_key?(:subject)
|
17
|
-
|
18
|
-
send(:"after_#{opts[:on]}", :if => opts[:if]) do
|
19
|
-
create_options = [:actor, :subject, :secondary_subject, :link, :message].inject({}) do |memo, sym|
|
20
|
-
if opts[sym]
|
21
|
-
if opts[sym].respond_to?(:call)
|
22
|
-
memo[sym] = opts[sym].call(self)
|
23
|
-
elsif opts[sym] == :self
|
24
|
-
memo[sym] = self
|
25
|
-
else
|
26
|
-
memo[sym] = send(opts[sym])
|
27
|
-
end
|
28
|
-
end
|
29
|
-
memo
|
30
|
-
end
|
31
|
-
create_options[:event_type] = event_type.to_s
|
32
|
-
|
33
|
-
TimelineEvent.create!(create_options)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
data/safai.gemspec
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
Gem::Specification.new do |s|
|
2
|
-
s.name = 'safai'
|
3
|
-
s.version = '0.0.24'
|
4
|
-
s.date = '2010-04-28'
|
5
|
-
s.summary = "Commonly used functions"
|
6
|
-
s.description = "Clean up (Safai) of code"
|
7
|
-
s.authors = ["Ritvvij Parrikh"]
|
8
|
-
s.email = 'ritvij.j@gmail.com'
|
9
|
-
s.files = ["lib/safai.rb",
|
10
|
-
"lib/safai/spreadsheet.rb",
|
11
|
-
"lib/safai/regex.rb",
|
12
|
-
"lib/safai/address.rb",
|
13
|
-
"lib/safai/clean.rb",
|
14
|
-
"lib/safai/gravatar.rb",
|
15
|
-
"lib/safai/money.rb",
|
16
|
-
"init.rb",
|
17
|
-
"lib/safai/date.rb",
|
18
|
-
"generators/safai/templates/migration.rb",
|
19
|
-
"generators/safai/templates/model.rb",
|
20
|
-
"generators/safai/safai_generator.rb",
|
21
|
-
"lib/safai/fires.rb",
|
22
|
-
"safai.gemspec"
|
23
|
-
]
|
24
|
-
s.homepage = 'http://github.com/ritvvijparrikh/safai'
|
25
|
-
s.required_rubygems_version = '>= 1.3.6'
|
26
|
-
s.add_development_dependency("carmen", '0.2.13')
|
27
|
-
s.add_development_dependency("htmldiff", '0.0.1')
|
28
|
-
s.add_development_dependency("coderay", '1.0.8')
|
29
|
-
s.add_development_dependency("roo", '1.10.1')
|
30
|
-
s.add_development_dependency("RedCloth", '4.2.9')
|
31
|
-
s.add_development_dependency("money", '5.1.0')
|
32
|
-
end
|