Hello,
I was in need of a NAnt "while" task, and searching didn't turn up any
solutions. Here is my implementation. The IF task was helpful for figuring
out how to implement this.
using System;
using System.Globalization;
using System.Xml;
using NAnt.Core;
using NAnt.Core.Attributes;
using NAnt.Core.Util;
[TaskName("while")]
public class WhileTask : TaskContainer
{
private string _Test;
#region ctor
public WhileTask()
: base()
{
}
#endregion
[TaskAttribute("test")]
[BooleanValidator()]
public string Test
{
get
{
return _Test;
}
set
{
_Test = StringUtils.ConvertEmptyToNull(value);
}
}
protected virtual bool ConditionsTrue
{
get
{
if (null != Test)
{
Log(Level.Verbose, "Evaluating expression '{0}'", Test);
string expanded = Project.ExpandProperties(Test, Location);
Log(Level.Verbose, "Result: {0}", expanded);
return Convert.ToBoolean(expanded,
CultureInfo.InvariantCulture);
}
return false;
}
}
protected override void InitializeTask(XmlNode taskNode)
{
// Need to get the unexpanded expression from the task so it can be
evaluated each iteration.
XmlNode test = taskNode.SelectSingleNode("@test");
if (null == test)
{
throw new BuildException("'test' is a required attribute of the
while task.");
}
Test = test.Value;
}
protected override void ExecuteTask()
{
while (ConditionsTrue)
{
base.ExecuteTask();
}
}
}
Durand
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
NAnt-users mailing list
NAnt-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nant-users