Module: BBLib::HashPath

Defined in:
lib/hash/hash_path_proc.rb

Class Method Summary collapse

Class Method Details

.append(hash, path, value, args) ⇒ Object



82
83
84
# File 'lib/hash/hash_path_proc.rb', line 82

def self.append hash, path, value, args
  hash.hash_path_set path => "#{value}#{args}"
end

.avg_number(hash, path, value, *args) ⇒ Object



217
218
219
220
221
# File 'lib/hash/hash_path_proc.rb', line 217

def self.avg_number hash, path, value, *args
  nums = value.to_s.extract_numbers
  avg = nums.inject{ |s, x| s + x }.to_f / nums.size.to_f
  hash.hash_path_set path => avg
end

.concat(hash, path, value, *args) ⇒ Object



244
245
246
247
# File 'lib/hash/hash_path_proc.rb', line 244

def self.concat hash, path, value, *args
  params = BBLib::named_args(args)
  hash.hash_path_set path => "#{value}#{params[:join]}#{hash.hash_path(args.first)[params[:range].nil? ? 0 : params[:range]]}"
end

.custom(hash, path, value, *args) ⇒ Object



195
196
197
# File 'lib/hash/hash_path_proc.rb', line 195

def self.custom hash, path, value, *args
  hash.hash_path_set path => value.send(*args)
end

.delete(hash, path, value, *args) ⇒ Object



185
186
187
# File 'lib/hash/hash_path_proc.rb', line 185

def self.delete hash, path, value, *args
  hash.hash_path_delete path
end

.downcase(hash, path, value, *args) ⇒ Object



161
162
163
# File 'lib/hash/hash_path_proc.rb', line 161

def self.downcase hash, path, value, *args
  hash.hash_path_set path => value.to_s.downcase
end

.encapsulate(hash, path, value, args) ⇒ Object



199
200
201
# File 'lib/hash/hash_path_proc.rb', line 199

def self.encapsulate hash, path, value, args
  hash.hash_path_set path => "#{args}#{value}#{args}"
end

.evaluate(hash, path, value, args) ⇒ Object



77
78
79
80
# File 'lib/hash/hash_path_proc.rb', line 77

def self.evaluate hash, path, value, args
  exp = args.to_a.first.to_s.gsub('$', value.to_s)
  hash.hash_path_set path => eval(exp)
end

.extract(hash, path, value, *args) ⇒ Object



100
101
102
103
# File 'lib/hash/hash_path_proc.rb', line 100

def self.extract hash, path, value, *args
  slice = (Array === args && args[1].nil? ? (0..-1) : args[1])
  hash.hash_path_set path => value.to_s.scan(args.first)[slice]
end

.extract_first(hash, path, value, *args) ⇒ Object



105
106
107
# File 'lib/hash/hash_path_proc.rb', line 105

def self.extract_first hash, path, value, *args
  extract(hash, path, value, *args + [0])
end

.extract_floats(hash, path, value, args) ⇒ Object



236
237
238
# File 'lib/hash/hash_path_proc.rb', line 236

def self.extract_floats hash, path, value, args
  hash.hash_path_set path => (value.extract_floats)
end

.extract_integers(hash, path, value, args) ⇒ Object



232
233
234
# File 'lib/hash/hash_path_proc.rb', line 232

def self.extract_integers hash, path, value, args
  hash.hash_path_set path => (value.extract_integers)
end

.extract_last(hash, path, value, *args) ⇒ Object



109
110
111
# File 'lib/hash/hash_path_proc.rb', line 109

def self.extract_last hash, path, value, *args
  extract(hash, path, value, *args + [-1])
end

.extract_numbers(hash, path, value, args) ⇒ Object



240
241
242
# File 'lib/hash/hash_path_proc.rb', line 240

def self.extract_numbers hash, path, value, args
  hash.hash_path_set path => (value.extract_numbers)
end

.format_articles(hash, path, value, args) ⇒ Object



177
178
179
# File 'lib/hash/hash_path_proc.rb', line 177

def self.format_articles hash, path, value, args
  hash.hash_path_set path => value.to_s.move_articles(args.nil? ? :front : args)
end

.max_number(hash, path, value, *args) ⇒ Object



209
210
211
# File 'lib/hash/hash_path_proc.rb', line 209

def self.max_number hash, path, value, *args
  hash.hash_path_set path => value.to_s.extract_numbers.max
end

.min_number(hash, path, value, *args) ⇒ Object



213
214
215
# File 'lib/hash/hash_path_proc.rb', line 213

def self.min_number hash, path, value, *args
  hash.hash_path_set path => value.to_s.extract_numbers.min
end

.parse_date(hash, path, value, *args) ⇒ Object



113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/hash/hash_path_proc.rb', line 113

def self.parse_date hash, path, value, *args
  params = BBLib::named_args(args)
  format = params.include?(:format) ? params[:format] : '%Y-%m-%d %H:%M:%S'
  formatted = nil
  args.each do |pattern|
    next unless formatted.nil?
    begin
      formatted = Time.strptime(value.to_s, pattern.to_s).strftime(format)
    rescue
    end
  end
  begin
    if formatted.nil? then formatted = Time.parse(value) end
  rescue
  end
  hash.hash_path_set path => formatted
