sanderjd-bitch 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/bitch.rb +11 -0
  2. data/lib/bits.rb +2 -1
  3. metadata +2 -2
@@ -5,12 +5,14 @@ class Bitch
5
5
  # Class methods
6
6
 
7
7
  def self.template(name, &block)
8
+ name = symbol_if_string(name)
8
9
  templates[name] = self.new
9
10
  yield templates[name]
10
11
  nil
11
12
  end
12
13
 
13
14
  def self.create(name, params = {})
15
+ name = symbol_if_string(name)
14
16
  params.each_pair { |k,v| templates[name][k] = v }
15
17
  templates[name]
16
18
  end
@@ -29,15 +31,18 @@ class Bitch
29
31
  def oct_string; get_bits.oct_string end
30
32
 
31
33
  def add(name, object)
34
+ name = symbol_if_string(name)
32
35
  fields << { name => object.get_bits }
33
36
  end
34
37
 
35
38
  def bring(name, params = {})
39
+ name = symbol_if_string(name)
36
40
  object = Bitch.create(name, params)
37
41
  fields << { name => object.get_bits }
38
42
  end
39
43
 
40
44
  def bits(name, params = {})
45
+ name = symbol_if_string(name)
41
46
  value = params.key?(:value) ? params[:value] : 0
42
47
  length = params.key?(:length) ? params[:length] : 0
43
48
  fields << { name => Bits.new(value, length) }
@@ -51,10 +56,12 @@ class Bitch
51
56
  end
52
57
 
53
58
  def [](name)
59
+ name = symbol_if_string(name)
54
60
  fields.select { |field| field.key?(name) }.first.values.first
55
61
  end
56
62
 
57
63
  def []=(name, value)
64
+ name = symbol_if_string(name)
58
65
  element_array = fields.select { |field| field.key?(name) }
59
66
  element = element_array.first.values.first unless element_array.empty?
60
67
  element.set(value) unless element.nil?
@@ -62,6 +69,10 @@ class Bitch
62
69
 
63
70
  private
64
71
 
72
+ def symbol_if_string(name)
73
+ name.to_sym if name.kind_of? String
74
+ end
75
+
65
76
  def fields
66
77
  @fields ||= Array.new
67
78
  end
@@ -53,7 +53,8 @@ class Bits
53
53
  when Bitch
54
54
  bits.get_bits.bits
55
55
  else
56
- raise TypeError, "Unsupported data type #{bits.class}"
56
+ warn "Unsupported data #{bits} (#{bits.class}) - defaulting to #{length} length zero field"
57
+ "%0#{length}b" % 0
57
58
  end
58
59
  end
59
60
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sanderjd-bitch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Sanders
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-01-18 00:00:00 -08:00
12
+ date: 2009-01-20 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15