nwn-lib 0.5.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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