arel_extensions 2.1.2 → 2.1.3

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: c069fafddb858e0acc7cee0bf1bc435c2127ccdf6e5d870b8e9caff0d31abdb1
4
- data.tar.gz: 2d0898c4d35fbe0ac72ccb395ef79ae63f10b662ce6003cea0702d55c27b2729
3
+ metadata.gz: 01beaf945929ae85c746a09b141c730414607881f7573afb31aa2fd3578ffe28
4
+ data.tar.gz: c68051e2e013ab9ce79916d6c5cbabc1f1f9a5e0cce734d71cd08c458d3f53f7
5
5
  SHA512:
6
- metadata.gz: aa4f685f2548b172488d6f3537754c51ad269773a2ff525b7e114e8d4da38bfe41c38cbeee20cb67d7557b46c39c10d218e80181ffa5ebe6be393763981d57d3
7
- data.tar.gz: 664cf3c829c5df39b3ef8c9913cec516214482e328f01a8c71370aa937abc47194a20b31b8d930a297c322e22025d1af9b1b49384df08ec65860203b8bf27f78
6
+ metadata.gz: cdd3e7f9c03bfbe90dbd8c6ca6af65304a64446c06ea49b529483f6252249098943a96a44bc4df5cd9d6eb0ad22755be01d3f7251f953ab6bacf2f07910cedec
7
+ data.tar.gz: bc92061815cc857835eb2d5fd5a0a34b1d2688640b0dd7291802ee45ee0d6d9e6f8d2b268180ac56b723b61416677b1020f3c79cebbf376b4a3999c780e0f926
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = "2.1.2".freeze
2
+ VERSION = "2.1.3".freeze
3
3
  end
@@ -14,13 +14,14 @@ module ArelExtensions
14
14
 
15
15
  LOADED_VISITOR::DATE_FORMAT_DIRECTIVES = {
16
16
  '%Y' => 'YYYY', '%C' => '', '%y' => 'YY', '%m' => 'MM', '%B' => '', '%b' => '', '%^b' => '', # year, month
17
- '%d' => 'DD', '%e' => '', '%j' => '', '%w' => 'dw', '%A' => '', # day, weekday
18
- '%H' => 'hh', '%k' => '', '%I' => '', '%l' => '', '%P' => '', '%p' => '', # hours
17
+ '%V' => 'iso_week', '%G' => '', # ISO week number and year of week
18
+ '%d' => 'DD', '%e' => '', '%j' => '', '%w' => 'dw', '%A' => '', # day, weekday
19
+ '%H' => 'hh', '%k' => '', '%I' => '', '%l' => '', '%P' => '', '%p' => '', # hours
19
20
  '%M' => 'mi', '%S' => 'ss', '%L' => 'ms', '%N' => 'ns', '%z' => 'tz'
20
21
  }.freeze
21
22
 
22
23
  LOADED_VISITOR::DATE_FORMAT_FORMAT = {
23
- 'YY' => '0#', 'MM' => '0#', 'DD' => '0#', 'hh' => '0#', 'mi' => '0#', 'ss' => '0#'
24
+ 'YY' => '0#', 'MM' => '0#', 'DD' => '0#', 'hh' => '0#', 'mi' => '0#', 'ss' => '0#', 'iso_week' => '0#'
24
25
  }
25
26
 
26
27
  LOADED_VISITOR::DATE_FORMAT_REGEX =
@@ -8,6 +8,7 @@ module ArelExtensions
8
8
 
