Module: BBLib::HashPath

Defined in:
lib/hash/hash_path_proc.rb

Class Method Summary collapse

Class Method Details

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



63
64
65
# File 'lib/hash/hash_path_proc.rb', line 63

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

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



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

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

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



147
148
149
# File 'lib/hash/hash_path_proc.rb', line 147

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

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



123
124
125
# File 'lib/hash/hash_path_proc.rb', line 123

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

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



58
59
60
61
# File 'lib/hash/hash_path_proc.rb', line 58

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

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



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

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

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



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

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

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



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

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

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



139
140
141
# File 'lib/hash/hash_path_proc.rb', line 139

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

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



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/hash/hash_path_proc.rb', line 94

def self.parse_date hash, path, value, *args, **params
  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_duration(hash, path, value, args, params) ⇒ Object



111
112
113
# File 'lib/hash/hash_path_proc.rb', line 111

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

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



115
116
117
# File 'lib/hash/hash_path_proc.rb', line 115

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

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



67
68
69
# File 'lib/hash/hash_path_proc.rb', line 67

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

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



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

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

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



135
136
137
# File 'lib/hash/hash_path_proc.rb', line 135

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

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



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

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

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



143
144
145
# File 'lib/hash/hash_path_proc.rb', line 143

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

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



131
132
133
# File 'lib/hash/hash_path_proc.rb', line 131

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

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



71
72
73
# File 'lib/hash/hash_path_proc.rb', line 71

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

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



119
120
121
# File 'lib/hash/hash_path_proc.rb', line 119

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

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



127
128
129
# File 'lib/hash/hash_path_proc.rb', line 127

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