smarter_dates 0.2.7.8 → 0.2.7.9

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/.gitignore CHANGED
@@ -1,2 +1,5 @@
1
- pkg
1
+ *.gem
2
+ .bundle
2
3
  .rvmrc
4
+ Gemfile.lock
5
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in smarter_dates.gemspec
4
+ gemspec
data/Rakefile CHANGED
@@ -1,43 +1 @@
1
- require 'rake'
2
- require 'rake/testtask'
3
- require 'rake/rdoctask'
4
-
5
- desc 'Default: run unit tests.'
6
- task :default => :test
7
-
8
- desc 'Test the smarter_dates gem.'
9
- Rake::TestTask.new(:test) do |t|
10
- t.libs << 'lib'
11
- t.libs << 'test'
12
- t.pattern = 'test/**/*_test.rb'
13
- t.verbose = true
14
- end
15
-
16
- desc 'Generate documentation for the smarter_dates gem.'
17
- Rake::RDocTask.new(:rdoc) do |rdoc|
18
- rdoc.rdoc_dir = 'rdoc'
19
- rdoc.title = 'SmarterDates'
20
- rdoc.options << '--line-numbers' << '--inline-source'
21
- rdoc.rdoc_files.include('README.rdoc')
22
- rdoc.rdoc_files.include('lib/**/*.rb')
23
- end
24
-
25
- begin
26
- require 'jeweler'
27
- Jeweler::Tasks.new do |gemspec|
28
- gemspec.name = 'smarter_dates'
29
- gemspec.summary = 'machina to automatically parse date/datetime attributes upon assignment.'
30
- gemspec.description = "Humans want to think of date and datetime attributes in a natural manner.\nStandard ruby Date and DateTime objects do not support this well."
31
- gemspec.email = 'Paul Belt'
32
- gemspec.authors = ['Paul Belt']
33
- gemspec.homepage = 'http://github.com/belt/smarter_dates'
34
- gemspec.extra_rdoc_files = ['README.rdoc']
35
- gemspec.rdoc_options = ['--charset=UTF-8']
36
- gemspec.add_dependency('chronic', '~> 0.2.3')
37
- gemspec.rubyforge_project = 'smarter_dates'
38
- end
39
- Jeweler::GemcutterTasks.new
40
- rescue LoadError
41
- puts "Jeweler not available. Install it with: gem install jeweler"
42
- end
43
-
1
+ require 'bundler/gem_tasks'
@@ -0,0 +1,57 @@
1
+ require 'smarter_dates/version'
2
+ require 'chronic'
3
+
4
+ module SmarterDates
5
+ def self.included( klass ) # :nodoc:
6
+ attr_accessor :dt_attributes
7
+
8
+ @dt_attributes = []
9
+ db_migrated = true
10
+ if defined?(Rails)
11
+ begin
12
+ @dt_attributes.concat(klass.column_names.select{|k|k.match(/_(?:at|on|dt|d)$/)})
13
+ Rails.logger.debug(RuntimeError,"unused include - #{klass.class.to_s} does not have any attributes ending in _at, _on, _dt, or _d") if db_migrated && @dt_attributes.empty?
14
+ rescue ActiveRecord::StatementInvalid => e
15
+ db_migrated = false
16
+ rescue => e
17
+ Rails.logger.debug(e.inspect)
18
+ db_migrated = false
19
+ end
20
+ else
21
+ @dt_attributes.concat(klass.instance_methods.select{|k|k.match(/_(?:at|on|dt|d)$/)})
22
+ end
23
+
24
+ # :call-seq:
25
+ # _on(string)
26
+ # _at(string)
27
+ # _dt(string)
28
+ # _d(string)
29
+ #
30
+ # Any attribute ending in _at, _on, _dt, or _d are parsed by Chronic.parse
31
+ # (for flexibility). Values are passed as is to Chronic.parse()
32
+ #
33
+ # == Arguments
34
+ # <tt>string</tt>:: A string
35
+
36
+ @dt_attributes.each do |k|
37
+ parse = Proc.new do |val|
38
+ begin
39
+ dt = Chronic.parse(val.to_s)
40
+ rescue
41
+ dt = DateTime.parse(val)
42
+ rescue
43
+ dt = Date.parse(val)
44
+ rescue
45
+ dt = val
46
+ end
47
+ if defined?(Rails)
48
+ self[k] = dt
49
+ else
50
+ instance_variable_set(:"@#{k}",dt)
51
+ end
52
+ end
53
+ klass.send(:define_method, "#{k}=".to_sym, &parse)
54
+ end
55
+ end
56
+ end
57
+
@@ -0,0 +1,4 @@
1
+ module SmarterDates
2
+ VERSION = '0.2.7.9'
3
+ end
4
+
data/lib/smarter_dates.rb CHANGED
@@ -1,59 +1,3 @@
1
- module SmarterDates
2
- require 'chronic'
3
-
4
- def self.included( klass ) # :nodoc:
5
- dt_attributes = []
6
- db_migrated = true
7
- if defined?(Rails)
8
- begin
9
- dt_attributes.concat(klass.column_names.select{|k|k.match(/_(?:at|on|dt|d)$/)})
10
- Rails.logger.debug(RuntimeError,"unused include - #{klass.class.to_s} does not have any attributes ending in _at, _on, _dt, or _d") if db_migrated && dt_attributes.empty?
11
- rescue ActiveRecord::StatementInvalid => e
12
- db_migrated = false
13
- rescue => e
14
- Rails.logger.debug(e.inspect)
15
- db_migrated = false
16
- end
17
- else
18
- dt_attributes.concat(klass.instance_methods.select{|k|k.match(/_(?:at|on|dt|d)$/)})
19
- end
20
-
21
- # :call-seq:
22
- # _on(string)
23
- # _at(string)
24
- # _dt(string)
25
- # _d(string)
26
- #
27
- # Any attribute ending in _at, _on, _dt, or _d are parsed by Chronic.parse
28
- # (for flexibility). Values are passed as is to Chronic.parse()
29
- #
30
- # == Arguments
31
- # <tt>string</tt>:: A string
32
-
33
- dt_attributes.each do |k|
34
- parse = Proc.new do |val|
35
- begin
36
- dt = Chronic.parse(val.to_s(:db))
37
- rescue
38
- dt = Chronic.parse(val.to_s)
39
- rescue
40
- dt = DateTime.parse(val)
41
- rescue
42
- dt = Date.parse(val)
43
- rescue
44
- dt = val
45
- end
46
-
47
- if respond_to?(:write_attribute)
48
- write_attribute(k,dt)
49
- else
50
- instance_variable_set(:"@#{k}",dt)
51
- end
52
- end
53
- klass.send(:define_method, "#{k}=".to_sym, &parse)
54
- end
55
- end
56
-
57
- # /module
58
- end
1
+ require File.join('smarter_dates','version')
2
+ require File.join('smarter_dates','parser')
59
3
 
