blueprinter 0.13.2 → 0.14.0
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1df67b25b05137cc97ddd5e8c0db7430086d3ea9dddd7ab2164944dba191fddc
|
4
|
+
data.tar.gz: d1e9a05b61be95ef8a4d627fb6908db38975d6f321cf325a13bb93a7402a03b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f2c771da50005f7a8d886bf1318f5d00069b76d1c96b78dc3ef14162272278ecddec09e6735d73a8946be7c8229ae2bc96f158a1978e53b1f99d1763b04509b
|
7
|
+
data.tar.gz: ed2a05555940425a7847028f85084f0a4fe3a2c063ea480d9e179931f792900ababe0f0d0230050441da87c9bcb3137b1151f9c393838123e80365873ff86dc8
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
## 0.14.0 - 2019/04/01
|
2
|
+
* 🚀 [FEATURE] Added a global `datetime_format` option. [#135](https://github.com/procore/blueprinter/pull/143). Thanks to [@ritikesh](https://github.com/ritikesh).
|
3
|
+
|
1
4
|
## 0.13.2 - 2019/03/14
|
2
5
|
* 🐛 [BUGFIX] Replacing use of rails-specific method `Hash::except` so that Blueprinter continues to work in non-Rails environments. [#140](https://github.com/procore/blueprinter/pull/140). Thanks to [@checkbutton](https://github.com/checkbutton).
|
3
6
|
|
data/lib/blueprinter/base.rb
CHANGED
@@ -6,6 +6,7 @@ require_relative 'extractors/auto_extractor'
|
|
6
6
|
require_relative 'extractors/block_extractor'
|
7
7
|
require_relative 'extractors/hash_extractor'
|
8
8
|
require_relative 'extractors/public_send_extractor'
|
9
|
+
require_relative 'formatters/date_time_formatter'
|
9
10
|
require_relative 'field'
|
10
11
|
require_relative 'helpers/base_helpers'
|
11
12
|
require_relative 'view'
|
@@ -18,7 +19,7 @@ module Blueprinter
|
|
18
19
|
# Specify a field or method name used as an identifier. Usually, this is
|
19
20
|
# something like :id
|
20
21
|
#
|
21
|
-
# Note: identifiers are always rendered and
|
22
|
+
# Note: identifiers are always rendered and considered their own view,
|
22
23
|
# similar to the :default view.
|
23
24
|
#
|
24
25
|
# @param method [Symbol] the method or field used as an identifier that you
|
@@ -1,11 +1,12 @@
|
|
1
1
|
module Blueprinter
|
2
2
|
class Configuration
|
3
|
-
attr_accessor :association_default, :field_default, :generator, :if, :method, :sort_fields_by, :unless
|
3
|
+
attr_accessor :association_default, :datetime_format, :field_default, :generator, :if, :method, :sort_fields_by, :unless
|
4
4
|
|
5
5
|
VALID_CALLABLES = %i(if unless).freeze
|
6
6
|
|
7
7
|
def initialize
|
8
8
|
@association_default = nil
|
9
|
+
@datetime_format = nil
|
9
10
|
@field_default = nil
|
10
11
|
@generator = JSON
|
11
12
|
@if = nil
|
@@ -4,11 +4,13 @@ module Blueprinter
|
|
4
4
|
@hash_extractor = HashExtractor.new
|
5
5
|
@public_send_extractor = PublicSendExtractor.new
|
6
6
|
@block_extractor = BlockExtractor.new
|
7
|
+
@datetime_formatter = DateTimeFormatter.new
|
7
8
|
end
|
8
9
|
|
9
10
|
def extract(field_name, object, local_options, options = {})
|
10
11
|
extraction = extractor(object, options).extract(field_name, object, local_options, options)
|
11
|
-
|
12
|
+
|
13
|
+
value = @datetime_formatter.format(extraction, options)
|
12
14
|
value.nil? ? default_value(options) : value
|
13
15
|
end
|
14
16
|
|
@@ -27,12 +29,5 @@ module Blueprinter
|
|
27
29
|
@public_send_extractor
|
28
30
|
end
|
29
31
|
end
|
30
|
-
|
31
|
-
def format_datetime(datetime, format)
|
32
|
-
return nil if datetime.nil?
|
33
|
-
datetime.strftime(format)
|
34
|
-
rescue NoMethodError
|
35
|
-
raise BlueprinterError, 'Cannot format invalid DateTime object'
|
36
|
-
end
|
37
32
|
end
|
38
33
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Blueprinter
|
2
|
+
class DateTimeFormatter
|
3
|
+
def format(value, options)
|
4
|
+
return value if value.nil?
|
5
|
+
|
6
|
+
field_format = options[:datetime_format]
|
7
|
+
if value.respond_to?(:strftime)
|
8
|
+
value = format_datetime(value, field_format)
|
9
|
+
elsif field_format
|
10
|
+
raise BlueprinterError, 'Cannot format invalid DateTime object'
|
11
|
+
end
|
12
|
+
value
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def format_datetime(value, field_format)
|
18
|
+
format = field_format || Blueprinter.configuration.datetime_format
|
19
|
+
format.nil? ? value : value.strftime(format)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/blueprinter/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blueprinter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Hess
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-04-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: factory_bot
|
@@ -176,6 +176,7 @@ files:
|
|
176
176
|
- lib/blueprinter/extractors/hash_extractor.rb
|
177
177
|
- lib/blueprinter/extractors/public_send_extractor.rb
|
178
178
|
- lib/blueprinter/field.rb
|
179
|
+
- lib/blueprinter/formatters/date_time_formatter.rb
|
179
180
|
- lib/blueprinter/helpers/base_helpers.rb
|
180
181
|
- lib/blueprinter/version.rb
|
181
182
|
- lib/blueprinter/view.rb
|