class HashAtPath::Path
Public Class Methods
extract_path_data(path_string)
click to toggle source
Extracts paths and predicates from the provide full path
# File lib/hash_at_path/path.rb, line 18 def extract_path_data(path_string) results = array_wrap(path_string.scan(/([^\[]*)(\[)*(\d|\-\d|\*)*(\])*/i)) results.map { |match| { path: match[0], predicate: match[2] } } end
parse(path_string)
click to toggle source
# File lib/hash_at_path/path.rb, line 6 def parse(path_string) path_string = replace_predicates(path_string) extract_path_data(path_string) end
replace_predicates(path_string)
click to toggle source
# File lib/hash_at_path/path.rb, line 11 def replace_predicates(path_string) path_string = path_string.gsub(/first\(\)/, '0') path_string = path_string.gsub(/last\(\)/, '-1') path_string end
Private Class Methods
array_wrap(object)
click to toggle source
Stolen from activesupport/lib/active_support/core_ext/array/wrap.rb
# File lib/hash_at_path/path.rb, line 26 def array_wrap(object) if object.nil? [] elsif object.respond_to?(:to_ary) object.to_ary || [object] else [object] end end