nwn-lib 0.3.4 → 0.3.5
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/BINARIES +27 -17
- data/CHANGELOG +9 -0
- data/CHEATSHEET +1 -1
- data/Rakefile +1 -1
- data/bin/nwn-gff-import +1 -2
- data/bin/nwn-gff-print +11 -2
- data/lib/nwn/gff.rb +20 -5
- metadata +2 -2
data/BINARIES
CHANGED
@@ -1,28 +1,38 @@
|
|
1
1
|
== nwn-gff-print
|
2
2
|
|
3
|
-
Usage: nwn-gff-print [options] file/- [
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
3
|
+
Usage: nwn-gff-print [options] file/- [file, file, ..]
|
4
|
+
-y, --yaml Dump as yaml
|
5
|
+
-k, --kivinen Dump as kivinens dump format (like the perl tools)
|
6
|
+
--kivinen-full-path Print the full path (implies -k)
|
7
|
+
-b, --print-basename Prefix the file basename to the output
|
8
|
+
-f, --print-filename Prefix the full filename to the output
|
9
|
+
-t, --print-types Print types as well
|
10
|
+
-m, --marshal Native ruby marshalling. Warning: raw bytes
|
11
|
+
--postfix P Write output to file postfixed with P instead of stdout
|
12
|
+
--float_rounding F Round floating point numbers to the specified number of righthand digits
|
13
|
+
--type filetype Override the file type (implies --struct 0xffffffff)
|
14
|
+
--struct id Override struct id (as hex, please)
|
15
|
+
-p, --path path Only print the given path
|
16
|
+
-v, --verbose Be verbose
|
17
|
+
|
18
|
+
This prints out the given file(s) (or stdin, if -) as the specified format (-y, -k, -m)
|
13
19
|
[-k] is the same as gffprint.pl
|
14
|
-
[-
|
15
|
-
[-m] is the native ruby marshal format (
|
20
|
+
[-kt] is the same as gffprint.pl -t
|
21
|
+
[-m] is the native ruby marshal format (see Marshal.dump(obj))
|
16
22
|
[-y] is standard YAML
|
23
|
+
[--postfix] will write out each processed file to the same directory as the infile, with the given postfix appended
|
24
|
+
[--float_rounding] can be used to truncate FPs to the given precision.
|
25
|
+
[-p] will print out a given path within the GFF data (for example <tt>/ItemList[2]</tt>)
|
17
26
|
|
18
27
|
== nwn-gff-import
|
19
28
|
|
20
|
-
Usage: nwn-gff-import [options] file/-
|
21
|
-
|
22
|
-
|
29
|
+
Usage: nwn-gff-import [options] file/- [file, file, file]
|
30
|
+
-y, --yaml Import as yaml
|
31
|
+
-m, --marshal Import as native ruby marshal data
|
32
|
+
-o, --outfile F Write to outfile instead of stdout
|
33
|
+
--postfix P Strip the given postfix from file and write to that instead of stdout (overrides -o)
|
23
34
|
|
24
|
-
This is the equivalent to gffencode.pl
|
25
|
-
provides. This can be used to transform marshalled gff data back into gff binary data.
|
35
|
+
This is the equivalent to gffencode.pl. This can be used to transform marshalled gff data back into gff binary data.
|
26
36
|
|
27
37
|
Example (save to run on a shell, prints out hex data):
|
28
38
|
|
data/CHANGELOG
CHANGED
@@ -84,3 +84,12 @@ Bernhard Stoeckner <elven@swordcoast.net> (7):
|
|
84
84
|
struct to yaml: inline small structs
|
85
85
|
CHEATSHEET: add some hints for nwn-gff-import
|
86
86
|
0.3.4-rel
|
87
|
+
|
88
|
+
=== 0.3.5
|
89
|
+
Bernhard Stoeckner <elven@swordcoast.net> (6):
|
90
|
+
NWN::Gff::Gff.get_or_set: remove stray debug puts
|
91
|
+
add option for fp precision to Gff::Reader, add cli opt to nwn-gff-print
|
92
|
+
nwn-gff-print: minor speedup when dumping to yaml without prefixes
|
93
|
+
doc: update BINARIES, CHEATSHEET
|
94
|
+
nwn-gff-import: fix reading stdin as -
|
95
|
+
0.3.5-rel
|
data/CHEATSHEET
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
==== Extract item from creature inventory
|
2
2
|
|
3
|
-
nwn-gff-print --type UTI -
|
3
|
+
nwn-gff-print --type UTI -kt -p 'ItemList[12]' creature.bic | gffencode.pl -o item.uti
|
4
4
|
|
5
5
|
==== Convert all item files in the current directory to yaml
|
6
6
|
|
data/Rakefile
CHANGED
@@ -9,7 +9,7 @@ include FileUtils
|
|
9
9
|
# Configuration
|
10
10
|
##############################################################################
|
11
11
|
NAME = "nwn-lib"
|
12
|
-
VERS = "0.3.
|
12
|
+
VERS = "0.3.5"
|
13
13
|
CLEAN.include ["**/.*.sw?", "pkg", ".config", "rdoc", "coverage"]
|
14
14
|
RDOC_OPTS = ["--quiet", "--line-numbers", "--inline-source", '--title', \
|
15
15
|
'nwn-lib: a ruby library for accessing NWN resource files', \
|
data/bin/nwn-gff-import
CHANGED
data/bin/nwn-gff-print
CHANGED
@@ -15,6 +15,7 @@ path = nil
|
|
15
15
|
prefix = :none
|
16
16
|
postfix = nil
|
17
17
|
verbose = false
|
18
|
+
options = {}
|
18
19
|
|
19
20
|
OptionParser.new do |o|
|
20
21
|
o.banner = "Usage: nwn-gff-print [options] file/- [file, file, ..]"
|
@@ -50,6 +51,10 @@ OptionParser.new do |o|
|
|
50
51
|
postfix = p
|
51
52
|
end
|
52
53
|
|
54
|
+
o.on "--float_rounding F", "Round floating point numbers to the specified number of righthand digits" do |fr|
|
55
|
+
options[:float_rounding] = fr.to_i
|
56
|
+
end
|
57
|
+
|
53
58
|
o.on "--type filetype", "Override the file type (implies --struct 0xffffffff)" do |t|
|
54
59
|
if t.size != 3
|
55
60
|
$stderr.puts "Invalid type #{t} passwd."
|
@@ -84,7 +89,7 @@ ARGV.each {|file|
|
|
84
89
|
bytes = IO.read(file)
|
85
90
|
end
|
86
91
|
|
87
|
-
g = NWN::Gff::Reader.read(bytes)
|
92
|
+
g = NWN::Gff::Reader.read(bytes, options)
|
88
93
|
|
89
94
|
if path
|
90
95
|
begin
|
@@ -108,7 +113,11 @@ ARGV.each {|file|
|
|
108
113
|
$stderr.puts "Processing `#{file}`" if verbose
|
109
114
|
case format
|
110
115
|
when :yaml
|
111
|
-
|
116
|
+
if prefix == :none
|
117
|
+
write_to.puts g.to_yaml
|
118
|
+
else
|
119
|
+
write_to.puts g.to_yaml.split("\n").map {|ln| my_prefix + ln }.join("\n")
|
120
|
+
end
|
112
121
|
when :kivinen
|
113
122
|
NWN::Gff.kivinen_format g, my_prefix + "/", types_too, full, file_type, struct_id do |label, value|
|
114
123
|
write_to.puts "%s:\t%s" % [label, value]
|
data/lib/nwn/gff.rb
CHANGED
@@ -194,7 +194,6 @@ class NWN::Gff::Gff
|
|
194
194
|
path << v
|
195
195
|
|
196
196
|
if current_value.is_a?(Gff::Element) && current_value.type == :list # && v =~ /\[(\d+)\]$/
|
197
|
-
puts "value = #{$1}"
|
198
197
|
current_value = current_value.value[$1.to_i]
|
199
198
|
end
|
200
199
|
|
@@ -506,16 +505,31 @@ class NWN::Gff::Reader
|
|
506
505
|
attr_reader :hash
|
507
506
|
attr_reader :gff
|
508
507
|
|
508
|
+
# This is a hash containing the following options:
|
509
|
+
# [+float_rounding+]
|
510
|
+
# Round floating numbers to this many righthand positions.
|
511
|
+
# Defaults to nil (for no rounding). This can be set to prevent
|
512
|
+
# minor toolset fiddlings from showing up in diffs.
|
513
|
+
# Note that this is somewhat experimental and may introduce
|
514
|
+
# accumulating rounding errors over periods of time.
|
515
|
+
# Suggested values:
|
516
|
+
# *.git: 4
|
517
|
+
attr_accessor :options
|
518
|
+
|
509
519
|
# Create a new Reader with the given +bytes+ and immediately parse it.
|
510
520
|
# This is not needed usually; use Reader.read instead.
|
511
|
-
def initialize bytes
|
521
|
+
def initialize bytes, options = {}
|
512
522
|
@bytes = bytes
|
523
|
+
@options = {
|
524
|
+
:float_rounding => nil,
|
525
|
+
}.merge(options)
|
526
|
+
|
513
527
|
read_all
|
514
528
|
end
|
515
529
|
|
516
530
|
# Reads +bytes+ as gff data and returns a NWN::Gff:Gff object.
|
517
|
-
def self.read bytes
|
518
|
-
self.new(bytes).gff
|
531
|
+
def self.read bytes, options = {}
|
532
|
+
self.new(bytes, options).gff
|
519
533
|
end
|
520
534
|
|
521
535
|
private
|
@@ -622,7 +636,8 @@ class NWN::Gff::Reader
|
|
622
636
|
[data_or_offset].pack("I").unpack("i")[0]
|
623
637
|
|
624
638
|
when :float
|
625
|
-
[data_or_offset].pack("V").unpack("f")[0]
|
639
|
+
vsx = [data_or_offset].pack("V").unpack("f")[0]
|
640
|
+
@options[:float_rounding] ? ("%.#{@options[:float_rounding]}f" % vsx).to_f : vsx
|
626
641
|
|
627
642
|
when :dword64
|
628
643
|
len = 8
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: nwn-lib
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.3.
|
7
|
-
date: 2008-08-
|
6
|
+
version: 0.3.5
|
7
|
+
date: 2008-08-11 00:00:00 +02:00
|
8
8
|
summary: a ruby library for accessing Neverwinter Nights resource files
|
9
9
|
require_paths:
|
10
10
|
- lib
|