9
9
  DATE_FORMAT_DIRECTIVES = { # ISO C / POSIX
10
10
  '%Y' => '%Y', '%C' => '', '%y' => '%y', '%m' => '%m', '%B' => '%M', '%b' => '%b', '%^b' => '%b', # year, month
11
+ '%V' => '%v', '%G' => '%x', # ISO week number and year of week
11
12
  '%d' => '%d', '%e' => '%e', '%j' => '%j', '%w' => '%w', '%A' => '%W', # day, weekday
12
13
  '%H' => '%H', '%k' => '%k', '%I' => '%I', '%l' => '%l', '%P' => '%p', '%p' => '%p', # hours
13
14
  '%M' => '%i', '%S' => '%S', '%L' => '', '%N' => '%f', '%z' => ''
@@ -6,6 +6,7 @@ module ArelExtensions
6
6
  DATE_MAPPING = {'d' => 'DAY', 'm' => 'MONTH', 'w' => 'IW', 'y' => 'YEAR', 'wd' => 'D', 'h' => 'HOUR', 'mn' => 'MINUTE', 's' => 'SECOND'}
7
7
  DATE_FORMAT_DIRECTIVES = {
8
8
  '%Y' => 'YYYY', '%C' => 'CC', '%y' => 'YY', '%m' => 'MM', '%B' => 'Month', '%^B' => 'MONTH', '%b' => 'Mon', '%^b' => 'MON',
9
+ '%V' => 'IW', '%G' => 'IYYY', # ISO week number and year of week
9
10
  '%d' => 'DD', '%e' => 'FMDD', '%j' => 'DDD', '%w' => '', '%A' => 'Day', # day, weekday
10
11
  '%H' => 'HH24', '%k' => '', '%I' => 'HH', '%l' => '', '%P' => 'am', '%p' => 'AM', # hours
11
12
  '%M' => 'MI', '%S' => 'SS', '%L' => 'MS', '%N' => 'US', '%z' => 'tz' # seconds, subseconds
@@ -9,9 +9,10 @@ module ArelExtensions
9
9
  DATE_FORMAT_DIRECTIVES = {
10
10
  '%Y' => 'YYYY', '%C' => 'CC', '%y' => 'YY',
11
11
  '%m' => 'MM', '%B' => 'Month', '%^B' => 'MONTH', '%b' => 'Mon', '%^b' => 'MON',
12
- '%d' => 'DD', '%e' => 'FMDD', '%j' => 'DDD', '%w' => '', '%A' => 'Day', # day, weekday
12
+ '%V' => 'IW', '%G' => 'IYYY', # ISO week number and year of week
13
+ '%d' => 'DD', '%e' => 'FMDD', '%j' => 'DDD', '%w' => '', '%A' => 'Day', # day, weekday
13
14
  '%H' => 'HH24', '%k' => '', '%I' => 'HH', '%l' => '', '%P' => 'am', '%p' => 'AM', # hours
14
- '%M' => 'MI', '%S' => 'SS', '%L' => 'MS', '%N' => 'US', '%z' => 'tz', # seconds, subseconds
15
+ '%M' => 'MI', '%S' => 'SS', '%L' => 'MS', '%N' => 'US', '%z' => 'tz', # seconds, subseconds
15
16
  '%%' => '%',
16
17
  }.freeze
17
18
 
@@ -438,6 +438,39 @@ module ArelExtensions
438
438
  end
439
439
  end
440
440
 
441
+ def test_format_iso_week
442
+ skip "Unsupported ISO week number for DB=#{ENV['DB']}" if ['sqlite'].include?(ENV['DB'])
443
+ assert_equal '10', t(@lucas, @updated_at.format('%V'))
444
+ {
445
+ '2024-01-01 10:42:00' => '01', # Monday
446
+ '2030-01-01 10:42:00' => '01', # Tuesday
447
+ '2025-01-01 10:42:00' => '01', # Wednesday
448
+ '2026-01-01 10:42:00' => '01', # Thursday
449
+ '2027-01-01 10:42:00' => '53', # Friday
450
+ '2028-01-01 10:42:00' => '52', # Saturday
451
+ '2034-01-01 10:42:00' => '52', # Sunday
452
+ }.each do |date, exp|
453
+ assert_equal exp, t(@lucas, Arel::Nodes.build_quoted(date).cast(:datetime).format('%V'))
454
+ end
455
+ end
456
+
457
+ def test_format_iso_year_of_week
458
+ skip "Unsupported ISO year of week for DB=#{ENV['DB']}" if ['mssql', 'sqlite'].include?(ENV['DB'])
459
+ assert_equal '2014', t(@lucas, @updated_at.format('%G'))
460
+
461
+ {
462
+ '2024-01-01 10:42:00' => '2024', # Monday
463
+ '2030-01-01 10:42:00' => '2030', # Tuesday
464
+ '2025-01-01 10:42:00' => '2025', # Wednesday
465
+ '2026-01-01 10:42:00' => '2026', # Thursday
466
+ '2027-01-01 10:42:00' => '2026', # Friday
467
+ '2028-01-01 10:42:00' => '2027', # Saturday
468
+ '2034-01-01 10:42:00' => '2033', # Sunday
469
+ }.each do |date, exp|
470
+ assert_equal exp, t(@lucas, Arel::Nodes.build_quoted(date).cast(:datetime).format('%G'))
471
+ end
472
+ end
473
+
441
474
  def test_coalesce
442
475
  assert_equal 'Camille concat', t(@camille, @name.coalesce(nil, "default") + ' concat')
443
476
 
data/version_v1.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = "1.3.2".freeze
2
+ VERSION = "1.3.3".freeze
3
3
  end
data/version_v2.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ArelExtensions
2
- VERSION = "2.1.2".freeze
2
+ VERSION = "2.1.3".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arel_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yann Azoury
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2022-03-04 00:00:00.000000000 Z
13
+ date: 2022-03-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord