xbd 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.
@@ -1,5 +1,5 @@
1
1
  # encoding: BINARY
2
- $ruby_inline=true
2
+ $ruby_inline=false
3
3
  require "inline" if $ruby_inline
4
4
  require "stringio"
5
5
 
@@ -1,3 +1,3 @@
1
1
  module Xbd
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -23,8 +23,6 @@ And run:
23
23
  require "xbd.rb"
24
24
  puts Xbd.load_from_file("your_xbd_filename.xbd")
25
25
 
26
- Master verison of this file lives in: imikimi_plugin_source/xbd/xbd.rb
27
-
28
26
  =end
29
27
  require File.join(File.dirname(__FILE__),"asi")
30
28
  require File.join(File.dirname(__FILE__),"xbd_dictionary")
@@ -12,9 +12,11 @@ module Xbd
12
12
  def initialize(initial_values=[])
13
13
  @hash={}
14
14
  @array=[]
15
- initial_values.each {|v| self<<(v)}
15
+ initial_values.each {|v| add v, false}
16
16
  end
17
17
 
18
+ def length; @array.length end
19
+
18
20
  # return String given an ID, or ID given a String
19
21
  def [](i) @hash[i] end
20
22
 
@@ -26,14 +28,7 @@ module Xbd
26
28
  end
27
29
 
28
30
  # add a String to the dictionary
29
- def <<(str)
30
- str = Dictionary.sanitize_string str
31
- @hash[str] ||= begin
32
- new_id = @array.length
33
- @array << @hash[new_id] = str
34
- new_id
35
- end
36
- end
31
+ def <<(str) add str end
37
32
 
38
33
  # convert to binary string
39
34
  def to_binary
@@ -48,5 +43,18 @@ module Xbd
48
43
  strings = lengths.collect {|len| encoded_dictionary.read len}
49
44
  [Dictionary.new(strings), index]
50
45
  end
46
+
47
+ private
48
+ # enforce_unique == false during loading, since technically, and xbd dictionary COULD have duplicate entries.
49
+ # Duplicate entries only reduces efficiency. It shouldn't break anything.
50
+ # XBD files shouldn't have dupes, but the current C++ implementation DOES create them rarely (bug).
51
+ def add(str, enforce_unique = true)
52
+ str = Dictionary.sanitize_string str
53
+ return @hash[str] if @hash[str] && enforce_unique
54
+
55
+ @hash[str] = new_id = @array.length
56
+ @array << @hash[new_id] = str
57
+ end
58
+
51
59
  end
52
60
  end
@@ -167,8 +167,8 @@ module Xbd
167
167
  attr_byte_size-=(index-i)
168
168
  n=attrsd[name_id]
169
169
  v=valuesd[value_id]
170
- raise "attribute name id(#{name_id}) not in attribute-names dictionary" if !n
171
- raise "attribute value id(#{value_id}) not in attribue-values dictionary" if !v
170
+ raise "attribute name id(#{name_id}) not in attribute-names dictionary (max value = #{attrsd.length})" if !n
171
+ raise "attribute value id(#{value_id}) not in attribute-values dictionary (max value = #{valuesd.length})" if !v
172
172
  attrs_hash[n]=v
173
173
  end
174
174
  tag_length-=(index-tag_start_index)
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- s.add_dependency 'RubyInline', '~> 3.11.0'
21
+ # s.add_dependency 'RubyInline', '~> 3.11.0'
22
22
  s.add_development_dependency 'rake'
23
23
  s.add_development_dependency 'rspec', '~> 2.6.0'
24
24
  end
metadata CHANGED
@@ -1,78 +1,57 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: xbd
3
- version: !ruby/object:Gem::Version
4
- hash: 27
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 0
10
- version: 0.1.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Shane Brinkman-Davis
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-06-08 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: RubyInline
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 43
29
- segments:
30
- - 3
31
- - 11
32
- - 0
33
- version: 3.11.0
34
- type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
12
+ date: 2014-06-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
37
15
  name: rake
38
- prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
40
17
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
48
22
  type: :development
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: rspec
52
23
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
54
25
  none: false
55
- requirements:
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
56
35
  - - ~>
57
- - !ruby/object:Gem::Version
58
- hash: 23
59
- segments:
60
- - 2
61
- - 6
62
- - 0
36
+ - !ruby/object:Gem::Version
63
37
  version: 2.6.0
64
38
  type: :development
65
- version_requirements: *id003
66
- description: The XBD gem allows you to create, load and save XBD files. XBD files are arbitrary, self-describing, hierarchical, binary data structures consisting of "tags", "attributes", and "sub-tags".
67
- email:
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.6.0
46
+ description: The XBD gem allows you to create, load and save XBD files. XBD files
47
+ are arbitrary, self-describing, hierarchical, binary data structures consisting
48
+ of "tags", "attributes", and "sub-tags".
49
+ email:
68
50
  - shanebdavis@imikimi.com
69
51
  executables: []
70
-
71
52
  extensions: []
72
-
73
53
  extra_rdoc_files: []
74
-
75
- files:
54
+ files:
76
55
  - .gitignore
77
56
  - Gemfile
78
57
  - LICENSE.TXT
@@ -92,38 +71,29 @@ files:
92
71
  - xbd.gemspec
93
72
  homepage: https://github.com/Imikimi-LLC/xbd
94
73
  licenses: []
95
-
96
74
  post_install_message:
97
75
  rdoc_options: []
98
-
99
- require_paths:
76
+ require_paths:
100
77
  - lib
101
- required_ruby_version: !ruby/object:Gem::Requirement
78
+ required_ruby_version: !ruby/object:Gem::Requirement
102
79
  none: false
103
- requirements:
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- hash: 3
107
- segments:
108
- - 0
109
- version: "0"
110
- required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
111
85
  none: false
112
- requirements:
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- hash: 3
116
- segments:
117
- - 0
118
- version: "0"
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
119
90
  requirements: []
120
-
121
91
  rubyforge_project: xbd
122
- rubygems_version: 1.8.10
92
+ rubygems_version: 1.8.25
123
93
  signing_key:
124
94
  specification_version: 3
125
95
  summary: A fast, simplified, XML-inspired binary file format.
126
- test_files:
96
+ test_files:
127
97
  - spec/xbd_asi_spec.rb
128
98
  - spec/xbd_dictionary_spec.rb
129
99
  - spec/xbd_tag_spec.rb