class JMESPath::Nodes::SortFunction
Public Instance Methods
call(args)
click to toggle source
# File lib/jmespath/nodes/function.rb, line 424 def call(args) if args.count == 1 value = args.first if Array === value # every element in the list must be of the same type array_type = get_type(value[0]) if array_type == STRING_TYPE || array_type == NUMBER_TYPE || value.size == 0 # stable sort n = 0 value.sort_by do |v| value_type = get_type(v) if value_type != array_type msg = "function sort() expects values to be an array of only numbers, or only integers" return maybe_raise Errors::InvalidTypeError, msg end n += 1 [v, n] end else return maybe_raise Errors::InvalidTypeError, "function sort() expects values to be an array of numbers or integers" end else return maybe_raise Errors::InvalidTypeError, "function sort() expects values to be an array of numbers or integers" end else return maybe_raise Errors::InvalidArityError, "function sort() expects one argument" end end