nbtfile 0.1.0 → 0.2.0
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/README.rdoc +71 -23
- data/VERSION +1 -1
- data/lib/nbtfile.rb +1 -2
- metadata +7 -3
data/README.rdoc
CHANGED
@@ -13,16 +13,16 @@ http://www.minecraft.net/docs/NBT.txt
|
|
13
13
|
|
14
14
|
The NBT data model has ten different data types:
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
16
|
+
* 8-bit signed integers (Tag_Byte)
|
17
|
+
* 16-bit signed integers (Tag_Short)
|
18
|
+
* 32-bit signed integers (Tag_Int)
|
19
|
+
* 64-bit signed integers (Tag_Long)
|
20
|
+
* 32-bit floating-point numbers (Tag_Float)
|
21
|
+
* 64-bit floating-point numbers (Tag_Double)
|
22
|
+
* UTF-8 strings (Tag_String)
|
23
|
+
* raw byte sequences (Tag_Byte_Array)
|
24
|
+
* homogenous lists (Tag_List)
|
25
|
+
* compound structures (Tag_Compound)
|
26
26
|
|
27
27
|
Compound structures (Tag_Compound) are unordered
|
28
28
|
collections where each item ("tag") has a name associated
|
@@ -44,6 +44,66 @@ Tag_End, but this is not supported in practice.
|
|
44
44
|
The top level of an NBT file must be a single-element
|
45
45
|
compound structure.
|
46
46
|
|
47
|
+
== Interface
|
48
|
+
|
49
|
+
== Low-level API
|
50
|
+
|
51
|
+
The low-level API deals directly in NBT tokens, which are represented by eleven types:
|
52
|
+
|
53
|
+
* NBTFile::Tokens::TAG_End
|
54
|
+
* NBTFile::Tokens::TAG_Byte
|
55
|
+
* NBTFile::Tokens::TAG_Short
|
56
|
+
* NBTFile::Tokens::TAG_Long
|
57
|
+
* NBTFile::Tokens::TAG_Float
|
58
|
+
* NBTFile::Tokens::TAG_Double
|
59
|
+
* NBTFile::Tokens::TAG_Byte_Array
|
60
|
+
* NBTFile::Tokens::TAG_String
|
61
|
+
* NBTFile::Tokens::TAG_List
|
62
|
+
* NBTFile::Tokens::TAG_Compound
|
63
|
+
|
64
|
+
Their constructors each take two arguments: <code>name</code> and <code>value</code>,
|
65
|
+
which are also exposed by similarly-named accessors. Most of these tokens represent
|
66
|
+
simple values, but TAG_List and TAG_Compound introduce the beginning of a list and a
|
67
|
+
compound structure, and TAG_End terminates either one.
|
68
|
+
|
69
|
+
The <code>name</code> field supplies the field name when the token is part of a compound
|
70
|
+
structure, and is ignored when it is part of a list.
|
71
|
+
|
72
|
+
For most token types, <code>value</code> represents the value of the token. For TAG_List
|
73
|
+
it represents the type of the list. It is ignored for compound structures.
|
74
|
+
|
75
|
+
=== NBTFile.tokenize
|
76
|
+
|
77
|
+
=== NBTFile.emit
|
78
|
+
|
79
|
+
== High-level API
|
80
|
+
|
81
|
+
Much of the high-level API deals in higher-level data types from the NBTFile::Types module.
|
82
|
+
|
83
|
+
There are eight "primitive" types with <code>value</code> fields which reflect their native Ruby values:
|
84
|
+
|
85
|
+
* NBTFile::Types::Byte
|
86
|
+
* NBTFile::Types::Short
|
87
|
+
* NBTFile::Types::Int
|
88
|
+
* NBTFile::Types::Long
|
89
|
+
* NBTFile::Types::Float
|
90
|
+
* NBTFile::Types::Double
|
91
|
+
* NBTFile::Types::ByteArray
|
92
|
+
* NBTFile::Types::String
|
93
|
+
|
94
|
+
There are also two "complex" types which reflect NBT lists and compound structures:
|
95
|
+
|
96
|
+
* NBTFile::Types::List - an Array-like class corresponding to an NBT list
|
97
|
+
* NBTFile::Types::Compound - a Hash-like class correspodning to an NBT compound structure
|
98
|
+
|
99
|
+
=== NBTFile.read
|
100
|
+
|
101
|
+
=== NBTFile.write
|
102
|
+
|
103
|
+
=== NBTFile.load
|
104
|
+
|
105
|
+
=== NBTFile.transcode_to_yaml
|
106
|
+
|
47
107
|
== Syntax
|
48
108
|
|
49
109
|
NBT files are gzip-compressed; the structure of the
|
@@ -115,18 +175,6 @@ ABNF (see RFC 5234).
|
|
115
175
|
TAG-LIST = %x09
|
116
176
|
TAG-COMPOUND = %x0a
|
117
177
|
|
118
|
-
== Interface
|
119
|
-
|
120
|
-
== Low-level API
|
121
|
-
|
122
|
-
=== NBTFile.tokenize
|
123
|
-
|
124
|
-
=== NBTFile.emit
|
125
|
-
|
126
|
-
== High-level API
|
127
|
-
|
128
|
-
=== NBTFile.load
|
129
|
-
|
130
178
|
== Note on Patches/Pull Requests
|
131
179
|
|
132
180
|
* Fork the project.
|
@@ -139,4 +187,4 @@ ABNF (see RFC 5234).
|
|
139
187
|
|
140
188
|
== Copyright
|
141
189
|
|
142
|
-
Copyright (c) 2010 MenTaLguY. See LICENSE for details.
|
190
|
+
Copyright (c) 2010-2011 MenTaLguY. See LICENSE for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/nbtfile.rb
CHANGED
@@ -24,7 +24,6 @@
|
|
24
24
|
require 'zlib'
|
25
25
|
require 'stringio'
|
26
26
|
require 'yaml'
|
27
|
-
require 'enumerator'
|
28
27
|
|
29
28
|
class String #:nodoc: all
|
30
29
|
begin
|
@@ -1008,7 +1007,7 @@ module Types
|
|
1008
1007
|
@key_order.each { |k| yield k, @hash[k] }
|
1009
1008
|
self
|
1010
1009
|
else
|
1011
|
-
|
1010
|
+
@key_order.each
|
1012
1011
|
end
|
1013
1012
|
end
|
1014
1013
|
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nbtfile
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 23
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
|
-
-
|
8
|
+
- 2
|
8
9
|
- 0
|
9
|
-
version: 0.
|
10
|
+
version: 0.2.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- MenTaLguY
|
@@ -14,7 +15,7 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2011-02-
|
18
|
+
date: 2011-02-13 00:00:00 -08:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
@@ -25,6 +26,7 @@ dependencies:
|
|
25
26
|
requirements:
|
26
27
|
- - ">="
|
27
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
28
30
|
segments:
|
29
31
|
- 2
|
30
32
|
- 0
|
@@ -68,6 +70,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
68
70
|
requirements:
|
69
71
|
- - ">="
|
70
72
|
- !ruby/object:Gem::Version
|
73
|
+
hash: 3
|
71
74
|
segments:
|
72
75
|
- 0
|
73
76
|
version: "0"
|
@@ -76,6 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
79
|
requirements:
|
77
80
|
- - ">="
|
78
81
|
- !ruby/object:Gem::Version
|
82
|
+
hash: 3
|
79
83
|
segments:
|
80
84
|
- 0
|
81
85
|
version: "0"
|