bitwise 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -21,7 +21,7 @@ Usage
21
21
  Bitwise assignment and retrieval:
22
22
 
23
23
  ```ruby
24
- b = Bitwise.new(1)
24
+ b = Bitwise.new("\x00")
25
25
 
26
26
  b.to_bits
27
27
  => "00000000"
@@ -93,7 +93,7 @@ b2.indexes = [1, 2, 4, 8, 16]
93
93
  => [3, 4, 5, 6, 8, 16]
94
94
  ```
95
95
 
96
- As a bonus, `Bitwise#string_not`, `Bitwise#string_union`, `Bitwise#string_intersect`, and `Bitwise#string_xor` can be used as a standalone method to work with any binary string.
96
+ As a bonus, `Bitwise.string_not`, `Bitwise.string_union`, `Bitwise.string_intersect`, and `Bitwise.string_xor` can be used as a standalone utility to work with any binary string.
97
97
 
98
98
  ```ruby
99
99
  Bitwise.string_not "\xF0"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "bitwise"
8
- s.version = "0.2.0"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kenn Ejima"]
@@ -5,8 +5,8 @@ require 'bitwise/bitwise'
5
5
  class Bitwise
6
6
  attr_accessor :value
7
7
 
8
- def initialize(size = 0)
9
- @value = "\x00" * size
8
+ def initialize(value = "")
9
+ @value = value.force_encoding(Encoding::ASCII_8BIT)
10
10
  end
11
11
 
12
12
  def size
@@ -51,36 +51,32 @@ class Bitwise
51
51
  end
52
52
 
53
53
  def not
54
- result = Bitwise.new
55
- result.value = Bitwise.string_not(self.value)
56
- result
54
+ Bitwise.new(Bitwise.string_not(self.value))
57
55
  end
58
56
  alias :~ :not
59
57
 
60
58
  def intersect(other)
61
- min, max = [ self.value, other.value ].sort_by{|i| i.bytesize }
62
- result = Bitwise.new
63
- result.value = Bitwise.string_intersect(max, min)
64
- result
59
+ assign_max_and_min(other)
60
+ Bitwise.new Bitwise.string_intersect(@max, @min)
65
61
  end
66
62
  alias :& :intersect
67
63
 
68
64
  def union(other)
69
- min, max = [ self.value, other.value ].sort_by{|i| i.bytesize }
70
- result = Bitwise.new
71
- result.value = Bitwise.string_union(max, min)
72
- result
65
+ assign_max_and_min(other)
66
+ Bitwise.new Bitwise.string_union(@max, @min)
73
67
  end
74
68
  alias :| :union
75
69
 
76
70
  def xor(other)
77
- min, max = [ self.value, other.value ].sort_by{|i| i.bytesize }
78
- result = Bitwise.new
79
- result.value = Bitwise.string_xor(max, min)
80
- result
71
+ assign_max_and_min(other)
72
+ Bitwise.new Bitwise.string_xor(@max, @min)
81
73
  end
82
74
  alias :^ :xor
83
75
 
76
+ def assign_max_and_min(other)
77
+ @min, @max = [ self.value, other.value ].sort_by{|i| i.bytesize }
78
+ end
79
+
84
80
  def value=(string)
85
81
  @value = string.force_encoding(Encoding::ASCII_8BIT)
86
82
  @value.bytesize
@@ -5,7 +5,7 @@ require 'set'
5
5
 
6
6
  describe Bitwise do
7
7
  before do
8
- @bitwise = Bitwise.new(1)
8
+ @bitwise = Bitwise.new("\x00")
9
9
  end
10
10
 
11
11
  describe "assignment and retrieval" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bitwise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-12-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &2159343420 !ruby/object:Gem::Requirement
16
+ requirement: &2167425960 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2159343420
24
+ version_requirements: *2167425960
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &2159341700 !ruby/object:Gem::Requirement
27
+ requirement: &2167424100 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2159341700
35
+ version_requirements: *2167424100
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &2159340960 !ruby/object:Gem::Requirement
38
+ requirement: &2167423320 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2159340960
46
+ version_requirements: *2167423320
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake-compiler
49
- requirement: &2159340120 !ruby/object:Gem::Requirement
49
+ requirement: &2167422520 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2159340120
57
+ version_requirements: *2167422520
58
58
  description: Fast, memory efficient bitwise operations on large binary strings
59
59
  email: kenn.ejima@gmail.com
60
60
  executables: []