easy_dates 0.0.1

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.
data/Manifest ADDED
@@ -0,0 +1,5 @@
1
+ Manifest
2
+ README.rdoc
3
+ Rakefile
4
+ lib/easy_dates.rb
5
+ lib/easy_dates/base.rb
data/README.rdoc ADDED
@@ -0,0 +1,87 @@
1
+ = Easy Dates
2
+
3
+ Easy date formatting for ActiveRecord. This gem keeps your models clean, and you don't have to worry about formatting your dates continually with strftime.
4
+
5
+ == Install
6
+
7
+ gem install gemcutter
8
+ gem tumble
9
+ gem install easy_dates
10
+
11
+ or it can be installed as a rails plugin.
12
+
13
+ script/plugin install git://github.com/platform45/easy_dates.git
14
+
15
+ == Usage
16
+
17
+ Define your date setup with define_easy_dates.
18
+
19
+ class User < ActiveRecord::Base
20
+ define_easy_dates do
21
+ format_for :created_at, :updated_at
22
+ end
23
+ end
24
+
25
+ The format_for method takes multiple options. For example:
26
+
27
+ class User < ActiveRecord::Base
28
+ define_easy_dates do
29
+ format_for :updated_at, :signup_date, :test_date # Array
30
+ format_for :created_at, :format => "%H:%M" # Uses strftime settings, :format can be used on arrays too
31
+ format_for :updated_at, :format => "%H:%M%P", :as => "updated_time" # :as will allow you to set your own name for your required format (:as does not work on an array of time columns like in the first example)
32
+ end
33
+ end
34
+
35
+ Once your dates have been defined you can access the new formatted date as follows:
36
+
37
+ @user = User.first
38
+
39
+ # Example 1 / format_for :updated_at, :signup_date, :test_date
40
+ @user.formatted_created_at
41
+ @user.formatted_signup_date
42
+ @user.formatted_test_date
43
+
44
+ # Example 2 / format_for :created_at, :format => "%H:%M"
45
+ @user.formated_created_at
46
+
47
+ # Example 3 / format_for :updated_at, :format => "%H:%M%P", :as => "updated_time"
48
+ @user.updated_time
49
+
50
+ In short:
51
+
52
+ Set your own name
53
+ :as => "new_name
54
+
55
+ Set your own format
56
+ :format => "strftime format"
57
+
58
+ Convenience method "formatted_column_name" is created, unless specified with :as
59
+
60
+ == Contact
61
+
62
+ Follow me on twitter: http://twitter.com/ryan_za
63
+
64
+ Email: ryan *at* platform45.com
65
+
66
+ == License
67
+
68
+ Copyright (c) 2009 Platform45
69
+
70
+ Permission is hereby granted, free of charge, to any person obtaining
71
+ a copy of this software and associated documentation files (the
72
+ "Software"), to deal in the Software without restriction, including
73
+ without limitation the rights to use, copy, modify, merge, publish,
74
+ distribute, sublicense, and/or sell copies of the Software, and to
75
+ permit persons to whom the Software is furnished to do so, subject to
76
+ the following conditions:
77
+
78
+ The above copyright notice and this permission notice shall be
79
+ included in all copies or substantial portions of the Software.
80
+
81
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
82
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
83
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
84
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
85
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
86
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
87
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'echoe'
4
+
5
+ Echoe.new('easy_dates', '0.0.1') do |p|
6
+ p.description = "Easy date formatting for ActiveRecord"
7
+ p.url = "http://github.com/platform45/easy_dates"
8
+ p.author = "Ryan Oberholzer"
9
+ p.email = "ryan@platform45.com"
10
+ p.ignore_pattern = ["tmp/*", "script/*"]
11
+ p.development_dependencies = []
12
+ end
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{easy_dates}
5
+ s.version = "0.0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Ryan Oberholzer"]
9
+ s.date = %q{2009-12-18}
10
+ s.description = %q{Easy date formatting for ActiveRecord}
11
+ s.email = %q{ryan@platform45.com}
12
+ s.extra_rdoc_files = ["README.rdoc", "lib/easy_dates.rb", "lib/easy_dates/base.rb"]
13
+ s.files = ["Manifest", "README.rdoc", "Rakefile", "lib/easy_dates.rb", "lib/easy_dates/base.rb", "easy_dates.gemspec"]
14
+ s.homepage = %q{http://github.com/platform45/easy_dates}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Easy_dates", "--main", "README.rdoc"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{easy_dates}
18
+ s.rubygems_version = %q{1.3.5}
19
+ s.summary = %q{Easy date formatting for ActiveRecord}
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
26
+ else
27
+ end
28
+ else
29
+ end
30
+ end
@@ -0,0 +1,51 @@
1
+ module EasyDates
2
+ module Base
3
+ def self.included(base)
4
+ base.extend ClassMethods
5
+ end
6
+
7
+ module ClassMethods
8
+
9
+ TIMESTAMPS = [:created_at, :updated_at]
10
+
11
+ def define_easy_dates(&date_block)
12
+ instance_eval(&date_block)
13
+ end
14
+
15
+ private
16
+
17
+ def format_for(names = [], options = {})
18
+ format = choose_date_format(options[:format]) || "%Y-%m-%d"
19
+ names = [*names].flatten
20
+
21
+ if names.include?(:timestamps)
22
+ TIMESTAMPS.each {|ts| names << ts }
23
+ end
24
+
25
+ names.each do |name|
26
+ chosen_name = names.count == 1 ? (options[:as] || "formatted_#{name}") : "formatted_#{name}"
27
+ generate_method(name, chosen_name, format) unless name.equal?(:timestamps)
28
+ end
29
+ end
30
+
31
+ def generate_method(name, chosen_name, format)
32
+ class_eval <<-EOL
33
+ def #{chosen_name}
34
+ #{name}.strftime("#{format}")
35
+ end
36
+ EOL
37
+ end
38
+
39
+ def choose_date_format(format)
40
+ case format
41
+ when :us
42
+ "%m-%d-%Y"
43
+ when :world
44
+ "%m-%d-%Y"
45
+ else
46
+ format
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
data/lib/easy_dates.rb ADDED
@@ -0,0 +1,5 @@
1
+ require 'easy_dates/base'
2
+
3
+ class ActiveRecord::Base
4
+ include EasyDates::Base
5
+ end
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: easy_dates
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ryan Oberholzer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-12-18 00:00:00 +02:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Easy date formatting for ActiveRecord
17
+ email: ryan@platform45.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.rdoc
24
+ - lib/easy_dates.rb
25
+ - lib/easy_dates/base.rb
26
+ files:
27
+ - Manifest
28
+ - README.rdoc
29
+ - Rakefile
30
+ - lib/easy_dates.rb
31
+ - lib/easy_dates/base.rb
32
+ - easy_dates.gemspec
33
+ has_rdoc: true
34
+ homepage: http://github.com/platform45/easy_dates
35
+ licenses: []
36
+
37
+ post_install_message:
38
+ rdoc_options:
39
+ - --line-numbers
40
+ - --inline-source
41
+ - --title
42
+ - Easy_dates
43
+ - --main
44
+ - README.rdoc
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: "0"
52
+ version:
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: "1.2"
58
+ version:
59
+ requirements: []
60
+
61
+ rubyforge_project: easy_dates
62
+ rubygems_version: 1.3.5
63
+ signing_key:
64
+ specification_version: 3
65
+ summary: Easy date formatting for ActiveRecord
66
+ test_files: []
67
+