stringify_date 0.0.1 → 0.0.2
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/.gitignore +1 -0
- data/Guardfile +24 -0
- data/README.md +13 -1
- data/lib/stringify_date/active_record/stringify.rb +22 -5
- data/lib/stringify_date/version.rb +1 -1
- data/spec/active_record/stringify_spec.rb +47 -0
- data/spec/dummy/app/models/test_date.rb +1 -1
- data/spec/dummy/config/application.rb +1 -1
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/spec_helper.rb +7 -0
- data/stringify_date.gemspec +1 -0
- metadata +23 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14d86eadd473b13290260f5f299bdbb1f2dc3087
|
4
|
+
data.tar.gz: f67f1647dfa3311e199241d253bfcf557c062a24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 87e9788265aff1d5f18094be71792d13a0a1e025b3c7199ee5a14584046045e88ddbc37dbdaa95f1e43ebc598adbb7b796fc591ead98966f6a9d28472a08f891
|
7
|
+
data.tar.gz: b17d9104dde09b1c20b44fd2f289830a47d4d665941487e0da59de7caa90ac240d43da64623b778bd0dc1228c6814ee7bfb97c69aeaa335f6bfc400a1324bd5e
|
data/.gitignore
CHANGED
data/Guardfile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
guard :rspec do
|
5
|
+
watch(%r{^spec/.+_spec\.rb$})
|
6
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
7
|
+
watch('spec/spec_helper.rb') { "spec" }
|
8
|
+
|
9
|
+
# Rails example
|
10
|
+
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
11
|
+
watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
12
|
+
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
13
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
14
|
+
watch('config/routes.rb') { "spec/routing" }
|
15
|
+
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
16
|
+
|
17
|
+
# Capybara features specs
|
18
|
+
watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
|
19
|
+
|
20
|
+
# Turnip features and steps
|
21
|
+
watch(%r{^spec/acceptance/(.+)\.feature$})
|
22
|
+
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
|
23
|
+
end
|
24
|
+
|
data/README.md
CHANGED
@@ -24,7 +24,7 @@ and we want to handle it by using a String object instead:
|
|
24
24
|
```ruby
|
25
25
|
class Product < ActiveRecord::Base
|
26
26
|
# the format will be used to format date and datetime as string
|
27
|
-
stringify :validity, format: '%Y
|
27
|
+
stringify :validity, format: '%d/%m/%Y'
|
28
28
|
|
29
29
|
end
|
30
30
|
```
|
@@ -32,6 +32,18 @@ end
|
|
32
32
|
Now each Product object will also have attributes called ```validity_string``` and ```validity_string=```
|
33
33
|
to use date and datetime as string.
|
34
34
|
|
35
|
+
So
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
product = Product.new validity: Date.new(2001,2,3)
|
39
|
+
```
|
40
|
+
|
41
|
+
We can use now ```_string```
|
42
|
+
```ruby
|
43
|
+
product.validity_string # => '03/02/2001'
|
44
|
+
```
|
45
|
+
|
46
|
+
|
35
47
|
## Contributing
|
36
48
|
|
37
49
|
1. Fork it ( https://github.com/matheusvetor/stringify_date/fork )
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'active_record'
|
1
2
|
require 'active_support/concern'
|
2
3
|
require 'active_support/core_ext/array/extract_options'
|
3
4
|
|
@@ -20,12 +21,28 @@ module StringifyDate
|
|
20
21
|
end
|
21
22
|
|
22
23
|
define_method "#{name}=" do |value|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
self.send(
|
25
|
+
"#{column_name}=",
|
26
|
+
begin
|
27
|
+
if value.present?
|
28
|
+
begin
|
29
|
+
Time.parse(value)
|
30
|
+
rescue ArgumentError
|
31
|
+
instance_variable_set("@#{name}_invalid", true)
|
32
|
+
end
|
33
|
+
else
|
34
|
+
''
|
35
|
+
end
|
36
|
+
end
|
37
|
+
)
|
28
38
|
end
|
39
|
+
|
40
|
+
define_method "validate_#{name}" do
|
41
|
+
errors.add(name.to_sym, I18n.t('errors.invalid')) if instance_variable_get("@#{name}_invalid")
|
42
|
+
end
|
43
|
+
|
44
|
+
self.send(:validate, :"validate_#{name}")
|
45
|
+
|
29
46
|
end
|
30
47
|
end
|
31
48
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe StringifyDate::ActiveRecord::Stringify do
|
4
|
+
|
5
|
+
let(:test_date) do
|
6
|
+
TestDate.new(start_at: Date.today, end_at: DateTime.now)
|
7
|
+
end
|
8
|
+
|
9
|
+
let(:test_date_string) do
|
10
|
+
TestDate.new(start_at_string: Date.today.to_s, end_at_string: DateTime.now.to_s)
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should respond to #stringify' do
|
14
|
+
expect(TestDate).to respond_to(:stringify)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should respond to _string and _string=' do
|
18
|
+
expect(test_date).to respond_to(:start_at_string)
|
19
|
+
expect(test_date).to respond_to(:start_at_string=)
|
20
|
+
expect(test_date).to respond_to(:end_at_string)
|
21
|
+
expect(test_date).to respond_to(:end_at_string=)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should set start_at_string to 22/10/2012 when start_at 2012-10-22 and stringify format is '%d/%m/%Y'" do
|
25
|
+
test_date.start_at = Date.new(2012, 10, 22)
|
26
|
+
|
27
|
+
expect(test_date.start_at_string).to eq('22/10/2012')
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should be invalid when parse invalid date' do
|
31
|
+
test_date.start_at_string = 'invalid'
|
32
|
+
|
33
|
+
expect(test_date.valid?).to be(false)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should be valid when parse empty string' do
|
37
|
+
test_date.start_at_string = ''
|
38
|
+
|
39
|
+
expect(test_date.valid?).to be(true)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should set start_at_string to 22/10/2012 when start_at 2001-02-03 and stringify format is '%d/%m/%Y %H:%M:%S'" do
|
43
|
+
test_date.end_at = DateTime.new(2001,2,3)
|
44
|
+
|
45
|
+
expect(test_date.end_at_string).to eq('03/02/2001 00:00:00')
|
46
|
+
end
|
47
|
+
end
|
Binary file
|
data/spec/spec_helper.rb
ADDED
data/stringify_date.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stringify_date
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rute Passos
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-07-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -109,6 +109,20 @@ dependencies:
|
|
109
109
|
- - ">="
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: guard-rspec
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
112
126
|
description: This gem makes it easy to convert string to date and provides method
|
113
127
|
to create a string version for the attribute
|
114
128
|
email:
|
@@ -119,12 +133,14 @@ extra_rdoc_files: []
|
|
119
133
|
files:
|
120
134
|
- ".gitignore"
|
121
135
|
- Gemfile
|
136
|
+
- Guardfile
|
122
137
|
- LICENSE.txt
|
123
138
|
- README.md
|
124
139
|
- Rakefile
|
125
140
|
- lib/stringify_date.rb
|
126
141
|
- lib/stringify_date/active_record/stringify.rb
|
127
142
|
- lib/stringify_date/version.rb
|
143
|
+
- spec/active_record/stringify_spec.rb
|
128
144
|
- spec/dummy/README.rdoc
|
129
145
|
- spec/dummy/Rakefile
|
130
146
|
- spec/dummy/app/assets/images/.keep
|
@@ -163,6 +179,7 @@ files:
|
|
163
179
|
- spec/dummy/db/development.sqlite3
|
164
180
|
- spec/dummy/db/migrate/20140629010823_create_test_dates.rb
|
165
181
|
- spec/dummy/db/schema.rb
|
182
|
+
- spec/dummy/db/test.sqlite3
|
166
183
|
- spec/dummy/lib/assets/.keep
|
167
184
|
- spec/dummy/log/.keep
|
168
185
|
- spec/dummy/log/development.log
|
@@ -170,6 +187,7 @@ files:
|
|
170
187
|
- spec/dummy/public/422.html
|
171
188
|
- spec/dummy/public/500.html
|
172
189
|
- spec/dummy/public/favicon.ico
|
190
|
+
- spec/spec_helper.rb
|
173
191
|
- stringify_date.gemspec
|
174
192
|
homepage: https://github.com/matheusvetor/stringify_date
|
175
193
|
licenses:
|
@@ -196,6 +214,7 @@ signing_key:
|
|
196
214
|
specification_version: 4
|
197
215
|
summary: Parser for string an date/datetime
|
198
216
|
test_files:
|
217
|
+
- spec/active_record/stringify_spec.rb
|
199
218
|
- spec/dummy/README.rdoc
|
200
219
|
- spec/dummy/Rakefile
|
201
220
|
- spec/dummy/app/assets/images/.keep
|
@@ -234,6 +253,7 @@ test_files:
|
|
234
253
|
- spec/dummy/db/development.sqlite3
|
235
254
|
- spec/dummy/db/migrate/20140629010823_create_test_dates.rb
|
236
255
|
- spec/dummy/db/schema.rb
|
256
|
+
- spec/dummy/db/test.sqlite3
|
237
257
|
- spec/dummy/lib/assets/.keep
|
238
258
|
- spec/dummy/log/.keep
|
239
259
|
- spec/dummy/log/development.log
|
@@ -241,3 +261,4 @@ test_files:
|
|
241
261
|
- spec/dummy/public/422.html
|
242
262
|
- spec/dummy/public/500.html
|
243
263
|
- spec/dummy/public/favicon.ico
|
264
|
+
- spec/spec_helper.rb
|