stringify_date 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|