UserAgent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050517 Firefox/1.0.4 (Debian package 1.0.4-2) IP: 64.81.113.168 URI: http://wesnoth.slack.it/?SyntaxWML - - - - - Index: SyntaxWML =================================================================== RCS file: /home/wesnoth/cvsroot/wikiroot/SyntaxWML,v retrieving revision 1.18 diff -u -r1.18 SyntaxWML --- SyntaxWML 22 Jun 2005 09:43:39 -0000 1.18 +++ SyntaxWML 2 Jul 2005 19:14:27 -0000 @@ -1,4 +1,4 @@ -Wesnoth syntax has two basic elements: tags and attributes. +Wesnoth syntax has three basic elements: //tags//, //keys//, and //values//. * ||[//tag-name//] //data// [///tag-name//]|| is a tag. Tags are used to partition information. @@ -7,36 +7,40 @@ Different tags work differently. For information about how a certain tag works, see ReferenceWML * ||[+//tag-name//] //data// [///tag-name//]|| means that //data// -will be considered as part of the data for the most recent [//tagname//] -* ||//key//=//value//|| is an attribute. +will be considered as part of the data for the most recent [//tagname//] tag. +The //data// of [+//tag-name//] will be considered as coming after all data in [//tag-name//], +so attributes of [+//tagname//] will replace attributes of the original [//tagname//]. +* ||//key//=//value// //newline//|| is an //attribute//, or an assignment of a value to a key. When this line is processed, the value of //key// for the tag -that the attribute is in is set to //value//. -(All text from '=' until the end of the line is considered to be -part of //value//, although //value// may be enclosed -in quotes ( " ) to allow multiple-line values.) -Note that //key// is not a WML variable; -the value it is set to has a use which is determined by C++ code, -not WML code. In order to change the value of a WML variable, +that the attribute is in is set or changed to //value// +All text from '=' until the end of the line is considered to be part of //value//. +Note that //key// is not a WML variable (with the exception of VariablesWML); +the value it is set to has a use which is determined by C++ code, not WML code. +In order to change the value of a WML variable, you need to use ||[set_variable]|| (see InternalActionsWML). -||There should be no space between the key and the '=' symbol!|| -If there is whitespace, the attribute assignment is ignored. -Also note that the key cannot contain whitespace. -* ||//translatable-key//= _ "//text//"|| is another attribute. +* ||//key1//,//key(s)2//=//value1//,//value(s)2// //newline//|| is the same as +||//key1//=//value1// //newline// //key(s)2//=//value(s)2// //newline//||. +If there are extra keys, they will be set to an empty value. +If there are extra values the last key will be set to the CSV list of all remaining values + +Although a value can be just text corresponding to a function of its key +(these values are displayed in quotes(||'||) in ReferenceWML), +a value can also be encoded: +* ||"//multiple-line-value//"|| a multiple-line value must be enclosed in quotes, +to prevent it being interpreted as a single-line value. +Note that //multiple-line-value// doesn't have to have multiple lines; +it can simply be a single-line value enclosed in quotes for clarity. +* ||_ "//text//"|| is a //translatable// value. //text// is English text that will be displayed in-game at some point. Gettext (see GetText) is used to determine what to display if English is not the current language. -* ||//key//="//constant-text //" + _"//text//"|| is another attribute, where the value is obtained by concatenation of -translatable and untranslatable parts. Any number of strings can be concatenated this way. Newline characters can be -insterted after a ||+|| sign for clarity. Note that the ||+|| sign -from 0.9.0 concatenates even unquoted strings, so if you need a value -that contains a ||+|| you need to quote the value. -* ||//key//=$//variable-name//|| is an another attribute. -When this line is processed, -the value of //key// for the tag that the attribute is in is set to the value of the WML variable //variable-name// (see -VariablesWML, InternalActionsWML) -* ||//key1//,//key(s)2//=//value1//,//value(s)2//|| is the same as -||//key1//=//value1// //newline// //key(s)2//=//value(s)2//||. -if there are extra keys, they will be set to an empty value. -if there are extra values the last key will be set to the CSV list of all remaining values +* ||//value-1// + //value-2//|| can be used to concatenate two different translatable strings, +to reduce the work of translators. +Note that //value-1// or //value-2// can also be a concatenated value, +so if you want to have a value that actually has a plus sign in it, +you need to enclose the plus sign in quotes (see ||"//multiple-line-value//"|| above). +* ||$//variable-name//|| a //variable// value depends on the value of the WML variable //variable-name//. +See VariablesWML for more information on WML-variable based values. + Example: [scenario] @@ -71,9 +75,9 @@ id=Elves Besieged [/scenario] -However it is recommended that you indent WML files for readability. - -Also, any line beginning with a pound(||#||) sign is considered by WML as a comment, +However, you cannot add whitespace into tag names, key names, value names, or between WML processing symbols. +Data inside tags should be separated with tabbing; see ConventionsWML. +Any line beginning with a pound(||#||) sign is considered by WML as a comment, except for preprocessor functions beginning with #. ||See Also||
_______________________________________________ Wesnoth-wiki-changes mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/wesnoth-wiki-changes
