Thank you, cmickeyb, for a patch to ass two string functions
to OSSL. Fixes Mantis #31730.6.3-post-fixes
parent
7d77e0e703
commit
37a00427bc
|
@ -43,6 +43,7 @@ using OpenSim.Region.ScriptEngine.Shared.ScriptBase;
|
||||||
using OpenSim.Region.ScriptEngine.Interfaces;
|
using OpenSim.Region.ScriptEngine.Interfaces;
|
||||||
using OpenSim.Region.ScriptEngine.Shared.Api.Interfaces;
|
using OpenSim.Region.ScriptEngine.Shared.Api.Interfaces;
|
||||||
using TPFlags = OpenSim.Framework.Constants.TeleportFlags;
|
using TPFlags = OpenSim.Framework.Constants.TeleportFlags;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
using LSL_Float = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLFloat;
|
using LSL_Float = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLFloat;
|
||||||
using LSL_Integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger;
|
using LSL_Integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger;
|
||||||
|
@ -1105,5 +1106,53 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
loginURI = config.Configs["GridInfo"].GetString("login", loginURI);
|
loginURI = config.Configs["GridInfo"].GetString("login", loginURI);
|
||||||
return loginURI;
|
return loginURI;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LSL_String osFormatString(string str, LSL_List strings)
|
||||||
|
{
|
||||||
|
CheckThreatLevel(ThreatLevel.Low, "osFormatString");
|
||||||
|
m_host.AddScriptLPS(1);
|
||||||
|
|
||||||
|
return String.Format(str, strings.Data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public LSL_List osMatchString(string src, string pattern, int start)
|
||||||
|
{
|
||||||
|
CheckThreatLevel(ThreatLevel.High, "osMatchString");
|
||||||
|
m_host.AddScriptLPS(1);
|
||||||
|
|
||||||
|
LSL_List result = new LSL_List();
|
||||||
|
|
||||||
|
// Normalize indices (if negative).
|
||||||
|
// After normlaization they may still be
|
||||||
|
// negative, but that is now relative to
|
||||||
|
// the start, rather than the end, of the
|
||||||
|
// sequence.
|
||||||
|
if (start < 0)
|
||||||
|
{
|
||||||
|
start = src.Length + start;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (start < 0 || start >= src.Length)
|
||||||
|
{
|
||||||
|
return result; // empty list
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find matches beginning at start position
|
||||||
|
Regex matcher = new Regex(pattern);
|
||||||
|
Match match = matcher.Match(src, start);
|
||||||
|
if (match.Success)
|
||||||
|
{
|
||||||
|
foreach (System.Text.RegularExpressions.Group g in match.Groups)
|
||||||
|
{
|
||||||
|
if (g.Success)
|
||||||
|
{
|
||||||
|
result.Add(g.Value);
|
||||||
|
result.Add(g.Index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,8 @@ using OpenSim.Region.ScriptEngine.Interfaces;
|
||||||
using key = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString;
|
using key = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString;
|
||||||
using rotation = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Quaternion;
|
using rotation = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Quaternion;
|
||||||
using vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3;
|
using vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3;
|
||||||
|
using LSL_List = OpenSim.Region.ScriptEngine.Shared.LSL_Types.list;
|
||||||
|
using LSL_String = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString;
|
||||||
|
|
||||||
namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||||
{
|
{
|
||||||
|
@ -104,5 +106,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||||
string osGetGridNick();
|
string osGetGridNick();
|
||||||
string osGetGridName();
|
string osGetGridName();
|
||||||
string osGetGridLoginURI();
|
string osGetGridLoginURI();
|
||||||
|
|
||||||
|
LSL_String osFormatString(string str, LSL_List strings);
|
||||||
|
LSL_List osMatchString(string src, string pattern, int start);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,8 @@ using integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger;
|
||||||
using vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3;
|
using vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3;
|
||||||
using rotation = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Quaternion;
|
using rotation = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Quaternion;
|
||||||
using key = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString;
|
using key = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString;
|
||||||
|
using LSL_List = OpenSim.Region.ScriptEngine.Shared.LSL_Types.list;
|
||||||
|
using LSL_String = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString;
|
||||||
|
|
||||||
namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
{
|
{
|
||||||
|
@ -262,6 +264,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
return m_OSSL_Functions.osGetGridLoginURI();
|
return m_OSSL_Functions.osGetGridLoginURI();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LSL_String osFormatString(string str, LSL_List strings)
|
||||||
|
{
|
||||||
|
return m_OSSL_Functions.osFormatString(str, strings);
|
||||||
|
}
|
||||||
|
|
||||||
|
public LSL_List osMatchString(string src, string pattern, int start)
|
||||||
|
{
|
||||||
|
return m_OSSL_Functions.osMatchString(src, pattern, start);
|
||||||
|
}
|
||||||
|
|
||||||
public OSSLPrim Prim;
|
public OSSLPrim Prim;
|
||||||
|
|
||||||
[Serializable]
|
[Serializable]
|
||||||
|
|
Loading…
Reference in New Issue