rails_view_adapters 0.2.3 → 0.2.4
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 +4 -4
- data/Gemfile +5 -0
- data/README.md +3 -0
- data/lib/rails_view_adapters/definition_proxy.rb +31 -4
- data/lib/rails_view_adapters/version.rb +1 -1
- data/spec/lib/definition_proxy_spec.rb +2 -2
- data/spec/spec_helper.rb +10 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13e26a6b680a1fa4c5568fb1e5e445460534ea36
|
4
|
+
data.tar.gz: 04142c6f2d5bc28b30cf4a6fe784be85f010d74f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 208e50ae487714b67bef56377a2416989618afdbf051452313d61145f1bc2243d28086ae394d5da926ac458734a3ebb26d0340f67de12b5c51d49b308c8c98d4
|
7
|
+
data.tar.gz: a713a9fa0328e669827c4c169350aaaae61c21644eb78c8c786fbcf81d2127bda7de7e6b05778c7dd2297cc8c1651850d0960428c62ed103faeffe6cfeb834e5
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Rails View Adapters
|
2
2
|
|
3
|
+
[](https://travis-ci.org/mlibrary/rails_view_adapters)
|
4
|
+
[](https://coveralls.io/github/mlibrary/rails_view_adapters?branch=master)
|
5
|
+
|
3
6
|
This gem provides a
|
4
7
|
[DSL](http://www.rubydoc.info/github/mlibrary/rails_view_adapters/master/RailsViewAdapters/DefinitionProxy)
|
5
8
|
for defining adapters that map your model's
|
@@ -1,4 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "active_support/time_with_zone"
|
4
|
+
|
2
5
|
module RailsViewAdapters
|
3
6
|
|
4
7
|
# Defines the DSL methods that are used to modify the underlying
|
@@ -45,14 +48,19 @@ module RailsViewAdapters
|
|
45
48
|
map.add_model_field(model_field)
|
46
49
|
end
|
47
50
|
|
48
|
-
# Register a one-to-one mapping of a date field.
|
51
|
+
# Register a one-to-one mapping of a date field. When converting
|
52
|
+
# from the public representation, if the non-string values are
|
53
|
+
# returned as-is. Strings that cannot be parsed with the given
|
54
|
+
# date_format string are returned as nil.
|
55
|
+
#
|
56
|
+
# If no timezone is provided, utc is assumed.
|
49
57
|
# @param [Symbol] model_field
|
50
58
|
# @param [Symbol] public_field
|
51
59
|
# @param [String] date_format The Date format to use.
|
52
60
|
def map_date(model_field, public_field, date_format)
|
53
61
|
raise ArgumentError if date_format.nil?
|
54
62
|
map_from_public public_field do |value|
|
55
|
-
{ model_field => time_from_public(value) }
|
63
|
+
{ model_field => time_from_public(value, date_format) }
|
56
64
|
end
|
57
65
|
map_to_public model_field do |value|
|
58
66
|
{ public_field => value.utc.strftime(date_format) }
|
@@ -136,14 +144,33 @@ module RailsViewAdapters
|
|
136
144
|
|
137
145
|
private
|
138
146
|
|
139
|
-
def time_from_public(time)
|
147
|
+
def time_from_public(time, date_format)
|
140
148
|
if time.is_a? String
|
141
|
-
|
149
|
+
parts_to_time(DateTime._strptime(time, date_format))
|
142
150
|
else
|
143
151
|
time
|
144
152
|
end
|
145
153
|
end
|
146
154
|
|
155
|
+
def parts_to_time(parts)
|
156
|
+
return nil if parts.empty?
|
157
|
+
begin
|
158
|
+
time = Time.new(
|
159
|
+
parts.fetch(:year),
|
160
|
+
parts.fetch(:mon),
|
161
|
+
parts.fetch(:mday),
|
162
|
+
parts.fetch(:hour),
|
163
|
+
parts.fetch(:min),
|
164
|
+
parts.fetch(:sec) + parts.fetch(:sec_fraction, 0),
|
165
|
+
parts.fetch(:offset, 0)
|
166
|
+
)
|
167
|
+
rescue KeyError
|
168
|
+
return nil
|
169
|
+
end
|
170
|
+
|
171
|
+
ActiveSupport::TimeWithZone.new(time.utc, Time.zone)
|
172
|
+
end
|
173
|
+
|
147
174
|
def to_bool(value)
|
148
175
|
return nil if value.nil? || value =~ /^(null|nil)$/i
|
149
176
|
return true if value == true || value =~ /^(true|t|yes|y|1)$/i
|
@@ -81,8 +81,8 @@ module RailsViewAdapters
|
|
81
81
|
let(:model_field) { :mod }
|
82
82
|
let(:public_field) { :pub }
|
83
83
|
let(:date_format) { "%Y-%m-%dT%H:%M:%SZ" }
|
84
|
-
let(:time) { Time.
|
85
|
-
let(:time_string) {
|
84
|
+
let(:time) { Time.utc(2012, 6, 10, 13, 07, 33) }
|
85
|
+
let(:time_string) { "2012-06-10T13:07:33Z" }
|
86
86
|
it "creates the correct model_fields" do
|
87
87
|
proxy.map_date(model_field, public_field, date_format)
|
88
88
|
expect(proxy.map.model_fields).to eql([model_field])
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,14 @@
|
|
1
|
-
|
2
1
|
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "simplecov"
|
4
|
+
require "coveralls"
|
5
|
+
|
6
|
+
SimpleCov.formatter = Coveralls::SimpleCov::Formatter
|
7
|
+
SimpleCov.start do
|
8
|
+
add_filter "/.bundle/"
|
9
|
+
add_filter "/spec/"
|
10
|
+
end
|
11
|
+
|
3
12
|
RSpec.configure do |config|
|
4
13
|
config.expect_with :rspec do |expectations|
|
5
14
|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_view_adapters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryan Hockey
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|