anybase 0.0.12 → 0.0.13

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,3 @@
1
1
  .DS_Store
2
- pkg
2
+ pkg
3
+ Gemfile.lock
data/anybase.gemspec CHANGED
@@ -20,4 +20,5 @@ Gem::Specification.new do |s|
20
20
 
21
21
  # specify any dependencies here; for example:
22
22
  s.add_development_dependency "rspec"
23
+ s.add_development_dependency "rake"
23
24
  end
data/lib/anybase.rb CHANGED
@@ -18,16 +18,29 @@ class Anybase
18
18
  if ignore_case?
19
19
  @chars.downcase!
20
20
  end
21
+ regexp_str = '['
21
22
  @chars.split('').each_with_index do |c, i|
23
+ regexp_str << Regexp.quote(c)
22
24
  add_mapping(c, i)
23
25
  @num_map[i] = c
24
26
  if @synonyms && @synonyms[c]
25
27
  @synonyms[c].split('').each { |sc|
28
+ regexp_str << Regexp.quote(sc)
26
29
  @synonyms_tr[1] << c
27
30
  @synonyms_tr[0] << sc
28
31
  }
29
32
  end
30
33
  end
34
+ regexp_str << ']+'
35
+ @regexp = @ignore_case ? Regexp.new(regexp_str, Regexp::IGNORECASE) : Regexp.new(regexp_str)
36
+ end
37
+
38
+ def match(str)
39
+ if match = @regexp.match(str)
40
+ match.begin(0) == 0 ? match[0] : nil
41
+ else
42
+ nil
43
+ end
31
44
  end
32
45
 
33
46
  def ignore_case?
@@ -100,5 +113,4 @@ class Anybase
100
113
  Base64 = Anybase.new('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')
101
114
  Base64ForURL = Anybase.new('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_')
102
115
  Base73ForURL = Anybase.new('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$-_.+!*\'(),')
103
-
104
116
  end
@@ -1,3 +1,3 @@
1
1
  class Anybase
2
- VERSION = '0.0.12'
2
+ VERSION = '0.0.13'
3
3
  end
data/spec/util_spec.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Anybase, "from" do
3
+ describe Anybase, "util" do
4
4
  it "should tell you the size for an arbitrary number of digits" do
5
5
  Anybase.new("012345678").size(10).should == 3486784401
6
6
  (Anybase.new("012345678").size(10) * Anybase.new("012345678").size(10)).should == Anybase.new("012345678").size(20)
@@ -13,4 +13,11 @@ describe Anybase, "from" do
13
13
  it "raise if the sign is in the chars" do
14
14
  proc{ Anybase.new("01", :sign => '0') }.should raise_error
15
15
  end
16
+
17
+ it "should allow matching" do
18
+ funny_octal = Anybase.new("012345678", :synonyms => {'0' => 'oO'})
19
+ funny_octal.match('235O').should == '235O'
20
+ funny_octal.match('235Ozzz').should == '235O'
21
+ funny_octal.match('a235O').should == nil
22
+ end
16
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anybase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-11-18 00:00:00.000000000Z
13
+ date: 2011-12-20 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
17
- requirement: &70295135181880 !ruby/object:Gem::Requirement
17
+ requirement: &70130407494640 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,7 +22,18 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *70295135181880
25
+ version_requirements: *70130407494640
26
+ - !ruby/object:Gem::Dependency
27
+ name: rake
28
+ requirement: &70130407494220 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *70130407494220
26
37
  description: Numbers from anybase to anybase
27
38
  email:
28
39
  - joshbuddy@gmail.com
@@ -33,7 +44,6 @@ extra_rdoc_files: []
33
44
  files:
34
45
  - .gitignore
35
46
  - Gemfile
36
- - Gemfile.lock
37
47
  - README.rdoc
38
48
  - Rakefile
39
49
  - anybase.gemspec
@@ -56,12 +66,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
56
66
  - - ! '>='
57
67
  - !ruby/object:Gem::Version
58
68
  version: '0'
69
+ segments:
70
+ - 0
71
+ hash: 613979369150698059
59
72
  required_rubygems_version: !ruby/object:Gem::Requirement
60
73
  none: false
61
74
  requirements:
62
75
  - - ! '>='
63
76
  - !ruby/object:Gem::Version
64
77
  version: '0'
78
+ segments:
79
+ - 0
80
+ hash: 613979369150698059
65
81
  requirements: []
66
82
  rubyforge_project: anybase
67
83
  rubygems_version: 1.8.10
@@ -74,4 +90,3 @@ test_files:
74
90
  - spec/spec_helper.rb
75
91
  - spec/to_spec.rb
76
92
  - spec/util_spec.rb
77
- has_rdoc:
data/Gemfile.lock DELETED
@@ -1,24 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- anybase (0.0.12)
5
-
6
- GEM
7
- remote: http://rubygems.org/
8
- specs:
9
- diff-lcs (1.1.3)
10
- rspec (2.7.0)
11
- rspec-core (~> 2.7.0)
12
- rspec-expectations (~> 2.7.0)
13
- rspec-mocks (~> 2.7.0)
14
- rspec-core (2.7.1)
15
- rspec-expectations (2.7.0)
16
- diff-lcs (~> 1.1.2)
17
- rspec-mocks (2.7.0)
18
-
19
- PLATFORMS
20
- ruby
21
-
22
- DEPENDENCIES
23
- anybase!
24
- rspec