nwn-lib 0.3.3 → 0.3.4

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/CHANGELOG CHANGED
@@ -75,3 +75,12 @@ Bernhard Stoeckner <elven@swordcoast.net> (8):
75
75
  nwn-gff-import: add support for multiple files
76
76
  0.3.3-rel
77
77
 
78
+ === 0.3.4
79
+ Bernhard Stoeckner <elven@swordcoast.net> (7):
80
+ nwn-gff-print: -y outputs sorted hash maps
81
+ nwn-gff-print: fix --verbose switch
82
+ type :cexolocstr: do not lose empty lang ids
83
+ README: add encoding warning
84
+ struct to yaml: inline small structs
85
+ CHEATSHEET: add some hints for nwn-gff-import
86
+ 0.3.4-rel
data/CHEATSHEET CHANGED
@@ -2,6 +2,31 @@
2
2
 
3
3
  nwn-gff-print --type UTI -k -t creature.bic 'ItemList[12]' | gffencode.pl -o item.uti
4
4
 
5
+ ==== Convert all item files in the current directory to yaml
6
+
7
+ nwn-gff-print -v -y --postfix .yml *.uti
8
+
9
+ ==== Convert all yaml item files back to their gff counterpart
10
+
11
+ nwn-gff-import -y --postfix .yml *.uti.yml
12
+
13
+ ==== Makefile rules for building resources from yml files
14
+
15
+ postfix := uti
16
+
17
+ objects := $(basename $(wildcard *.$(postfix).yml))
18
+
19
+ all: $(objects)
20
+
21
+ $(objects) : %.$(postfix) : %.$(postfix).yml
22
+ nwn-gff-import -y -o $@ $<
23
+
24
+ clean:
25
+ -@rm $(objects)
26
+
27
+ This ruleset will automatically rebuild changed ymls to their respective .uti counterparts.
28
+ This only serves as an example on how to do it; it does not constitute a complete build environment.
29
+
5
30
  ==== Quick-edit a item
6
31
 
7
32
  your/prompt$ nwn-gff-irb my_item.uti
data/README CHANGED
@@ -8,6 +8,11 @@ There are various things included in this distribution:
8
8
  * some binaries under bin/ (see BINARIES)
9
9
  * the actual library under lib/nwn
10
10
 
11
+ == Attention Unicode/UTF-users
12
+
13
+ ruby 1.8 does not support character sets natively, and as such nwn-gff-irb will <b>FAIL</b> to encode non-standard characters properly on non-latin1 shells.
14
+ This will be worked around in a future release until the release of ruby 1.9, which will provide native charset support.
15
+
11
16
  == Quickstart
12
17
 
13
18
  It is easiest to just use the gem, which is available through rubyforge (<tt>sudo gem install nwn-lib</tt>).
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ include FileUtils
9
9
  # Configuration
10
10
  ##############################################################################
11
11
  NAME = "nwn-lib"
12
- VERS = "0.3.3"
12
+ VERS = "0.3.4"
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', \
@@ -4,6 +4,7 @@ require 'optparse'
4
4
  require 'nwn/gff'
5
5
  require 'nwn/helpers'
6
6
  require 'yaml'
7
+ require 'nwn/yaml'
7
8
 
8
9
  format = nil
9
10
  types_too = false
@@ -65,7 +66,7 @@ OptionParser.new do |o|
65
66
  path = p
66
67
  end
67
68
 
68
- o.on "-v" "--verbose", "Be verbose" do
69
+ o.on "-v", "--verbose", "Be verbose" do
69
70
  verbose = true
70
71
  end
71
72
  end.parse!
@@ -404,6 +404,22 @@ class NWN::Gff::Struct
404
404
  [ '@struct_id', '@hash' ]
405
405
  end
406
406
 
407
+ def to_yaml( opts = {} )
408
+ YAML::quick_emit( nil, opts ) do |out|
409
+ out.map( taguri, to_yaml_style ) do |map|
410
+ # Inline certain structs that are small enough.
411
+ map.style = :inline if hash.size <= 1 &&
412
+ hash.values.select {|x|
413
+ NWN::Gff::Element::NonInline.index(x.type)
414
+ }.size == 0
415
+
416
+ to_yaml_properties.sort.each do |m|
417
+ map.add( m[1..-1], instance_variable_get( m ) ) # unless instance_variable_get( m ).nil?
418
+ end
419
+ end
420
+ end
421
+ end
422
+
407
423
  def initialize
408
424
  @struct_id = 0
409
425
  @hash = {}
@@ -469,14 +485,18 @@ class NWN::Gff::CExoLocString
469
485
  end
470
486
 
471
487
  def size
472
- @languages.reject {|k,v| v == ""}.size
488
+ @languages.size
473
489
  end
474
490
 
475
491
  def each
476
- @languages.reject {|k,v| v == ""}.each {|k,v|
492
+ @languages.each {|k,v|
477
493
  yield k, v
478
494
  }
479
495
  end
496
+
497
+ def compact
498
+ @languages.compact.reject {|k,v| "" == v}
499
+ end
480
500
  end
481
501
 
482
502
  # A class that parses binary GFF bytes into ruby-friendly data structures.
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.3
7
- date: 2008-08-07 00:00:00 +02:00
6
+ version: 0.3.4
7
+ date: 2008-08-08 00:00:00 +02:00
8
8
  summary: a ruby library for accessing Neverwinter Nights resource files
9
9
  require_paths:
10
10
  - lib