2007-11-20 04:13:40 +00:00
|
|
|
using System;
|
|
|
|
|
using System.Text.RegularExpressions;
|
2008-07-21 21:12:59 +00:00
|
|
|
using OpenMetaverse;
|
2007-11-20 04:13:40 +00:00
|
|
|
|
2008-07-21 21:12:59 +00:00
|
|
|
namespace OpenMetaverse.TestClient
|
2007-11-20 04:13:40 +00:00
|
|
|
{
|
|
|
|
|
public class PrimRegexCommand : Command
|
|
|
|
|
{
|
|
|
|
|
public PrimRegexCommand(TestClient testClient)
|
|
|
|
|
{
|
|
|
|
|
Name = "primregex";
|
|
|
|
|
Description = "Find prim by text predicat. " +
|
|
|
|
|
"Usage: primregex [text predicat] (eg findprim .away.)";
|
|
|
|
|
}
|
|
|
|
|
|
2008-07-25 05:15:05 +00:00
|
|
|
public override string Execute(string[] args, UUID fromAgentID)
|
2007-11-20 04:13:40 +00:00
|
|
|
{
|
|
|
|
|
if (args.Length < 1)
|
|
|
|
|
return "Usage: primregex [text predicat]";
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
// Build the predicat from the args list
|
|
|
|
|
string predicatPrim = string.Empty;
|
|
|
|
|
for (int i = 0; i < args.Length; i++)
|
|
|
|
|
predicatPrim += args[i] + " ";
|
|
|
|
|
predicatPrim = predicatPrim.TrimEnd();
|
|
|
|
|
|
|
|
|
|
// Build Regex
|
|
|
|
|
Regex regexPrimName = new Regex(predicatPrim.ToLower());
|
|
|
|
|
|
|
|
|
|
// Print result
|
2008-05-06 23:57:26 +00:00
|
|
|
Logger.Log(string.Format("Searching prim for [{0}] ({1} prims loaded in simulator)\n", predicatPrim,
|
|
|
|
|
Client.Network.CurrentSim.ObjectsPrimitives.Count), Helpers.LogLevel.Info, Client);
|
|
|
|
|
|
2008-01-03 21:55:49 +00:00
|
|
|
Client.Network.CurrentSim.ObjectsPrimitives.ForEach(
|
2007-11-20 04:13:40 +00:00
|
|
|
delegate(Primitive prim)
|
|
|
|
|
{
|
|
|
|
|
if (prim.Text != null && regexPrimName.IsMatch(prim.Text.ToLower()))
|
2007-11-20 04:33:12 +00:00
|
|
|
{
|
2008-05-06 23:57:26 +00:00
|
|
|
Logger.Log(string.Format("\nNAME={0}\nID = {1}\nFLAGS = {2}\nTEXT = '{3}'\nDESC='{4}", prim.PropertiesFamily.Name,
|
|
|
|
|
prim.ID, prim.Flags.ToString(), prim.Text, prim.PropertiesFamily.Description), Helpers.LogLevel.Info, Client);
|
2007-11-20 04:33:12 +00:00
|
|
|
}
|
|
|
|
|
else if (prim.PropertiesFamily.Name != null && regexPrimName.IsMatch(prim.PropertiesFamily.Name.ToLower()))
|
|
|
|
|
{
|
2008-05-06 23:57:26 +00:00
|
|
|
Logger.Log(string.Format("\nNAME={0}\nID = {1}\nFLAGS = {2}\nTEXT = '{3}'\nDESC='{4}", prim.PropertiesFamily.Name,
|
|
|
|
|
prim.ID, prim.Flags.ToString(), prim.Text, prim.PropertiesFamily.Description), Helpers.LogLevel.Info, Client);
|
2007-11-20 04:33:12 +00:00
|
|
|
}
|
|
|
|
|
else if (prim.PropertiesFamily.Description != null && regexPrimName.IsMatch(prim.PropertiesFamily.Description.ToLower()))
|
|
|
|
|
{
|
2008-05-06 23:57:26 +00:00
|
|
|
Logger.Log(string.Format("\nNAME={0}\nID = {1}\nFLAGS = {2}\nTEXT = '{3}'\nDESC='{4}", prim.PropertiesFamily.Name,
|
|
|
|
|
prim.ID, prim.Flags.ToString(), prim.Text, prim.PropertiesFamily.Description), Helpers.LogLevel.Info, Client);
|
2007-11-20 04:33:12 +00:00
|
|
|
}
|
2007-11-20 04:13:40 +00:00
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
catch (System.Exception e)
|
|
|
|
|
{
|
2008-05-06 23:57:26 +00:00
|
|
|
Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e);
|
2007-11-20 04:13:40 +00:00
|
|
|
return "Error searching";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return "Done searching";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|