Author: esr
Date: Fri Sep 12 08:49:24 2008
New Revision: 29410

URL: http://svn.gna.org/viewcvs/wesnoth?rev=29410&view=rev
Log:
Teach wmllint to report invalid unit names in advances_to attributes.

Modified:
    trunk/data/tools/wmllint

Modified: trunk/data/tools/wmllint
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/data/tools/wmllint?rev=29410&r1=29409&r2=29410&view=diff
==============================================================================
--- trunk/data/tools/wmllint (original)
+++ trunk/data/tools/wmllint Fri Sep 12 08:49:24 2008
@@ -236,6 +236,7 @@
 derived_units = []
 usage = {}
 sides = []
+advances = []
 movetypes = []
 unit_movetypes = []
 races = []
@@ -346,6 +347,11 @@
                         assert(unit_id)
                         unit_race = value
                         unit_races.append((unit_id, filename, i+1, unit_race))
+                elif key == "advances_to":
+                    assert(unit_id)
+                    advancements = value
+                    if advancements.strip() != "null":
+                        advances.append((unit_id, filename, i+1, advancements))
             except TypeError:
                 pass
             if "{SPECIAL_NOTES}" in lines[i]:
@@ -620,6 +626,13 @@
         if base_unit not in unit_types:
             print '"%s", line %d: derivation of %s from %s does not resolve' \
                   % (filename, line, unit_type, base_unit)
+    # Check that all advancements are known units
+    for (unit_id, filename, lineno, advancements) in advances:
+        advancements = map(string.strip, advancements.split(","))
+        bad_advancements = filter(lambda x: x not in (unit_types+derivedlist), 
advancements)
+        if bad_advancements:
+            print '"%s", line %d: %s has unknown advancements %s' \
+                  % (filename, lineno, unit_id, bad_advancements)
 
 # Syntax transformations
 


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to