jakewendt-stringify_date 1.1.0

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.
Files changed (3) hide show
  1. data/README.rdoc +36 -0
  2. data/lib/stringify_date.rb +59 -0
  3. metadata +83 -0
data/README.rdoc ADDED
@@ -0,0 +1,36 @@
1
+ = StringifyDate (Gem / Rails Plugin)
2
+
3
+ Based on tutorial from
4
+ {Ryan Bates}[http://railscasts.com/episodes/33-making-a-plugin]
5
+
6
+ == Usage
7
+
8
+ Contains a collection of complex assertions.
9
+
10
+ config.gem 'jakewendt-stringify_date',
11
+ :lib => 'stringify_date',
12
+ :source => 'http://rubygems.org'
13
+
14
+ stringify_date :interview_outcome_on, :format => '%m/%d/%Y'
15
+
16
+ == ToDo
17
+
18
+ * add legitimate text to Rakefile
19
+ * add TESTS
20
+
21
+ == Gemified with Jeweler
22
+
23
+ vi Rakefile
24
+ rake version:write
25
+ rake gemspec
26
+ rake install
27
+
28
+ rake version:bump:major
29
+ rake release
30
+
31
+ == Example
32
+
33
+ Example goes here.
34
+
35
+
36
+ Copyright (c) 2008 [Jake Wendt & Ryan Bates], released under the MIT license
@@ -0,0 +1,59 @@
1
+ # StringifyDate
2
+
3
+ ## models/task.rb
4
+ #stringify_date :due_at
5
+ #
6
+ #def validate
7
+ # errors.add(:due_at, "is invalid") if due_at_invalid?
8
+ #end
9
+
10
+ # stringify_date.rb
11
+ module StringifyDate
12
+ def stringify_date(*names)
13
+ options = names.extract_options!
14
+
15
+ names.each do |name|
16
+ define_method "#{name}_string" do
17
+ # read_attribute(name).to_s(:db) unless read_attribute(name).nil?
18
+ # to_date added to fix sqlite3 quirk
19
+ # read_attribute(name).to_date.to_s(:db) unless read_attribute(name).nil?
20
+
21
+ d = read_attribute(name).try(:to_date)
22
+ unless d.blank?
23
+ if options[:format]
24
+ d.strftime(options[:format])
25
+ else
26
+ d.to_s(:db)
27
+ end
28
+ end
29
+
30
+ end
31
+
32
+ define_method "#{name}_string=" do |date_str|
33
+ if ( !date_str.blank? )
34
+ begin
35
+ # write_attribute(name, Date.parse(date_str))
36
+ # Chronic.parse will not raise an error to rescue from
37
+ # chronic actually returns a time
38
+ date = Chronic.parse(date_str)
39
+ #Chronic.parse("February 14, 2004") # <= nil
40
+ # raise ArgumentError if date.nil?
41
+ date = Date.parse(date_str) if date.nil?
42
+ # if Date.parse fails, it will raise ArgumentError
43
+ # so I don't need to do it manually
44
+ write_attribute(name, date.to_date)
45
+ rescue ArgumentError
46
+ instance_variable_set("@#{name}_invalid", true)
47
+ end
48
+ else
49
+ write_attribute(name,'')
50
+ end
51
+ end
52
+
53
+ define_method "#{name}_invalid?" do
54
+ instance_variable_get("@#{name}_invalid")
55
+ end
56
+ end
57
+ end
58
+ end
59
+ ActiveRecord::Base.send(:extend, StringifyDate)
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jakewendt-stringify_date
3
+ version: !ruby/object:Gem::Version
4
+ hash: 19
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 1
9
+ - 0
10
+ version: 1.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Jake
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-09-14 00:00:00 -07:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: chronic
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 17
30
+ segments:
31
+ - 0
32
+ - 2
33
+ - 3
34
+ version: 0.2.3
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ description: longer description of your gem
38
+ email: github@jake.otherinbox.com
39
+ executables: []
40
+
41
+ extensions: []
42
+
43
+ extra_rdoc_files:
44
+ - README.rdoc
45
+ files:
46
+ - lib/stringify_date.rb
47
+ - README.rdoc
48
+ has_rdoc: true
49
+ homepage: http://github.com/jakewendt/stringify_date
50
+ licenses: []
51
+
52
+ post_install_message:
53
+ rdoc_options:
54
+ - --charset=UTF-8
55
+ require_paths:
56
+ - lib
57
+ required_ruby_version: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ hash: 3
63
+ segments:
64
+ - 0
65
+ version: "0"
66
+ required_rubygems_version: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ requirements: []
76
+
77
+ rubyforge_project:
78
+ rubygems_version: 1.3.7
79
+ signing_key:
80
+ specification_version: 3
81
+ summary: one-line summary of your gem
82
+ test_files: []
83
+