new_base_60 1.0.4 → 1.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/CHANGELOG.rdoc +8 -2
- data/Manifest.txt +2 -0
- data/README.rdoc +17 -4
- data/bin/dec_to_sxg +4 -0
- data/bin/sxg_to_dec +5 -0
- data/lib/new_base_60.rb +5 -18
- data/test/test_new_base_60.rb +18 -13
- metadata +74 -63
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
=== 1.1 / 2013-01-10
|
2
|
+
|
3
|
+
* 1 minor enhancement
|
4
|
+
|
5
|
+
* Added command line script `sxg_to_dec` and `dec_to_sxg` for converting on the command line by Aaron Parecki (@aaronpk)
|
6
|
+
|
1
7
|
=== 1.0.4 / 2011-02-15
|
2
8
|
|
3
9
|
* 1 minor enhancement
|
@@ -14,8 +20,8 @@
|
|
14
20
|
|
15
21
|
* 2 minor enhancement
|
16
22
|
|
17
|
-
* Code cleanup thanks to John Barnette
|
18
|
-
* Credits section added to README, props to Tantek Çelik for original idea
|
23
|
+
* Code cleanup thanks to John Barnette (@jbarnette)
|
24
|
+
* Credits section added to README, props to Tantek Çelik (@tantek) for original idea
|
19
25
|
|
20
26
|
=== 1.0.1 / 2010-06-11
|
21
27
|
|
data/Manifest.txt
CHANGED
data/README.rdoc
CHANGED
@@ -15,7 +15,7 @@ Based on work done by Tantek Çelik : http://tantek.pbworks.com/New_base_60
|
|
15
15
|
== FEATURES/PROBLEMS:
|
16
16
|
|
17
17
|
* Converts Base10 (like 147124) to Base60 (like fs4)
|
18
|
-
* Converts Base60 (like fs4) to
|
18
|
+
* Converts Base60 (like fs4) to Base10 (like 147124)
|
19
19
|
* Converts Base60 (like fs4) to a Time object (Mon Oct 23 23:00:00 -0800 2372)
|
20
20
|
|
21
21
|
== SYNOPSIS:
|
@@ -30,15 +30,28 @@ How to use:
|
|
30
30
|
puts n.to_date.to_s # => "2010-06-04"
|
31
31
|
puts n.to_date.to_sxg # => "464"
|
32
32
|
|
33
|
+
Or, on the command line:
|
34
|
+
|
35
|
+
$ dec_to_sxg 115727
|
36
|
+
Y8n
|
37
|
+
$ sxg_to_dec Y8n
|
38
|
+
115727
|
39
|
+
|
40
|
+
If you want a shortcut, add this to your .bash_profile:
|
41
|
+
|
42
|
+
alias sd="sxg_to_dec"
|
43
|
+
alias ds="dec_to_sxg"
|
44
|
+
|
33
45
|
== INSTALL:
|
34
46
|
|
35
47
|
* sudo gem install new_base_60
|
36
48
|
|
37
49
|
== CREDITS:
|
38
50
|
|
39
|
-
* Original Idea : Tantek Çelik
|
40
|
-
* Ruby Port : Shane Becker
|
41
|
-
* Lotsa Cleanup : John Barnette
|
51
|
+
* Original Idea : Tantek Çelik (@tantek)
|
52
|
+
* Ruby Port : Shane Becker (@veganstraightedge)
|
53
|
+
* Lotsa Cleanup : John Barnette (@jbarnette)
|
54
|
+
* Command Line Scripts : Aaron Parecki (@aaronpk)
|
42
55
|
|
43
56
|
== LICENSE:
|
44
57
|
|
data/bin/dec_to_sxg
ADDED
data/bin/sxg_to_dec
ADDED
data/lib/new_base_60.rb
CHANGED
@@ -2,7 +2,7 @@ require "date"
|
|
2
2
|
require "time"
|
3
3
|
|
4
4
|
class NewBase60
|
5
|
-
VERSION = '1.
|
5
|
+
VERSION = '1.1'
|
6
6
|
VOCABULARY = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ_abcdefghijkmnopqrstuvwxyz"
|
7
7
|
|
8
8
|
def initialize(base_60)
|
@@ -39,12 +39,7 @@ class NewBase60
|
|
39
39
|
|
40
40
|
# Converts into a Date.
|
41
41
|
def to_date
|
42
|
-
|
43
|
-
# days since epoch * seconds * minutes * hours + timezone
|
44
|
-
time = Time.at(NewBase60.new(@base_60).to_i *
|
45
|
-
60 * 60 * 24 + Time.now.gmtoff.abs)
|
46
|
-
|
47
|
-
Date.parse(time.strftime("%Y/%m/%d"))
|
42
|
+
Time.at(to_i * 60 * 60 * 24).utc.to_date
|
48
43
|
end
|
49
44
|
end
|
50
45
|
|
@@ -67,20 +62,12 @@ class Integer
|
|
67
62
|
|
68
63
|
# Converts a base 10 integer into a NewBase60 string,
|
69
64
|
# padding with leading zeroes.
|
70
|
-
def to_sxgf(padding)
|
71
|
-
|
72
|
-
|
73
|
-
str = num.to_sxg
|
65
|
+
def to_sxgf(padding=1)
|
66
|
+
str = to_sxg
|
74
67
|
|
75
|
-
padding = 1 if padding.nil?
|
76
68
|
padding -= str.length
|
77
69
|
|
78
|
-
|
79
|
-
str = "0#{str}"
|
80
|
-
padding -= 1
|
81
|
-
end
|
82
|
-
|
83
|
-
str
|
70
|
+
padding.times.map { "0" }.join + str
|
84
71
|
end
|
85
72
|
end
|
86
73
|
|
data/test/test_new_base_60.rb
CHANGED
@@ -1,29 +1,34 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'new_base_60'
|
3
3
|
|
4
|
-
class
|
4
|
+
class TestCase < MiniTest::Spec
|
5
5
|
def test_base60_to_base10
|
6
|
-
|
7
|
-
|
6
|
+
assert NewBase60.new("464").to_i == 14764
|
7
|
+
refute NewBase60.new("464").to_i == 12345
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_base60_to_date
|
11
|
-
|
12
|
-
|
11
|
+
assert NewBase60.new("").to_date == Date.parse("1970/01/01")
|
12
|
+
assert NewBase60.new("4JG").to_date == Date.parse("2012/06/05")
|
13
|
+
assert NewBase60.new("464").to_date == Date.parse("2010/06/04")
|
14
|
+
refute NewBase60.new("464").to_date == Date.parse("2010/06/05")
|
13
15
|
end
|
14
16
|
|
15
17
|
def test_date_to_base60
|
16
|
-
|
17
|
-
|
18
|
+
assert Date.parse("2010/06/04").to_sxg == NewBase60.new("464").to_s
|
19
|
+
refute Date.parse("2010/06/05").to_sxg == NewBase60.new("464")
|
18
20
|
end
|
19
21
|
|
20
22
|
def test_base10_to_base60
|
21
|
-
|
22
|
-
|
23
|
+
assert 14764.to_sxg == "464"
|
24
|
+
refute 12345.to_sxg == "464"
|
23
25
|
end
|
24
26
|
|
25
27
|
def test_base10_to_base60_with_leading_zeroes
|
26
|
-
|
27
|
-
|
28
|
+
assert 14764.to_sxgf(1) == "464"
|
29
|
+
assert 14764.to_sxgf(5) == "00464"
|
30
|
+
assert 14764.to_sxgf() == "464"
|
31
|
+
assert 14764.to_sxgf(9) == "000000464"
|
32
|
+
refute 12345.to_sxgf(9) == "000000464"
|
28
33
|
end
|
29
34
|
end
|
metadata
CHANGED
@@ -1,98 +1,109 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: new_base_60
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '1.1'
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 4
|
10
|
-
version: 1.0.4
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Shane Becker
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
12
|
+
date: 2013-01-11 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rdoc
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.10'
|
22
|
+
type: :development
|
23
23
|
prerelease: false
|
24
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.10'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: hoe
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
25
33
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 2
|
32
|
-
- 9
|
33
|
-
- 1
|
34
|
-
version: 2.9.1
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '3.4'
|
35
38
|
type: :development
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
- veganstraightedge@example.com
|
45
|
-
executables: []
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '3.4'
|
46
|
+
description: ! 'Handy Conversion Sexagesimal (base 60) for Short URLs
|
46
47
|
|
47
|
-
|
48
|
+
Cuts out ambiguous characters like:
|
48
49
|
|
49
|
-
|
50
|
-
|
50
|
+
* l : lowercase l (looks like a 1 : one)
|
51
|
+
|
52
|
+
* I : capital I (looks like a 1 : one)
|
53
|
+
|
54
|
+
* O : capital O (looks like a 0 : zero)
|
55
|
+
|
56
|
+
|
57
|
+
Based on work done by Tantek Çelik : http://tantek.pbworks.com/New_base_60'
|
58
|
+
email:
|
59
|
+
- veganstraightedge@example.com
|
60
|
+
executables:
|
61
|
+
- dec_to_sxg
|
62
|
+
- sxg_to_dec
|
63
|
+
extensions: []
|
64
|
+
extra_rdoc_files:
|
51
65
|
- CHANGELOG.rdoc
|
66
|
+
- Manifest.txt
|
52
67
|
- README.rdoc
|
53
|
-
files:
|
68
|
+
files:
|
54
69
|
- .autotest
|
55
70
|
- CHANGELOG.rdoc
|
56
71
|
- Manifest.txt
|
57
72
|
- README.rdoc
|
58
73
|
- Rakefile
|
59
74
|
- lib/new_base_60.rb
|
75
|
+
- bin/dec_to_sxg
|
76
|
+
- bin/sxg_to_dec
|
60
77
|
- test/test_new_base_60.rb
|
61
78
|
- .gemtest
|
62
|
-
has_rdoc: true
|
63
79
|
homepage: http://github.com/veganstraightedge/new_base_60
|
64
80
|
licenses: []
|
65
|
-
|
66
81
|
post_install_message:
|
67
|
-
rdoc_options:
|
82
|
+
rdoc_options:
|
68
83
|
- --main
|
69
84
|
- README.rdoc
|
70
|
-
require_paths:
|
85
|
+
require_paths:
|
71
86
|
- lib
|
72
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
88
|
none: false
|
74
|
-
requirements:
|
75
|
-
- -
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
|
78
|
-
|
79
|
-
- 0
|
80
|
-
version: "0"
|
81
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ! '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
94
|
none: false
|
83
|
-
requirements:
|
84
|
-
- -
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
|
87
|
-
segments:
|
88
|
-
- 0
|
89
|
-
version: "0"
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
90
99
|
requirements: []
|
91
|
-
|
92
100
|
rubyforge_project: new_base_60
|
93
|
-
rubygems_version: 1.
|
101
|
+
rubygems_version: 1.8.24
|
94
102
|
signing_key:
|
95
103
|
specification_version: 3
|
96
|
-
summary:
|
97
|
-
|
104
|
+
summary: ! 'Handy Conversion Sexagesimal (base 60) for Short URLs Cuts out ambiguous
|
105
|
+
characters like: * l : lowercase l (looks like a 1 : one) * I : capital I (looks
|
106
|
+
like a 1 : one) * O : capital O (looks like a 0 : zero) Based on work done by
|
107
|
+
Tantek Çelik : http://tantek.pbworks.com/New_base_60'
|
108
|
+
test_files:
|
98
109
|
- test/test_new_base_60.rb
|