fizx-uberchronic 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README ADDED
File without changes
data/ext/extconf.rb ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ ENV["ARCHFLAGS"] = "-arch #{`uname -p` =~ /powerpc/ ? 'ppc' : 'i386'}"
3
+ require 'mkmf'
4
+
5
+ ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
6
+
7
+ LIBDIR = Config::CONFIG['libdir']
8
+ INCLUDEDIR = Config::CONFIG['includedir']
9
+ myincl = %w[/usr/local/include /opt/local/include /usr/include]
10
+ mylib = %w[/usr/local/lib /opt/local/lib /usr/lib]
11
+
12
+ find_header('time.h', INCLUDEDIR, *myincl) or abort "need time.h"
13
+
14
+ create_makefile('get_date')
data/ext/get_date.c ADDED
@@ -0,0 +1,24 @@
1
+ #include <time.h>
2
+ #include <stdio.h>
3
+ #include "ruby.h"
4
+
5
+ VALUE _parse(VALUE, VALUE);
6
+ VALUE c_get_date;
7
+
8
+ void Init_get_date()
9
+ {
10
+ c_get_date = rb_define_class("GetDate", rb_cObject);
11
+ rb_define_singleton_method(c_get_date, "parse", _parse, 1);
12
+ }
13
+
14
+ VALUE
15
+ _parse(VALUE self, VALUE str){
16
+ char *cstr = STR2CSTR(str);
17
+ struct tm * parsed = getdate(cstr);
18
+
19
+ if(parsed == NULL) {
20
+ return Qnil;
21
+ } else {
22
+ return INT2NUM(mktime(parsed));
23
+ }
24
+ }
@@ -0,0 +1,16 @@
1
+ require "rubygems"
2
+ require "chronic"
3
+ require File.dirname(__FILE__) + "/../ext/get_date"
4
+ require "time"
5
+
6
+ module Uberchronic
7
+ def self.parse(str)
8
+ if stamp = GetDate.parse(str)
9
+ puts stamp.inspect
10
+ return Time.at(stamp)
11
+ else
12
+ return Chronic.parse(str)
13
+ end
14
+ end
15
+ end
16
+
@@ -0,0 +1,16 @@
1
+ require "test/unit"
2
+ require File.dirname(__FILE__) + "/../lib/uberchronic"
3
+
4
+ class UberchronicTest < Test::Unit::TestCase
5
+ def test_parsing
6
+ assert_same_day Time.parse("Dec 15 1999"), Uberchronic.parse("december 15 1999")
7
+ end
8
+
9
+ def test_junk
10
+ assert_nil Uberchronic.parse("junk")
11
+ end
12
+
13
+ def assert_same_day(a, b)
14
+ assert (a - b).abs < 60 * 60 * 24
15
+ end
16
+ end
@@ -0,0 +1,23 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "uberchronic"
3
+ s.version = "0.1.0"
4
+ s.date = "2009-04-14"
5
+ s.summary = "Like chronic, plus GNU getdate to cover edge cases"
6
+ s.email = "kyle@kylemaxwell.com"
7
+ s.homepage = "http://github.com/fizx/"
8
+ s.description = "Like chronic, plus GNU getdate to cover edge cases"
9
+ s.has_rdoc = true
10
+ s.require_paths = ["lib", "ext"]
11
+ s.extensions = "ext/extconf.rb"
12
+ s.authors = ["Kyle Maxwell"]
13
+ s.files = %w[
14
+ ext/extconf.rb
15
+ ext/get_date.c
16
+ lib/uberchronic.rb
17
+ test/uberchronic_test.rb
18
+ uberchronic.gemspec
19
+ ]
20
+ s.rdoc_options = ["--main", "README"]
21
+ s.extra_rdoc_files = ["README"]
22
+ s.add_dependency("chronic", ["> 0.0.0"])
23
+ end
metadata ADDED
@@ -0,0 +1,69 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fizx-uberchronic
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Kyle Maxwell
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-04-14 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: chronic
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ description: Like chronic, plus GNU getdate to cover edge cases
26
+ email: kyle@kylemaxwell.com
27
+ executables: []
28
+
29
+ extensions:
30
+ - ext/extconf.rb
31
+ extra_rdoc_files:
32
+ - README
33
+ files:
34
+ - ext/extconf.rb
35
+ - ext/get_date.c
36
+ - lib/uberchronic.rb
37
+ - test/uberchronic_test.rb
38
+ - uberchronic.gemspec
39
+ - README
40
+ has_rdoc: true
41
+ homepage: http://github.com/fizx/
42
+ post_install_message:
43
+ rdoc_options:
44
+ - --main
45
+ - README
46
+ require_paths:
47
+ - lib
48
+ - ext
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: "0"
60
+ version:
61
+ requirements: []
62
+
63
+ rubyforge_project:
64
+ rubygems_version: 1.2.0
65
+ signing_key:
66
+ specification_version: 2
67
+ summary: Like chronic, plus GNU getdate to cover edge cases
68
+ test_files: []
69
+