sanderjd-bitch 0.1.0 → 0.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.
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