binxtils 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 58786a3391a102bc9a6e08a9420088cf9796ae49f425af65bd40504bb350ea37
4
- data.tar.gz: decb330bdb3ac5b78b24fdff8fa8431331a8933b4b5e6c06957850e7d5910de4
3
+ metadata.gz: ae08f86d8d31882ed56c248ad820a66823606b09a5f5b429b35ea76eb5530cb7
4
+ data.tar.gz: 0e96c6e1230b26127f1ce6906df7b08db3d83a2b8c0bdc12d6824074ae39ac1d
5
5
  SHA512:
6
- metadata.gz: 8ebdeccb552c059b0f4d6951cf6e5305656c97a0d5949d8536fa920e96bce5b211ced41f9eb0252d4420973c3ef853286a2be01ae25ed0a3e63c55feac03d2cc
7
- data.tar.gz: 309384e08b2afb921202bd92fede339d559f29857a58b3ab23ed667652182a87252a4424c708d57e74345f6a4f523eb26426ce3c51cacacaaf835eb6efa7cb5f
6
+ metadata.gz: 8e0d408e004acbc45439477d6ea3e79e94f2975a3a1f4cb9a37bef1a6cbfcabf4935a884061e38e90b79fedcfe6e72f07e4aefd119c7b4a298e060d015b72924
7
+ data.tar.gz: 7ead69ca11aa5335956f0222b8892a29fc356067952d02c09840154bae0f41ccb530a1e70e586869363d70dc9734099b99fe9ae103b4a192ebbad1ed061f9b88
data/README.md CHANGED
@@ -59,6 +59,14 @@ class BikesController < ApplicationController
59
59
  end
60
60
  ```
61
61
 
62
+ Order with `sortable_order`, which applies `sort_direction` and puts nils last in both directions. It takes `sort_column` by default, or an Arel node or SQL string:
63
+
64
+ ```ruby
65
+ Bike.order(sortable_order)
66
+ Bike.order(sortable_order(Bike.arel_table[sort_column].lower))
67
+ Bike.order(sortable_order("COALESCE((data -> 'bike_count')::integer, 0)"))
68
+ ```
69
+
62
70
  ## npm package
63
71
 
64
72
  This repo also publishes `@bikeindex/time-localizer`, an npm package for localizing time elements in the browser. It ships two builds of the same source:
@@ -18,6 +18,12 @@ module Binxtils
18
18
  %w[asc desc].include?(params[:direction]) ? params[:direction] : default_direction
19
19
  end
20
20
 
21
+ # Desc puts nils last, matching asc
22
+ def sortable_order(expression = sort_column)
23
+ node = expression.respond_to?(:asc) ? expression : Arel.sql(expression)
24
+ node.public_send(sort_direction).nulls_last
25
+ end
26
+
21
27
  def permitted_time_range_columns
22
28
  %w[created_at updated_at].freeze
23
29
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Binxtils
4
- VERSION = "0.7.0"
4
+ VERSION = "0.8.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: binxtils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bike Index