Module: BBLib::HashPath
- Defined in:
- lib/hash/hash_path_proc.rb
Class Method Summary collapse
- .append(hash, path, value, args) ⇒ Object
- .avg_number(hash, path, value, *args) ⇒ Object
- .concat(hash, path, value, *args) ⇒ Object
- .custom(hash, path, value, *args) ⇒ Object
- .delete(hash, path, value, *args) ⇒ Object
- .downcase(hash, path, value, *args) ⇒ Object
- .encapsulate(hash, path, value, args) ⇒ Object
- .evaluate(hash, path, value, args) ⇒ Object
- .extract(hash, path, value, *args) ⇒ Object
- .extract_first(hash, path, value, *args) ⇒ Object
- .extract_floats(hash, path, value, args) ⇒ Object
- .extract_integers(hash, path, value, args) ⇒ Object
- .extract_last(hash, path, value, *args) ⇒ Object
- .extract_numbers(hash, path, value, args) ⇒ Object
- .format_articles(hash, path, value, args) ⇒ Object
- .max_number(hash, path, value, *args) ⇒ Object
- .min_number(hash, path, value, *args) ⇒ Object
- .parse_date(hash, path, value, *args) ⇒ Object
- .parse_date_unix(hash, path, value, *args) ⇒ Object
- .parse_duration(hash, path, value, args) ⇒ Object
- .parse_file_size(hash, path, value, args) ⇒ Object
- .prepend(hash, path, value, args) ⇒ Object
- .remove(hash, path, value, *args) ⇒ Object
- .remove_symbols(hash, path, value, *args) ⇒ Object
- .replace(hash, path, value, args) ⇒ Object
- .reverse(hash, path, value, *args) ⇒ Object
- .reverse_concat(hash, path, value, *args) ⇒ Object
- .roman(hash, path, value, *args) ⇒ Object
- .split(hash, path, value, args) ⇒ Object
- .strip(hash, path, value, args) ⇒ Object
- .sum_number(hash, path, value, *args) ⇒ Object
- .to_string(hash, path, value, *args) ⇒ Object
- .uncapsulate(hash, path, value, args) ⇒ Object
- .upcase(hash, path, value, *args) ⇒ Object
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 |