@@ -1,52 +1,23 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'smarter_dates/version'
5
4
 
6
5
  Gem::Specification.new do |s|
7
- s.name = %q{smarter_dates}
8
- s.version = "0.2.7.8"
6
+ s.name = 'smarter_dates'
7
+ s.version = SmarterDates::VERSION
8
+ s.authors = ['Paul Belt']
9
+ s.email = ['paul.belt@gmail.com']
10
+ s.homepage = 'http://github.com/belt/smarter_dates'
11
+ s.summary = %q{Natural language date processing}
12
+ s.description = %q{Humans want to think of date and datetime attributes in a natural manner. Standard ruby Date and DateTime objects do not support this well.}
9
13
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Paul Belt"]
12
- s.date = %q{2010-10-20}
13
- s.description = %q{Humans want to think of date and datetime attributes in a natural manner.
14
- Standard ruby Date and DateTime objects do not support this well.}
15
- s.email = %q{Paul Belt}
16
- s.extra_rdoc_files = [
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".gitignore",
21
- "LICENSE",
22
- "README.rdoc",
23
- "Rakefile",
24
- "VERSION.yml",
25
- "lib/smarter_dates.rb",
26
- "smarter_dates.gemspec",
27
- "test/smarter_dates_test.rb"
28
- ]
29
- s.homepage = %q{http://github.com/belt/smarter_dates}
30
- s.rdoc_options = ["--charset=UTF-8"]
31
- s.require_paths = ["lib"]
32
- s.rubyforge_project = %q{smarter_dates}
33
- s.rubygems_version = %q{1.3.7}
34
- s.summary = %q{machina to automatically parse date/datetime attributes upon assignment.}
35
- s.test_files = [
36
- "test/smarter_dates_test.rb"
37
- ]
14
+ s.rubyforge_project = 'smarter_dates'
38
15
 
39
- if s.respond_to? :specification_version then
40
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
41
- s.specification_version = 3
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ['lib']
42
20
 
43
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
44
- s.add_runtime_dependency(%q<chronic>, ["~> 0.2.3"])
45
- else
46
- s.add_dependency(%q<chronic>, ["~> 0.2.3"])
47
- end
48
- else
49
- s.add_dependency(%q<chronic>, ["~> 0.2.3"])
50
- end
21
+ s.add_dependency('chronic', '~> 0.3.0')
51
22
  end
52
23
 
@@ -1,6 +1,10 @@
1
- require 'rubygems'
2
1
  require 'test/unit'
3
- require File.join(File.dirname(__FILE__),'..','lib','smarter_dates')
2
+
3
+ if $LOAD_PATH.include?(File.expand_path(File.join(File.dirname(__FILE__),'..','lib')))
4
+ require 'smarter_dates'
5
+ else
6
+ raise RuntimeError, "Try ruby -Ilib test/#{File.basename(__FILE__)}"
7
+ end
4
8
 
5
9
  class Model
6
10
  attr_accessor :name
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smarter_dates
3
3
  version: !ruby/object:Gem::Version
4
- hash: 83
5
- prerelease: false
4
+ hash: 81
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
9
  - 7
10
- - 8
11
- version: 0.2.7.8
10
+ - 9
11
+ version: 0.2.7.9
12
12
  platform: ruby
13
13
  authors:
14
14
  - Paul Belt
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-10-20 00:00:00 -04:00
19
+ date: 2011-06-27 00:00:00 -04:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -27,31 +27,33 @@ dependencies:
27
27
  requirements:
28
28
  - - ~>
29
29
  - !ruby/object:Gem::Version
30
- hash: 17
30
+ hash: 19
31
31
  segments:
32
32
  - 0
33
- - 2
34
33
  - 3
35
- version: 0.2.3
34
+ - 0
35
+ version: 0.3.0
36
36
  type: :runtime
37
37
  version_requirements: *id001
38
- description: |-
39
- Humans want to think of date and datetime attributes in a natural manner.
40
- Standard ruby Date and DateTime objects do not support this well.
41
- email: Paul Belt
38
+ description: Humans want to think of date and datetime attributes in a natural manner. Standard ruby Date and DateTime objects do not support this well.
39
+ email:
40
+ - paul.belt@gmail.com
42
41
  executables: []
43
42
 
44
43
  extensions: []
45
44
 
46
- extra_rdoc_files:
47
- - README.rdoc
45
+ extra_rdoc_files: []
46
+
48
47
  files:
49
48
  - .gitignore
49
+ - Gemfile
50
50
  - LICENSE
51
51
  - README.rdoc
52
52
  - Rakefile
53
53
  - VERSION.yml
54
54
  - lib/smarter_dates.rb
55
+ - lib/smarter_dates/parser.rb
56
+ - lib/smarter_dates/version.rb
55
57
  - smarter_dates.gemspec
56
58
  - test/smarter_dates_test.rb
57
59
  has_rdoc: true
@@ -59,8 +61,8 @@ homepage: http://github.com/belt/smarter_dates
59
61
  licenses: []
60
62
 
61
63
  post_install_message:
62
- rdoc_options:
63
- - --charset=UTF-8
64
+ rdoc_options: []
65
+
64
66
  require_paths:
65
67
  - lib
66
68
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -84,9 +86,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
86
  requirements: []
85
87
 
86
88
  rubyforge_project: smarter_dates
87
- rubygems_version: 1.3.7
89
+ rubygems_version: 1.6.2
88
90
  signing_key:
89
91
  specification_version: 3
90
- summary: machina to automatically parse date/datetime attributes upon assignment.
92
+ summary: Natural language date processing
91
93
  test_files:
92
94
  - test/smarter_dates_test.rb