miscellany 0.1.15 → 0.1.17

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0292657fd777bbea4bc0f5388da1bf36a8996fb289734680e659e8d454a31581'
4
- data.tar.gz: '087408e70b210183a78aed078d86ea593e8810eccd3b22cc9885805de6a98c02'
3
+ metadata.gz: d8272b6520386bb2e45ef6a4ae8cc6c2c349e465ca8eea10867df3c42c80c7c3
4
+ data.tar.gz: aeb81bc5bb198c2f64589c1d416369bd101de5d1db074682e40f66247c2035d5
5
5
  SHA512:
6
- metadata.gz: 243f605f61a02d0df1704fae338c395f573341a251f53ed734a43e843f6cb3619bf0ad49c399f20c70963c2a586c03783416c29247e86f740aff765afcf5ede5
7
- data.tar.gz: 9839a4ecaf808730cfb587b498feb9266b3394929a0e2f7d06ca2efcab4f7715041a82a93446eedcb729b8d141b08d76a1aa1f8d9cbf1a4ddc0f7ddfc649d1a9
6
+ metadata.gz: 3f6ac9e74cacbdb4dd5d990a47c72608181eb005b4a9c3de81b46666bf314a246fa799c29d97753519822318740adf32fa2db63450d2d70e2abc4fb4a38c09de
7
+ data.tar.gz: 99f033c54af54257ef660e889f34f683e080fe4e16baeb9d1f201fcf0091561c6d2fd5d26b582a57b9ab91b2d7c0fd3c8e72f8fc8e02f7425b0a395b4bcc7e9f
@@ -98,7 +98,7 @@ module Miscellany
98
98
  end
99
99
 
100
100
  begin
101
- slice[:sort] = options[:sort_parser]&.parse(arg[:sort], ignore_errors: true)
101
+ slice[:sort] = options[:sort_parser]&.parse(arg[:sort], ignore_errors: true, default: true)
102
102
  rescue Miscellany::SortLang::Parser::SortParsingError => e
103
103
  raise HttpErrorHandling::HttpError, message: e.message
104
104
  end
@@ -198,7 +198,12 @@ module Miscellany
198
198
  elsif items.is_a?(ActiveRecord::Relation)
199
199
  offset, limit = slice_bounds
200
200
  limit -= offset unless limit.nil?
201
- items.order(Arel.sql(sort_sql)).limit(limit).offset(offset).to_a
201
+
202
+ query = items
203
+ sort_clause = sort_sql
204
+ query = query.order(Arel.sql(sort_clause)) if sort_clause.present?
205
+
206
+ query.limit(limit).offset(offset).to_a
202
207
  elsif defined?(Miscellany::ComplexQuery) && items.is_a?(Miscellany::ComplexQuery)
203
208
  offset, limit = slice_bounds
204
209
  limit -= offset unless limit.nil?
@@ -60,8 +60,8 @@ module Miscellany
60
60
  false
61
61
  end
62
62
 
63
- def parse(sortstr, ignore_errors: true)
64
- (sortstr || '').split(',').map do |s|
63
+ def parse(sortstr, ignore_errors: true, default: :true)
64
+ sorts = (sortstr || '').split(',').map do |s|
65
65
  m = s.strip.match(/^(\w+)(?: (ASC|DESC))?$/)
66
66
 
67
67
  if m.nil?
@@ -78,7 +78,11 @@ module Miscellany
78
78
  sort = resolved_sort.dup
79
79
  sort[:order] = m[2] if m[2].present? && !sort[:force_order]
80
80
  sort
81
- end.compact.presence
81
+ end
82
+
83
+ sorts << self.default if default == :append || default && !sorts.compact.present?
84
+
85
+ sorts.compact.presence
82
86
  end
83
87
 
84
88
  protected
@@ -1,3 +1,3 @@
1
1
  module Miscellany
2
- VERSION = "0.1.15".freeze
2
+ VERSION = "0.1.17".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miscellany
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.15
4
+ version: 0.1.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan Knapp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-08 00:00:00.000000000 Z
11
+ date: 2023-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails