-
Notifications
You must be signed in to change notification settings - Fork 139
/
support.rb
78 lines (64 loc) · 1.18 KB
/
support.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
require 'yaml'
# support methods to remove dependencies on ActiveSupport
class String
def present?
!blank?
end
def blank?
if respond_to?(:empty?) && respond_to?(:strip)
empty? or strip.empty?
elsif respond_to?(:empty?)
empty?
else
!self
end
end
end
class Hash
alias_method :blank?, :empty?
def present?
!blank?
end
end
class Object
def present?
self.class!=NilClass
end
end
class NilClass #:nodoc:
def blank?
true
end
def present?
false
end
end
module Accessorize
module ClassMethods
def cattr_accessor(*syms)
syms.flatten.each do |sym|
class_eval(<<-EOS, __FILE__, __LINE__)
unless defined? @@#{sym}
@@#{sym} = nil
end
def self.#{sym}
@@#{sym}
end
def #{sym}=(value)
@@#{sym} = value
end
def self.#{sym}=(value)
@@#{sym} = value
end
def #{sym}
@@#{sym}
end
EOS
end
end
end
def self.included(receiver)
receiver.extend ClassMethods
end
end
Object.send(:include, Accessorize)