end

.parse_date_unix(hash, path, value, *args) ⇒ Object



131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/hash/hash_path_proc.rb', line 131

def self.parse_date_unix hash, path, value, *args
  params = BBLib::named_args(args)
  format = params.include?(:format) ? params[:format] : '%Y-%m-%d %H:%M:%S'
  formatted = nil
  args.each do |pattern|
    next unless formatted.nil?
    begin
      formatted = Time.strptime(value.to_s, pattern.to_s).strftime(format)
    rescue
    end
  end
  begin
    if formatted.nil? then formatted = Time.parse(value) end
  rescue
  end
  hash.hash_path_set path => formatted.to_f
end

.parse_duration(hash, path, value, args) ⇒ Object



149
150
151
# File 'lib/hash/hash_path_proc.rb', line 149

def self.parse_duration hash, path, value, args
  hash.hash_path_set path => value.to_s.parse_duration(output: args.empty? ? :sec : args )
end

.parse_file_size(hash, path, value, args) ⇒ Object



153
154
155
# File 'lib/hash/hash_path_proc.rb', line 153

def self.parse_file_size hash, path, value, args
  hash.hash_path_set path => value.to_s.parse_file_size(output: args.empty? ? :bytes : args )
end

.prepend(hash, path, value, args) ⇒ Object



86
87
88
# File 'lib/hash/hash_path_proc.rb', line 86

def self.prepend hash, path, value, args
  hash.hash_path_set path => "#{args}#{value}"
end

.remove(hash, path, value, *args) ⇒ Object



189
190
191
192
193
# File 'lib/hash/hash_path_proc.rb', line 189

def self.remove hash, path, value, *args
  removed = value.to_s
  args.each{ |a| removed.gsub!(a, '')}
  hash.hash_path_set path => removed
end

.remove_symbols(hash, path, value, *args) ⇒ Object



173
174
175
# File 'lib/hash/hash_path_proc.rb', line 173

def self.remove_symbols hash, path, value, *args
  hash.hash_path_set path => value.to_s.drop_symbols
end

.replace(hash, path, value, args) ⇒ Object



94
95
96
97
98
# File 'lib/hash/hash_path_proc.rb', line 94

def self.replace hash, path, value, args
  value = value.dup.to_s
  args.each{ |k,v| value.gsub!(k, v.to_s) }
  hash.hash_path_set path => value
end

.reverse(hash, path, value, *args) ⇒ Object



181
182
183
# File 'lib/hash/hash_path_proc.rb', line 181

def self.reverse hash, path, value, *args
  hash.hash_path_set path => value.to_s.reverse
end

.reverse_concat(hash, path, value, *args) ⇒ Object



249
250
251
252
# File 'lib/hash/hash_path_proc.rb', line 249

def self.reverse_concat hash, path, value, *args
  params = BBLib::named_args(args)
  hash.hash_path_set path => "#{hash.hash_path(args.first)[params[:range].nil? ? 0 : params[:range]]}#{params[:join]}#{value}"
end

.roman(hash, path, value, *args) ⇒ Object



169
170
171
# File 'lib/hash/hash_path_proc.rb', line 169

def self.roman hash, path, value, *args
  hash.hash_path_set path => (args[0] == :to ? value.to_s.to_roman : value.to_s.from_roman)
end

.split(hash, path, value, args) ⇒ Object



90
91
92
# File 'lib/hash/hash_path_proc.rb', line 90

def self.split hash, path, value, args
  hash.hash_path_set path => value.msplit(args)
end

.strip(hash, path, value, args) ⇒ Object



227
228
229
230
# File 'lib/hash/hash_path_proc.rb', line 227

def self.strip hash, path, value, args
  value.map!{ |m| m.respond_to?(:strip) ? m.strip : m } if value.is_a?(Array)
  hash.hash_path_set path => (value.respond_to?(:strip) ? value.strip : value)
end

.sum_number(hash, path, value, *args) ⇒ Object



223
224
225
# File 'lib/hash/hash_path_proc.rb', line 223

def self.sum_number hash, path, value, *args
  hash.hash_path_set path => value.to_s.extract_numbers.inject{ |s,x| s + x }
end

.to_string(hash, path, value, *args) ⇒ Object



157
158
159
# File 'lib/hash/hash_path_proc.rb', line 157

def self.to_string hash, path, value, *args
  hash.hash_path_set path => value.to_s
end

.uncapsulate(hash, path, value, args) ⇒ Object



203
204
205
206
207
# File 'lib/hash/hash_path_proc.rb', line 203

def self.uncapsulate hash, path, value, args
  value = value[args.size..-1] if value.start_with?(args)
  value = value[0..-(args.size)-1] if value.end_with?(args)
  hash.hash_path_set path => value
end

.upcase(hash, path, value, *args) ⇒ Object



165
166
167
# File 'lib/hash/hash_path_proc.rb', line 165

def self.upcase hash, path, value, *args
  hash.hash_path_set path => value.to_s.upcase
end