Class: Parse::GroupedResult
- Inherits:
-
Object
- Object
- Parse::GroupedResult
- Includes:
- Enumerable
- Defined in:
- lib/parse/query.rb
Overview
Wrapper class for grouped results that provides sorting capabilities. Allows sorting grouped results by keys (group names) or values (aggregation results) in ascending or descending order.
Instance Method Summary collapse
-
#each(&block) ⇒ Object
Iterate over each key-value pair.
-
#initialize(results, operation = nil) ⇒ GroupedResult
constructor
A new instance of GroupedResult.
-
#sort_by_key_asc ⇒ Array<Array>
Sort by keys (group names) in ascending order.
-
#sort_by_key_desc ⇒ Array<Array>
Sort by keys (group names) in descending order.
-
#sort_by_value_asc ⇒ Array<Array>
Sort by values (aggregation results) in ascending order.
-
#sort_by_value_desc ⇒ Array<Array>
Sort by values (aggregation results) in descending order.
-
#to_h ⇒ Hash
Return the raw hash results.
-
#to_sorted_hash(sorted_pairs) ⇒ Hash
Convert sorted results back to a hash.
-
#to_table(format: :ascii, headers: nil) ⇒ String
Convert grouped results to a formatted table.
Constructor Details
#initialize(results, operation = nil) ⇒ GroupedResult
Returns a new instance of GroupedResult.
6854 6855 6856 6857 |
# File 'lib/parse/query.rb', line 6854 def initialize(results, operation = nil) @results = results @operation = operation end |
Instance Method Details
#each(&block) ⇒ Object
Iterate over each key-value pair
6866 6867 6868 |
# File 'lib/parse/query.rb', line 6866 def each(&block) @results.each(&block) end |
#sort_by_key_asc ⇒ Array<Array>
Sort by keys (group names) in ascending order
6872 6873 6874 |
# File 'lib/parse/query.rb', line 6872 def sort_by_key_asc @results.sort_by { |k, v| k } end |
#sort_by_key_desc ⇒ Array<Array>
Sort by keys (group names) in descending order
6878 6879 6880 |
# File 'lib/parse/query.rb', line 6878 def sort_by_key_desc @results.sort_by { |k, v| k }.reverse end |
#sort_by_value_asc ⇒ Array<Array>
Sort by values (aggregation results) in ascending order
6884 6885 6886 |
# File 'lib/parse/query.rb', line 6884 def sort_by_value_asc @results.sort_by { |k, v| v } end |
#sort_by_value_desc ⇒ Array<Array>
Sort by values (aggregation results) in descending order
6890 6891 6892 |
# File 'lib/parse/query.rb', line 6890 def sort_by_value_desc @results.sort_by { |k, v| v }.reverse end |
#to_h ⇒ Hash
Return the raw hash results
6861 6862 6863 |
# File 'lib/parse/query.rb', line 6861 def to_h @results end |
#to_sorted_hash(sorted_pairs) ⇒ Hash
Convert sorted results back to a hash
6897 6898 6899 |
# File 'lib/parse/query.rb', line 6897 def to_sorted_hash(sorted_pairs) sorted_pairs.to_h end |
#to_table(format: :ascii, headers: nil) ⇒ String
Convert grouped results to a formatted table.
6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 |
# File 'lib/parse/query.rb', line 6910 def to_table(format: :ascii, headers: nil) headers ||= ["Group", default_value_header] pairs = @results.to_a # Build table data table_data = { headers: headers, rows: pairs.map { |key, value| [format_group_key(key), format_group_value(value)] }, } # Format based on requested format case format when :ascii format_grouped_ascii_table(table_data) when :csv format_grouped_csv_table(table_data) when :json format_grouped_json_table(table_data) else raise ArgumentError, "Unsupported format: #{format}. Use :ascii, :csv, or :json" end end |