new_base_60 1.0.3 → 1.0.4
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/.gemtest +0 -0
- data/CHANGELOG.rdoc +6 -0
- data/README.rdoc +2 -4
- data/lib/new_base_60.rb +7 -7
- data/test/test_new_base_60.rb +7 -7
- metadata +11 -10
data/.gemtest
ADDED
File without changes
|
data/CHANGELOG.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= new_base_60
|
2
2
|
|
3
|
-
* http://github.com/veganstraightedge/
|
3
|
+
* http://github.com/veganstraightedge/new_base_60
|
4
4
|
|
5
5
|
== DESCRIPTION:
|
6
6
|
|
@@ -23,7 +23,7 @@ Based on work done by Tantek Çelik : http://tantek.pbworks.com/New_base_60
|
|
23
23
|
How to use:
|
24
24
|
|
25
25
|
require "new_base_60"
|
26
|
-
n =
|
26
|
+
n = NewBase60.new("464")# => #<NewBase60:0x1011ea468 @base_60="464">
|
27
27
|
puts n.to_i # => 14764
|
28
28
|
puts n.to_i.to_sxg # => "464"
|
29
29
|
puts n.to_date # => #<Date: 4910703/2,0,2299161>
|
@@ -40,8 +40,6 @@ How to use:
|
|
40
40
|
* Ruby Port : Shane Becker
|
41
41
|
* Lotsa Cleanup : John Barnette
|
42
42
|
|
43
|
-
* sudo gem install new_base_60
|
44
|
-
|
45
43
|
== LICENSE:
|
46
44
|
|
47
45
|
PUBLIC DOMAIN.
|
data/lib/new_base_60.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require "date"
|
2
2
|
require "time"
|
3
3
|
|
4
|
-
class
|
5
|
-
VERSION = '1.0.
|
4
|
+
class NewBase60
|
5
|
+
VERSION = '1.0.4'
|
6
6
|
VOCABULARY = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ_abcdefghijkmnopqrstuvwxyz"
|
7
7
|
|
8
8
|
def initialize(base_60)
|
@@ -41,7 +41,7 @@ class New_base_60
|
|
41
41
|
def to_date
|
42
42
|
# HACK this is smelly
|
43
43
|
# days since epoch * seconds * minutes * hours + timezone
|
44
|
-
time = Time.at(
|
44
|
+
time = Time.at(NewBase60.new(@base_60).to_i *
|
45
45
|
60 * 60 * 24 + Time.now.gmtoff.abs)
|
46
46
|
|
47
47
|
Date.parse(time.strftime("%Y/%m/%d"))
|
@@ -49,7 +49,7 @@ class New_base_60
|
|
49
49
|
end
|
50
50
|
|
51
51
|
class Integer
|
52
|
-
# Converts a base 10 integer into a
|
52
|
+
# Converts a base 10 integer into a NewBase60 string.
|
53
53
|
def to_sxg
|
54
54
|
return "" if zero?
|
55
55
|
|
@@ -58,14 +58,14 @@ class Integer
|
|
58
58
|
|
59
59
|
while num > 0 do
|
60
60
|
mod = num % 60
|
61
|
-
sxg = "#{
|
61
|
+
sxg = "#{NewBase60::VOCABULARY[mod,1]}#{sxg}"
|
62
62
|
num = (num - mod) / 60
|
63
63
|
end
|
64
64
|
|
65
65
|
sxg
|
66
66
|
end
|
67
67
|
|
68
|
-
# Converts a base 10 integer into a
|
68
|
+
# Converts a base 10 integer into a NewBase60 string,
|
69
69
|
# padding with leading zeroes.
|
70
70
|
def to_sxgf(padding)
|
71
71
|
num = self
|
@@ -85,7 +85,7 @@ class Integer
|
|
85
85
|
end
|
86
86
|
|
87
87
|
class Date
|
88
|
-
# Converts into a
|
88
|
+
# Converts into a NewBase60 string.
|
89
89
|
def to_sxg
|
90
90
|
(self - Date.parse("1970/01/01")).to_i.to_sxg
|
91
91
|
end
|
data/test/test_new_base_60.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
require "test/unit"
|
2
2
|
require "new_base_60"
|
3
3
|
|
4
|
-
class
|
4
|
+
class TestNewBase60 < Test::Unit::TestCase
|
5
5
|
def test_base60_to_base10
|
6
|
-
assert_equal
|
7
|
-
assert_not_equal
|
6
|
+
assert_equal NewBase60.new("464").to_i, 14764
|
7
|
+
assert_not_equal NewBase60.new("464").to_i, 12345
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_base60_to_date
|
11
|
-
assert_equal
|
12
|
-
assert_not_equal
|
11
|
+
assert_equal NewBase60.new("464").to_date, Date.parse("2010/06/04")
|
12
|
+
assert_not_equal NewBase60.new("464").to_date, Date.parse("2010/06/05")
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_date_to_base60
|
16
|
-
assert_equal Date.parse("2010/06/04").to_sxg,
|
17
|
-
assert_not_equal Date.parse("2010/06/05").to_sxg,
|
16
|
+
assert_equal Date.parse("2010/06/04").to_sxg, NewBase60.new("464").to_s
|
17
|
+
assert_not_equal Date.parse("2010/06/05").to_sxg, NewBase60.new("464")
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_base10_to_base60
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: new_base_60
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 31
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 4
|
10
|
+
version: 1.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Shane Becker
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-02-15 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -26,12 +26,12 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
29
|
+
hash: 41
|
30
30
|
segments:
|
31
31
|
- 2
|
32
|
-
-
|
32
|
+
- 9
|
33
33
|
- 1
|
34
|
-
version: 2.
|
34
|
+
version: 2.9.1
|
35
35
|
type: :development
|
36
36
|
version_requirements: *id001
|
37
37
|
description: "Handy Conversion Sexagesimal (base 60) for Short URLs\n\
|
@@ -58,8 +58,9 @@ files:
|
|
58
58
|
- Rakefile
|
59
59
|
- lib/new_base_60.rb
|
60
60
|
- test/test_new_base_60.rb
|
61
|
+
- .gemtest
|
61
62
|
has_rdoc: true
|
62
|
-
homepage: http://github.com/veganstraightedge/
|
63
|
+
homepage: http://github.com/veganstraightedge/new_base_60
|
63
64
|
licenses: []
|
64
65
|
|
65
66
|
post_install_message:
|
@@ -89,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
90
|
requirements: []
|
90
91
|
|
91
92
|
rubyforge_project: new_base_60
|
92
|
-
rubygems_version: 1.
|
93
|
+
rubygems_version: 1.5.2
|
93
94
|
signing_key:
|
94
95
|
specification_version: 3
|
95
96
|
summary: "Handy Conversion Sexagesimal (base 60) for Short URLs Cuts out ambiguous characters like: * l : lowercase l (looks like a 1 : one) * I : capital I (looks like a 1 : one) * O : capital O (looks like a 0 : zero) Based on work done by Tantek \xC3\x87elik : http://tantek.pbworks.com/New_base_60"
|