ThiagoLelis-backgroundjob 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/lib/main/util.rb CHANGED
@@ -1,91 +1,91 @@
1
- module Main
2
- module Util
3
- module ClassMethods
4
- end
5
-
6
- module InstanceMethods
7
- end
8
-
9
- module Methods
10
- def mcp obj
11
- Marshal.load(Marshal.dump(obj))
12
- end
13
-
14
- def indent chunk, n = 2
15
- lines = chunk.split %r/\n/
16
- re = nil
17
- s = ' ' * n
18
- lines.map! do |line|
19
- unless re
20
- margin = line[%r/^\s*/]
21
- re = %r/^#{ margin }/
22
- end
23
- line.gsub re, s
24
- end.join("\n")
25
- end
26
-
27
- def unindent chunk
28
- lines = chunk.split %r/\n/
29
- indent = nil
30
- re = %r/^/
31
- lines.map! do |line|
32
- unless indent
33
- indent = line[%r/^\s*/]
34
- re = %r/^#{ indent }/
35
- end
36
- line.gsub re, ''
37
- end.join("\n")
38
- end
39
-
40
- def columnize buf, opts = {}
41
- width = Util.getopt 'width', opts, 80
42
- indent = Util.getopt 'indent', opts
43
- indent = Fixnum === indent ? (' ' * indent) : "#{ indent }"
44
- column = []
45
- words = buf.split %r/\s+/o
46
- row = "#{ indent }"
47
- while((word = words.shift))
48
- if((row.size + word.size) < (width - 1))
49
- row << word
50
- else
51
- column << row
52
- row = "#{ indent }"
53
- row << word
54
- end
55
- row << ' ' unless row.size == (width - 1)
56
- end
57
- column << row unless row.strip.empty?
58
- column.join "\n"
59
- end
60
-
61
- def getopt opt, hash, default = nil
62
- keys = opt.respond_to?('each') ? opt : [opt]
63
-
64
- keys.each do |key|
65
- return hash[key] if hash.has_key? key
66
- key = "#{ key }"
67
- return hash[key] if hash.has_key? key
68
- key = key.intern
69
- return hash[key] if hash.has_key? key
70
- end
71
-
72
- return default
73
- end
74
- end
75
-
76
- BLESS = lambda do |other|
77
- other.module_eval{
78
- include Methods
79
- include InstanceMethods
80
- extend Methods
81
- extend ClassMethods
82
- }
83
- end
84
-
85
- def self.included other
86
- BLESS[ other ]
87
- end
88
-
89
- BLESS[ self ]
90
- end
91
- end
1
+ module Main
2
+ module Util
3
+ module ClassMethods
4
+ end
5
+
6
+ module InstanceMethods
7
+ end
8
+
9
+ module Methods
10
+ def mcp obj
11
+ Marshal.load(Marshal.dump(obj))
12
+ end
13
+
14
+ def indent chunk, n = 2
15
+ lines = chunk.split %r/\n/
16
+ re = nil
17
+ s = ' ' * n
18
+ lines.map! do |line|
19
+ unless re
20
+ margin = line[%r/^\s*/]
21
+ re = %r/^#{ margin }/
22
+ end
23
+ line.gsub re, s
24
+ end.join("\n")
25
+ end
26
+
27
+ def unindent chunk
28
+ lines = chunk.split %r/\n/
29
+ indent = nil
30
+ re = %r/^/
31
+ lines.map! do |line|
32
+ unless indent
33
+ indent = line[%r/^\s*/]
34
+ re = %r/^#{ indent }/
35
+ end
36
+ line.gsub re, ''
37
+ end.join("\n")
38
+ end
39
+
40
+ def columnize buf, opts = {}
41
+ width = Util.getopt 'width', opts, 80
42
+ indent = Util.getopt 'indent', opts
43
+ indent = Fixnum === indent ? (' ' * indent) : "#{ indent }"
44
+ column = []
45
+ words = buf.split %r/\s+/o
46
+ row = "#{ indent }"
47
+ while((word = words.shift))
48
+ if((row.size + word.size) < (width - 1))
49
+ row << word
50
+ else
51
+ column << row
52
+ row = "#{ indent }"
53
+ row << word
54
+ end
55
+ row << ' ' unless row.size == (width - 1)
56
+ end
57
+ column << row unless row.strip.empty?
58
+ column.join "\n"
59
+ end
60
+
61
+ def getopt opt, hash, default = nil
62
+ keys = opt.respond_to?('each') ? opt : [opt]
63
+
64
+ keys.each do |key|
65
+ return hash[key] if hash.has_key? key
66
+ key = "#{ key }"
67
+ return hash[key] if hash.has_key? key
68
+ key = key.intern
69
+ return hash[key] if hash.has_key? key
70
+ end
71
+
72
+ return default
73
+ end
74
+ end
75
+
76
+ BLESS = lambda do |other|
77
+ other.module_eval{
78
+ include Methods
79
+ include InstanceMethods
80
+ extend Methods
81
+ extend ClassMethods
82
+ }
83
+ end
84
+
85
+ def self.included other
86
+ BLESS[ other ]
87
+ end
88
+
89
+ BLESS[ self ]
90
+ end
91
+ end
@@ -1,25 +1,25 @@
1
- #
2
- # auto vivifying ordered hash that dumps as yaml nicely
3
- #
4
- require 'orderedhash' unless defined? OrderedHash
5
-
6
- class AutoOrderedHash < OrderedHash
7
- def initialize(*args)
8
- super(*args){|a,k| a[k] = __class__.new(*args)}
9
- end
10
- def class # for nice yaml
11
- Hash
12
- end
13
- def __class__
14
- AutoOrderedHash
15
- end
16
- end # class AutoOrderedHash
17
-
18
- OrderedAutoHash = AutoOrderedHash
19
-
20
- def OrderedAutoHash(*a, &b)
21
- OrderedAutoHash.new(*a, &b)
22
- end
23
- def AutoOrderedHash(*a, &b)
24
- AutoOrderedHash.new(*a, &b)
25
- end
1
+ #
2
+ # auto vivifying ordered hash that dumps as yaml nicely
3
+ #
4
+ require 'orderedhash' unless defined? OrderedHash
5
+
6
+ class AutoOrderedHash < OrderedHash
7
+ def initialize(*args)
8
+ super(*args){|a,k| a[k] = __class__.new(*args)}
9
+ end
10
+ def class # for nice yaml
11
+ Hash
12
+ end
13
+ def __class__
14
+ AutoOrderedHash
15
+ end
16
+ end # class AutoOrderedHash
17
+
18
+ OrderedAutoHash = AutoOrderedHash
19
+
20
+ def OrderedAutoHash(*a, &b)
21
+ OrderedAutoHash.new(*a, &b)
22
+ end
23
+ def AutoOrderedHash(*a, &b)
24
+ AutoOrderedHash.new(*a, &b)
25
+ end
data/lib/orderedhash.rb CHANGED
@@ -1,189 +1,189 @@
1
-
2
- # AUTHOR
3
- # jan molic /mig/at/1984/dot/cz/
4
- #
5
- # DESCRIPTION
6
- # Hash with preserved order and some array-like extensions
7
- # Public domain.
8
- #
9
- # THANKS
10
- # Andrew Johnson for his suggestions and fixes of Hash[],
11
- # merge, to_a, inspect and shift
12
- class OrderedHash < ::Hash
13
- attr_accessor :order
14
-
15
- class << self
16
- def [] *args
17
- hsh = OrderedHash.new
18
- if Hash === args[0]
19
- hsh.replace args[0]
20
- elsif (args.size % 2) != 0
21
- raise ArgumentError, "odd number of elements for Hash"
22
- else
23
- 0.step(args.size - 1, 2) do |a|
24
- b = a + 1
25
- hsh[args[a]] = args[b]
26
- end
27
- end
28
- hsh
29
- end
30
- end
31
- def initialize(*a, &b)
32
- super
33
- @order = []
34
- end
35
- def store_only a,b
36
- store a,b
37
- end
38
- alias orig_store store
39
- def store a,b
40
- @order.push a unless has_key? a
41
- super a,b
42
- end
43
- alias []= store
44
- def == hsh2
45
- return false if @order != hsh2.order
46
- super hsh2
47
- end
48
- def clear
49
- @order = []
50
- super
51
- end
52
- def delete key
53
- @order.delete key
54
- super
55
- end
56
- def each_key
57
- @order.each { |k| yield k }
58
- self
59
- end
60
- def each_value
61
- @order.each { |k| yield self[k] }
62
- self
63
- end
64
- def each
65
- @order.each { |k| yield k,self[k] }
66
- self
67
- end
68
- alias each_pair each
69
- def delete_if
70
- @order.clone.each { |k|
71
- delete k if yield(k)
72
- }
73
- self
74
- end
75
- def values
76
- ary = []
77
- @order.each { |k| ary.push self[k] }
78
- ary
79
- end
80
- def keys
81
- @order
82
- end
83
- def invert
84
- hsh2 = Hash.new
85
- @order.each { |k| hsh2[self[k]] = k }
86
- hsh2
87
- end
88
- def reject &block
89
- self.dup.delete_if &block
90
- end
91
- def reject! &block
92
- hsh2 = reject &block
93
- self == hsh2 ? nil : hsh2
94
- end
95
- def replace hsh2
96
- @order = hsh2.keys
97
- super hsh2
98
- end
99
- def shift
100
- key = @order.first
101
- key ? [key,delete(key)] : super
102
- end
103
- def unshift k,v
104
- unless self.include? k
105
- @order.unshift k
106
- orig_store(k,v)
107
- true
108
- else
109
- false
110
- end
111
- end
112
- def push k,v
113
- unless self.include? k
114
- @order.push k
115
- orig_store(k,v)
116
- true
117
- else
118
- false
119
- end
120
- end
121
- def pop
122
- key = @order.last
123
- key ? [key,delete(key)] : nil
124
- end
125
- def to_a
126
- ary = []
127
- each { |k,v| ary << [k,v] }
128
- ary
129
- end
130
- def to_s
131
- self.to_a.to_s
132
- end
133
- def inspect
134
- ary = []
135
- each {|k,v| ary << k.inspect + "=>" + v.inspect}
136
- '{' + ary.join(", ") + '}'
137
- end
138
- def update hsh2
139
- hsh2.each { |k,v| self[k] = v }
140
- self
141
- end
142
- alias :merge! update
143
- def merge hsh2
144
- self.dup update(hsh2)
145
- end
146
- def select
147
- ary = []
148
- each { |k,v| ary << [k,v] if yield k,v }
149
- ary
150
- end
151
- def class
152
- Hash
153
- end
154
- def __class__
155
- OrderedHash
156
- end
157
-
158
- attr_accessor "to_yaml_style"
159
- def yaml_inline= bool
160
- if respond_to?("to_yaml_style")
161
- self.to_yaml_style = :inline
162
- else
163
- unless defined? @__yaml_inline_meth
164
- @__yaml_inline_meth =
165
- lambda {|opts|
166
- YAML::quick_emit(object_id, opts) {|emitter|
167
- emitter << '{ ' << map{|kv| kv.join ': '}.join(', ') << ' }'
168
- }
169
- }
170
- class << self
171
- def to_yaml opts = {}
172
- begin
173
- @__yaml_inline ? @__yaml_inline_meth[ opts ] : super
174
- rescue
175
- @to_yaml_style = :inline
176
- super
177
- end
178
- end
179
- end
180
- end
181
- end
182
- @__yaml_inline = bool
183
- end
184
- def yaml_inline!() self.yaml_inline = true end
185
- end # class OrderedHash
186
-
187
- def OrderedHash(*a, &b)
188
- OrderedHash.new(*a, &b)
189
- end
1
+
2
+ # AUTHOR
3
+ # jan molic /mig/at/1984/dot/cz/
4
+ #
5
+ # DESCRIPTION
6
+ # Hash with preserved order and some array-like extensions
7
+ # Public domain.
8
+ #
9
+ # THANKS
10
+ # Andrew Johnson for his suggestions and fixes of Hash[],
11
+ # merge, to_a, inspect and shift
12
+ class OrderedHash < ::Hash
13
+ attr_accessor :order
14
+
15
+ class << self
16
+ def [] *args
17
+ hsh = OrderedHash.new
18
+ if Hash === args[0]
19
+ hsh.replace args[0]
20
+ elsif (args.size % 2) != 0
21
+ raise ArgumentError, "odd number of elements for Hash"
22
+ else
23
+ 0.step(args.size - 1, 2) do |a|
24
+ b = a + 1
25
+ hsh[args[a]] = args[b]
26
+ end
27
+ end
28
+ hsh
29
+ end
30
+ end
31
+ def initialize(*a, &b)
32
+ super
33
+ @order = []
34
+ end
35
+ def store_only a,b
36
+ store a,b
37
+ end
38
+ alias orig_store store
39
+ def store a,b
40
+ @order.push a unless has_key? a
41
+ super a,b
42
+ end
43
+ alias []= store
44
+ def == hsh2
45
+ return false if @order != hsh2.order
46
+ super hsh2
47
+ end
48
+ def clear
49
+ @order = []
50
+ super
51
+ end
52
+ def delete key
53
+ @order.delete key
54
+ super
55
+ end
56
+ def each_key
57
+ @order.each { |k| yield k }
58
+ self
59
+ end
60
+ def each_value
61
+ @order.each { |k| yield self[k] }
62
+ self
63
+ end
64
+ def each
65
+ @order.each { |k| yield k,self[k] }
66
+ self
67
+ end
68
+ alias each_pair each
69
+ def delete_if
70
+ @order.clone.each { |k|
71
+ delete k if yield(k)
72
+ }
73
+ self
74
+ end
75
+ def values
76
+ ary = []
77
+ @order.each { |k| ary.push self[k] }
78
+ ary
79
+ end
80
+ def keys
81
+ @order
82
+ end
83
+ def invert
84
+ hsh2 = Hash.new
85
+ @order.each { |k| hsh2[self[k]] = k }
86
+ hsh2
87
+ end
88
+ def reject &block
89
+ self.dup.delete_if &block
90
+ end
91
+ def reject! &block
92
+ hsh2 = reject &block
93
+ self == hsh2 ? nil : hsh2
94
+ end
95
+ def replace hsh2
96
+ @order = hsh2.keys
97
+ super hsh2
98
+ end
99
+ def shift
100
+ key = @order.first
101
+ key ? [key,delete(key)] : super
102
+ end
103
+ def unshift k,v
104
+ unless self.include? k
105
+ @order.unshift k
106
+ orig_store(k,v)
107
+ true
108
+ else
109
+ false
110
+ end
111
+ end
112
+ def push k,v
113
+ unless self.include? k
114
+ @order.push k
115
+ orig_store(k,v)
116
+ true
117
+ else
118
+ false
119
+ end
120
+ end
121
+ def pop
122
+ key = @order.last
123
+ key ? [key,delete(key)] : nil
124
+ end
125
+ def to_a
126
+ ary = []
127
+ each { |k,v| ary << [k,v] }
128
+ ary
129
+ end
130
+ def to_s
131
+ self.to_a.to_s
132
+ end
133
+ def inspect
134
+ ary = []
135
+ each {|k,v| ary << k.inspect + "=>" + v.inspect}
136
+ '{' + ary.join(", ") + '}'
137
+ end
138
+ def update hsh2
139
+ hsh2.each { |k,v| self[k] = v }
140
+ self
141
+ end
142
+ alias :merge! update
143
+ def merge hsh2
144
+ self.dup update(hsh2)
145
+ end
146
+ def select
147
+ ary = []
148
+ each { |k,v| ary << [k,v] if yield k,v }
149
+ ary
150
+ end
151
+ def class
152
+ Hash
153
+ end
154
+ def __class__
155
+ OrderedHash
156
+ end
157
+
158
+ attr_accessor "to_yaml_style"
159
+ def yaml_inline= bool
160
+ if respond_to?("to_yaml_style")
161
+ self.to_yaml_style = :inline
162
+ else
163
+ unless defined? @__yaml_inline_meth
164
+ @__yaml_inline_meth =
165
+ lambda {|opts|
166
+ YAML::quick_emit(object_id, opts) {|emitter|
167
+ emitter << '{ ' << map{|kv| kv.join ': '}.join(', ') << ' }'
168
+ }
169
+ }
170
+ class << self
171
+ def to_yaml opts = {}
172
+ begin
173
+ @__yaml_inline ? @__yaml_inline_meth[ opts ] : super
174
+ rescue
175
+ @to_yaml_style = :inline
176
+ super
177
+ end
178
+ end
179
+ end
180
+ end
181
+ end
182
+ @__yaml_inline = bool
183
+ end
184
+ def yaml_inline!() self.yaml_inline = true end
185
+ end # class OrderedHash
186
+
187
+ def OrderedHash(*a, &b)
188
+ OrderedHash.new(*a, &b)
189
+ end