nwn-lib 0.5.1 → 0.6.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.
- checksums.yaml +7 -0
- data/.gitignore +4 -4
- data/Gemfile +4 -1
- data/README.rdoc +23 -17
- data/SETTINGS.rdoc +3 -2
- data/lib/nwn/all.rb +17 -16
- data/lib/nwn/gff.rb +6 -6
- data/lib/nwn/gff/reader.rb +9 -7
- data/lib/nwn/settings.rb +1 -1
- data/lib/nwn/xml_support.rb +8 -1
- data/lib/nwn/yaml_support.rb +40 -79
- data/nwn-lib.gemspec +2 -3
- data/spec/field_spec.rb +3 -2
- data/spec/gff_spec.rb +6 -0
- data/spec/spec_helper.rb +12 -17
- metadata +8 -11
- data/lib/nwn/version.rb +0 -3
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6039060ff0d0c726c6b7fa44dd7be8c624c3cf98
|
4
|
+
data.tar.gz: 82b2a9eea724b7d9b5b52a254d3b672b126affe8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2288b34809225b00cb6b95c26a4d2360c31c8360d045ef8cbf5b69341cff2936d7f01aeeced4fa6e9ebbfad313578cfad7459da4f4896b4d0d6b042d888c66b5
|
7
|
+
data.tar.gz: 69c551f0f7e19d64a2bbed798d10f75a8c8b6c78df91b7103a6759cd1fb34cc47fd22020042883e655c9eb283bb24aabef57848d694ab1e72e5481d6a178dd95
|
data/.gitignore
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
doc
|
2
|
-
pkg
|
3
|
-
|
4
|
-
Gemfile.lock
|
1
|
+
/doc/
|
2
|
+
/pkg/
|
3
|
+
/.yardoc/
|
4
|
+
/Gemfile.lock
|
data/Gemfile
CHANGED
@@ -1,9 +1,12 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org/'
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in nwn-lib.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
6
|
gem 'rake', '>= 0.8.7'
|
7
7
|
|
8
|
+
gem 'json', :group => :json
|
9
|
+
gem 'libxml-ruby', :group => :xml
|
10
|
+
|
8
11
|
gem 'rspec', :groups => [:development, :test]
|
9
12
|
gem 'yard', :groups => [:development]
|
data/README.rdoc
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
== A library for Neverwinter Nights 1/2 resource files
|
2
2
|
|
3
|
-
This package provides a library for reading, changing, and writing common file
|
3
|
+
This package provides a library for reading, changing, and writing common file
|
4
|
+
formats that are found with NWN[http://nwn.bioware.com/], a Bioware game.
|
4
5
|
|
5
|
-
They should work with NWN2 just as well, since the file format specifications
|
6
|
+
They should work with NWN2 just as well, since the file format specifications
|
7
|
+
did not change.
|
6
8
|
|
7
9
|
|
8
10
|
=== Features of nwn-lib
|
9
11
|
|
10
|
-
==== nwn-lib reads and writes the following file formats (hopefully bug-free!),
|
12
|
+
==== nwn-lib reads and writes the following file formats (hopefully bug-free!),
|
13
|
+
both with an API and useful command-line tools:
|
11
14
|
|
12
15
|
* GFF 3.2 (are, git, gic, dlg, itp, ifo, jrl, fac, ssf, ut*, among others)
|
13
16
|
* ERF (mod, hak, erf, among others)
|
@@ -31,36 +34,39 @@ They should work with NWN2 just as well, since the file format specifications di
|
|
31
34
|
|
32
35
|
==== Also in the box:
|
33
36
|
|
34
|
-
* shell scripts and tools to simplify your life (see
|
37
|
+
* shell scripts and tools to simplify your life (see BINARIES)
|
35
38
|
* extensive developer API
|
36
|
-
* a powerful get-out-of-my-way scripting system for data transformation (see
|
39
|
+
* a powerful get-out-of-my-way scripting system for data transformation (see SCRIPTING)
|
37
40
|
|
38
41
|
|
39
42
|
=== Upgrade from 0.3.6 to 0.4.x
|
40
43
|
|
41
|
-
With the release of 0.4.0, the API changed significantly. Previous yaml dumps
|
42
|
-
|
44
|
+
With the release of 0.4.0, the API changed significantly. Previous yaml dumps
|
45
|
+
made with 0.3.x are INCOMPATIBLE, and so are all scripts.
|
46
|
+
I can't help you with your API bindings, but for your YAML dumps, a converter
|
47
|
+
script has been provided (see BINARIES).
|
43
48
|
|
44
49
|
|
45
50
|
=== Upgrade from 0.4.x to 0.5.x
|
46
51
|
|
47
|
-
All with version 0.4.x produced files should be compatible with 0.5.0.
|
52
|
+
All with version 0.4.x produced files should be compatible with 0.5.0.
|
53
|
+
Your application might require some porting to ruby 1.9.
|
48
54
|
|
55
|
+
=== Upgrade from 0.5.x to 0.6.x
|
49
56
|
|
50
|
-
|
51
|
-
|
52
|
-
|
57
|
+
YAML dumps will need to be converted due to the internal parser/generator used
|
58
|
+
by ruby being replaced (syck to psych).
|
59
|
+
There is a converter packaged in tools/ along with the gem distribution.
|
53
60
|
|
54
|
-
|
61
|
+
=== Quickstart
|
55
62
|
|
56
|
-
|
63
|
+
To use it, simply add the following to your Gemfile:
|
57
64
|
|
58
|
-
|
59
|
-
require 'nwn/all'
|
65
|
+
gem 'nwn-lib'
|
60
66
|
|
61
|
-
Also, read
|
67
|
+
Also, read BINARIES for the packaged executable scripts, and HOWTO.
|
62
68
|
|
63
|
-
For nwn-lib scripts, see
|
69
|
+
For nwn-lib scripts, see SCRIPTING.
|
64
70
|
|
65
71
|
For using the developer API, I suggest you start reading NWN::Gff::Struct.
|
66
72
|
|
data/SETTINGS.rdoc
CHANGED
@@ -8,8 +8,9 @@ Under linux, just add them to your shell environment (usually .bashrc), like so:
|
|
8
8
|
|
9
9
|
== NWN_LIB_IN_ENCODING
|
10
10
|
|
11
|
-
The character encoding your local data (gff) files are in. Defaults to
|
12
|
-
Extended dump formats like yaml, xml are always format-specific
|
11
|
+
The character encoding your local data (gff) files are in. Defaults to windows-1252.
|
12
|
+
Extended dump formats like yaml, xml are always format-specific.
|
13
|
+
YAML and json, for example, are always UTF-8.
|
13
14
|
|
14
15
|
== NWN_LIB_PRETTY_JSON
|
15
16
|
|
data/lib/nwn/all.rb
CHANGED
@@ -1,26 +1,27 @@
|
|
1
1
|
require 'stringio'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
2
|
+
require_relative 'io'
|
3
|
+
require_relative 'twoda'
|
4
|
+
require_relative 'settings'
|
5
|
+
require_relative 'res'
|
6
|
+
require_relative 'gff'
|
7
|
+
require_relative 'tlk'
|
8
|
+
require_relative 'key'
|
9
|
+
require_relative 'erf'
|
10
|
+
|
11
|
+
require_relative 'yaml_support'
|
12
|
+
|
12
13
|
begin
|
13
14
|
require 'json'
|
14
|
-
|
15
|
+
require_relative 'json_support'
|
15
16
|
rescue LoadError => e
|
16
|
-
NWN.log_debug "json support not available, install json or json_pure to enable"
|
17
|
+
# NWN.log_debug "json support not available, install json or json_pure to enable"
|
17
18
|
end
|
18
|
-
|
19
|
+
require_relative 'kivinen_support'
|
19
20
|
begin
|
20
21
|
require 'xml'
|
21
|
-
|
22
|
+
require_relative 'xml_support'
|
22
23
|
rescue LoadError => e
|
23
|
-
NWN.log_debug "nxml and modpacker support not available, install libxml-ruby to enable"
|
24
|
+
# NWN.log_debug "nxml and modpacker support not available, install libxml-ruby to enable"
|
24
25
|
end
|
25
26
|
|
26
|
-
|
27
|
+
require_relative 'scripting'
|
data/lib/nwn/gff.rb
CHANGED
@@ -148,9 +148,9 @@ module NWN
|
|
148
148
|
end
|
149
149
|
end
|
150
150
|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
151
|
+
require_relative 'gff/struct'
|
152
|
+
require_relative 'gff/cexolocstr'
|
153
|
+
require_relative 'gff/field'
|
154
|
+
require_relative 'gff/list'
|
155
|
+
require_relative 'gff/reader'
|
156
|
+
require_relative 'gff/writer'
|
data/lib/nwn/gff/reader.rb
CHANGED
@@ -18,9 +18,11 @@ class NWN::Gff::Reader
|
|
18
18
|
read_all
|
19
19
|
end
|
20
20
|
|
21
|
-
|
21
|
+
private
|
22
22
|
|
23
23
|
def read_all
|
24
|
+
initial_seek = @io.pos
|
25
|
+
|
24
26
|
type, version,
|
25
27
|
struct_offset, struct_count,
|
26
28
|
field_offset, field_count,
|
@@ -37,27 +39,27 @@ class NWN::Gff::Reader
|
|
37
39
|
field_len = field_count * 16
|
38
40
|
label_len = label_count * 16
|
39
41
|
|
40
|
-
@io.seek(struct_offset)
|
42
|
+
@io.seek(initial_seek + struct_offset)
|
41
43
|
@structs = @io.e_read(struct_len, "structs")
|
42
44
|
@structs = @structs.unpack("V*")
|
43
45
|
|
44
|
-
@io.seek(field_offset)
|
46
|
+
@io.seek(initial_seek + field_offset)
|
45
47
|
@fields = @io.e_read(field_len, "fields")
|
46
48
|
@fields = @fields.unpack("V*")
|
47
49
|
|
48
|
-
@io.seek(label_offset)
|
50
|
+
@io.seek(initial_seek + label_offset)
|
49
51
|
@labels = @io.e_read(label_len, "labels")
|
50
52
|
@labels = @labels.unpack("A16" * label_count)
|
51
53
|
@labels.map! {|l| l.force_encoding("ASCII") }
|
52
54
|
|
53
|
-
@io.seek(field_data_offset)
|
55
|
+
@io.seek(initial_seek + field_data_offset)
|
54
56
|
@field_data = @io.e_read(field_data_count, "field_data")
|
55
57
|
|
56
|
-
@io.seek(field_indices_offset)
|
58
|
+
@io.seek(initial_seek + field_indices_offset)
|
57
59
|
@field_indices = @io.e_read(field_indices_count, "field_indices")
|
58
60
|
@field_indices = @field_indices.unpack("V*")
|
59
61
|
|
60
|
-
@io.seek(list_indices_offset)
|
62
|
+
@io.seek(initial_seek + list_indices_offset)
|
61
63
|
@list_indices = @io.e_read(list_indices_count, "list_indices")
|
62
64
|
@list_indices = @list_indices.unpack("V*")
|
63
65
|
|
data/lib/nwn/settings.rb
CHANGED
data/lib/nwn/xml_support.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'base64'
|
2
|
+
|
1
3
|
class NWN::Gff::Handler::XML
|
2
4
|
|
3
5
|
private
|
@@ -65,6 +67,9 @@ private
|
|
65
67
|
e << struct_to_xml(ee)
|
66
68
|
}
|
67
69
|
|
70
|
+
when :void
|
71
|
+
e['value'] = Base64::strict_encode64(field.field_value)
|
72
|
+
|
68
73
|
else
|
69
74
|
e['value'] = field.field_value.to_s
|
70
75
|
end
|
@@ -128,8 +133,10 @@ private
|
|
128
133
|
v.to_i
|
129
134
|
when :float, :double
|
130
135
|
v.to_f
|
131
|
-
when :
|
136
|
+
when :resref
|
132
137
|
v
|
138
|
+
when :void
|
139
|
+
Base64::strict_decode64(v)
|
133
140
|
else
|
134
141
|
raise ArgumentError, "Invalid field type #{type.inspect}. Bug."
|
135
142
|
end
|
data/lib/nwn/yaml_support.rb
CHANGED
@@ -1,103 +1,61 @@
|
|
1
|
-
|
2
|
-
require 'yaml'
|
3
|
-
Psych::ENGINE.yamler = 'syck'
|
1
|
+
require 'psych'
|
4
2
|
|
5
3
|
module NWN::Gff::Handler::YAML
|
6
4
|
# These field types can never be inlined in YAML.
|
7
5
|
NonInlineableFields = [:struct, :list, :cexolocstr]
|
8
6
|
|
9
7
|
# See http://www.taguri.org/ for the exact meaning of this.
|
10
|
-
Domain = "nwn-lib.elv.es,
|
8
|
+
Domain = "nwn-lib.elv.es,2013-07"
|
11
9
|
|
12
10
|
def self.load io
|
13
|
-
|
11
|
+
Psych.load(io)
|
14
12
|
end
|
13
|
+
|
15
14
|
def self.dump data, io
|
16
|
-
|
17
|
-
io.
|
18
|
-
|
15
|
+
str = Psych.dump(data)
|
16
|
+
io.write(str)
|
17
|
+
str.size
|
19
18
|
end
|
20
19
|
end
|
21
20
|
|
22
|
-
|
23
|
-
class Array
|
24
|
-
attr_accessor :to_yaml_style
|
25
|
-
end
|
26
|
-
class Hash
|
27
|
-
attr_accessor :to_yaml_style
|
28
|
-
end
|
29
|
-
|
30
|
-
class Hash
|
31
|
-
# Replacing the to_yaml function so it'll serialize hashes sorted (by their keys)
|
32
|
-
# Original function is in /usr/lib/ruby/1.8/yaml/rubytypes.rb
|
33
|
-
def to_yaml(opts = {})
|
34
|
-
YAML::quick_emit(nil, opts) do |out|
|
35
|
-
out.map(taguri, to_yaml_style) do |map|
|
36
|
-
if keys.map {|v| v.class }.size > 0
|
37
|
-
each do |k, v|
|
38
|
-
map.add(k, v)
|
39
|
-
end
|
40
|
-
else
|
41
|
-
sort.each do |k, v|
|
42
|
-
map.add(k, v)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
21
|
+
NWN::Gff::Handler.register :yaml, /^(y|yml|yaml)$/, NWN::Gff::Handler::YAML
|
49
22
|
|
50
23
|
module NWN::Gff::Struct
|
51
|
-
def
|
52
|
-
"!#{NWN::Gff::Handler::YAML::Domain}
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
map.add(
|
66
|
-
|
67
|
-
|
68
|
-
sort.each {|k,v|
|
69
|
-
map.add(k,v)
|
70
|
-
}
|
71
|
-
end
|
24
|
+
def encode_with out
|
25
|
+
out.map("!#{NWN::Gff::Handler::YAML::Domain}:struct") do |map|
|
26
|
+
# Inline certain structs that are small enough.
|
27
|
+
map.style = Psych::Nodes::Mapping::FLOW if self.size <= 1 &&
|
28
|
+
self.values.select {|x|
|
29
|
+
NWN::Gff::Handler::YAML::NonInlineableFields.index(x['type'])
|
30
|
+
}.size == 0
|
31
|
+
|
32
|
+
map.add('__' + 'data_type', @data_type) if @data_type
|
33
|
+
map.add('__' + 'data_version', @data_version) if
|
34
|
+
@data_version && @data_version != DEFAULT_DATA_VERSION
|
35
|
+
map.add('__' + 'struct_id', @struct_id) if @struct_id != nil
|
36
|
+
|
37
|
+
sort.each {|k, v|
|
38
|
+
map.add(k, v)
|
39
|
+
}
|
72
40
|
end
|
73
41
|
end
|
74
42
|
end
|
75
43
|
|
76
44
|
module NWN::Gff::Field
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
when :resref, :cexostr
|
86
|
-
self['value'].encode('utf-8')
|
87
|
-
when :cexolocstr
|
88
|
-
Hash[self['value'].map {|lang,str|
|
89
|
-
[lang, str.encode('utf-8')]
|
90
|
-
}]
|
91
|
-
else
|
92
|
-
self['value']
|
93
|
-
end)
|
94
|
-
end
|
45
|
+
def encode_with out
|
46
|
+
out.map do |map|
|
47
|
+
map.tag = nil
|
48
|
+
map.style = Psych::Nodes::Mapping::FLOW unless
|
49
|
+
NWN::Gff::Handler::YAML::NonInlineableFields.index(self['type'])
|
50
|
+
map.add('type', self['type'].to_s)
|
51
|
+
map.add('str_ref', self['str_ref']) if has_str_ref?
|
52
|
+
map.add('value', self['value'])
|
95
53
|
end
|
96
54
|
end
|
97
55
|
end
|
98
56
|
|
99
57
|
# This parses the struct and extends all fields with their proper type.
|
100
|
-
|
58
|
+
Psych.add_domain_type(NWN::Gff::Handler::YAML::Domain,'struct') {|t,hash|
|
101
59
|
struct = {}
|
102
60
|
struct.extend(NWN::Gff::Struct)
|
103
61
|
|
@@ -107,7 +65,8 @@ YAML.add_domain_type(NWN::Gff::Handler::YAML::Domain,'struct') {|t,hash|
|
|
107
65
|
struct.data_version = hash.delete('__data_version')
|
108
66
|
struct.data_version ||= NWN::Gff::Struct::DEFAULT_DATA_VERSION
|
109
67
|
|
110
|
-
raise NWN::Gff::GffError, "no struct_id set for struct at #{struct.path}." if
|
68
|
+
raise NWN::Gff::GffError, "no struct_id set for struct at #{struct.path}." if
|
69
|
+
struct.struct_id.nil?
|
111
70
|
|
112
71
|
hash.each {|label,element|
|
113
72
|
label.freeze
|
@@ -115,11 +74,14 @@ YAML.add_domain_type(NWN::Gff::Handler::YAML::Domain,'struct') {|t,hash|
|
|
115
74
|
element.extend(NWN::Gff::Field)
|
116
75
|
element.field_label = label
|
117
76
|
element.parent = struct
|
118
|
-
element.str_ref ||= NWN::Gff::Field::DEFAULT_STR_REF if
|
77
|
+
element.str_ref ||= NWN::Gff::Field::DEFAULT_STR_REF if
|
78
|
+
element.respond_to?('str_ref=')
|
119
79
|
|
120
80
|
element.extend_meta_classes
|
121
81
|
|
122
|
-
element.field_value.element = element if
|
82
|
+
element.field_value.element = element if
|
83
|
+
element.field_value.is_a?(NWN::Gff::Struct)
|
84
|
+
|
123
85
|
element.validate
|
124
86
|
|
125
87
|
struct[label] = element
|
@@ -128,4 +90,3 @@ YAML.add_domain_type(NWN::Gff::Handler::YAML::Domain,'struct') {|t,hash|
|
|
128
90
|
struct
|
129
91
|
}
|
130
92
|
|
131
|
-
NWN::Gff::Handler.register :yaml, /^(y|yml|yaml)$/, NWN::Gff::Handler::YAML
|
data/nwn-lib.gemspec
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
require File.expand_path('../lib/nwn/version', __FILE__)
|
3
2
|
|
4
3
|
Gem::Specification.new do |gem|
|
5
4
|
gem.authors = ["Bernhard Stoeckner"]
|
@@ -13,6 +12,6 @@ Gem::Specification.new do |gem|
|
|
13
12
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
13
|
gem.name = "nwn-lib"
|
15
14
|
gem.require_paths = ["lib"]
|
16
|
-
gem.version =
|
17
|
-
gem.required_ruby_version = '>= 1.9.
|
15
|
+
gem.version = "0.6.0"
|
16
|
+
gem.required_ruby_version = '>= 1.9.3'
|
18
17
|
end
|
data/spec/field_spec.rb
CHANGED
@@ -23,10 +23,11 @@ describe "Gff::Field" do
|
|
23
23
|
|
24
24
|
describe ":void" do
|
25
25
|
it "stores data in binary" do
|
26
|
+
void = "\xde\xad\xbe\xef".force_encoding("ASCII-8BIT")
|
26
27
|
gff = Gff::Struct.new do |root|
|
27
|
-
root.add_void 'Test',
|
28
|
+
root.add_void 'Test', void
|
28
29
|
end.to_gff
|
29
|
-
gff.index(
|
30
|
+
gff.index(void).should_not be_nil
|
30
31
|
end
|
31
32
|
end
|
32
33
|
end
|
data/spec/gff_spec.rb
CHANGED
@@ -6,6 +6,12 @@ describe "Gff.read/write API" do
|
|
6
6
|
g = Gff.read(i, :gff)
|
7
7
|
end
|
8
8
|
|
9
|
+
it "reads from IO with offsets correctly" do
|
10
|
+
i = StringIO.new "a" + WELLFORMED_GFF
|
11
|
+
i.seek(1)
|
12
|
+
g = Gff.read(i, :gff)
|
13
|
+
end
|
14
|
+
|
9
15
|
it "writes correctly" do
|
10
16
|
i = StringIO.new WELLFORMED_GFF
|
11
17
|
gff = Gff.read(i, :gff)
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
Bundler.setup(:default, :test)
|
2
|
+
|
2
3
|
require 'tempfile'
|
3
4
|
require 'fileutils'
|
4
5
|
require 'open3'
|
@@ -206,29 +207,23 @@ module BinHelper
|
|
206
207
|
old = Dir.pwd
|
207
208
|
Dir.chdir(@tmpdir) if defined?(@tmpdir)
|
208
209
|
begin
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
yield i, o, e
|
215
|
-
end
|
210
|
+
return Open3.capture2e(
|
211
|
+
"ruby", "-rubygems", "-I#{incl}",
|
212
|
+
binary,
|
213
|
+
*va
|
214
|
+
)
|
216
215
|
ensure
|
216
|
+
Dir.chdir(old)
|
217
217
|
end
|
218
|
-
Dir.chdir(old)
|
219
218
|
end
|
220
219
|
|
221
220
|
def run *va
|
222
|
-
|
223
|
-
|
224
|
-
e = e.read
|
225
|
-
e.should == ""
|
226
|
-
end
|
221
|
+
stdout_str, ret = run_bin *va
|
222
|
+
ret.should == 0
|
227
223
|
end
|
228
224
|
|
229
225
|
def run_fail *va
|
230
|
-
run_bin *va
|
231
|
-
|
232
|
-
end
|
226
|
+
stdout_str, ret = run_bin *va
|
227
|
+
ret.should_not == 0
|
233
228
|
end
|
234
229
|
end
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nwn-lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.6.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Bernhard Stoeckner
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-11-16 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: Neverwinter Nights 1/2 file formats ruby library
|
15
14
|
email:
|
@@ -55,7 +54,6 @@ files:
|
|
55
54
|
- lib/nwn/settings.rb
|
56
55
|
- lib/nwn/tlk.rb
|
57
56
|
- lib/nwn/twoda.rb
|
58
|
-
- lib/nwn/version.rb
|
59
57
|
- lib/nwn/xml_support.rb
|
60
58
|
- lib/nwn/yaml_support.rb
|
61
59
|
- nwn-lib.gemspec
|
@@ -88,27 +86,26 @@ files:
|
|
88
86
|
- tools/verify.sh
|
89
87
|
homepage: https://github.com/niv/nwn-lib
|
90
88
|
licenses: []
|
89
|
+
metadata: {}
|
91
90
|
post_install_message:
|
92
91
|
rdoc_options: []
|
93
92
|
require_paths:
|
94
93
|
- lib
|
95
94
|
required_ruby_version: !ruby/object:Gem::Requirement
|
96
|
-
none: false
|
97
95
|
requirements:
|
98
|
-
- -
|
96
|
+
- - '>='
|
99
97
|
- !ruby/object:Gem::Version
|
100
|
-
version: 1.9.
|
98
|
+
version: 1.9.3
|
101
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
-
none: false
|
103
100
|
requirements:
|
104
|
-
- -
|
101
|
+
- - '>='
|
105
102
|
- !ruby/object:Gem::Version
|
106
103
|
version: '0'
|
107
104
|
requirements: []
|
108
105
|
rubyforge_project:
|
109
|
-
rubygems_version:
|
106
|
+
rubygems_version: 2.0.2
|
110
107
|
signing_key:
|
111
|
-
specification_version:
|
108
|
+
specification_version: 4
|
112
109
|
summary: Neverwinter Nights 1/2 file formats ruby library
|
113
110
|
test_files:
|
114
111
|
- spec/bin_dsl_spec.rb
|
data/lib/nwn/version.rb
DELETED