diff options
author | Mic Bowman | 2012-03-01 14:49:49 -0800 |
---|---|---|
committer | Mic Bowman | 2012-03-01 14:49:49 -0800 |
commit | 8a375f3c30302c4a7ace1afb05a8b49fbb415640 (patch) | |
tree | 3bcdfe6f35daebd876f1d1e40ab6aaec330402c3 | |
parent | Merge branch 'master' of /home/opensim/src/opensim (diff) | |
download | opensim-SC_OLD-8a375f3c30302c4a7ace1afb05a8b49fbb415640.zip opensim-SC_OLD-8a375f3c30302c4a7ace1afb05a8b49fbb415640.tar.gz opensim-SC_OLD-8a375f3c30302c4a7ace1afb05a8b49fbb415640.tar.bz2 opensim-SC_OLD-8a375f3c30302c4a7ace1afb05a8b49fbb415640.tar.xz |
Adds an OSSL command for regular expression-based string replacement. Parameters
are osReplaceString(string source, string patter, string replace, integer count, integer start)
The count parameter specifies the total number of replacements to make, -1 makes
all replacements.
3 files changed, 32 insertions, 0 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index ff1f5fd..8edd146 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -2160,6 +2160,31 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2160 | return result; | 2160 | return result; |
2161 | } | 2161 | } |
2162 | 2162 | ||
2163 | public LSL_String osReplaceString(string src, string pattern, string replace, int count, int start) | ||
2164 | { | ||
2165 | CheckThreatLevel(ThreatLevel.High, "osReplaceString"); | ||
2166 | m_host.AddScriptLPS(1); | ||
2167 | |||
2168 | // Normalize indices (if negative). | ||
2169 | // After normlaization they may still be | ||
2170 | // negative, but that is now relative to | ||
2171 | // the start, rather than the end, of the | ||
2172 | // sequence. | ||
2173 | if (start < 0) | ||
2174 | { | ||
2175 | start = src.Length + start; | ||
2176 | } | ||
2177 | |||
2178 | if (start < 0 || start >= src.Length) | ||
2179 | { | ||
2180 | return src; | ||
2181 | } | ||
2182 | |||
2183 | // Find matches beginning at start position | ||
2184 | Regex matcher = new Regex(pattern); | ||
2185 | return matcher.Replace(src,replace,count,start); | ||
2186 | } | ||
2187 | |||
2163 | public string osLoadedCreationDate() | 2188 | public string osLoadedCreationDate() |
2164 | { | 2189 | { |
2165 | CheckThreatLevel(ThreatLevel.Low, "osLoadedCreationDate"); | 2190 | CheckThreatLevel(ThreatLevel.Low, "osLoadedCreationDate"); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs index dbc1dfc..82a6caf 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | |||
@@ -165,6 +165,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces | |||
165 | 165 | ||
166 | LSL_String osFormatString(string str, LSL_List strings); | 166 | LSL_String osFormatString(string str, LSL_List strings); |
167 | LSL_List osMatchString(string src, string pattern, int start); | 167 | LSL_List osMatchString(string src, string pattern, int start); |
168 | LSL_String osReplaceString(string src, string pattern, string replace, int count, int start); | ||
168 | 169 | ||
169 | // Information about data loaded into the region | 170 | // Information about data loaded into the region |
170 | string osLoadedCreationDate(); | 171 | string osLoadedCreationDate(); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index cc8d417..4341246 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | |||
@@ -472,6 +472,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
472 | return m_OSSL_Functions.osMatchString(src, pattern, start); | 472 | return m_OSSL_Functions.osMatchString(src, pattern, start); |
473 | } | 473 | } |
474 | 474 | ||
475 | public LSL_String osReplaceString(string src, string pattern, string replace, int count, int start) | ||
476 | { | ||
477 | return m_OSSL_Functions.osReplaceString(src,pattern,replace,count,start); | ||
478 | } | ||
479 | |||
480 | |||
475 | // Information about data loaded into the region | 481 | // Information about data loaded into the region |
476 | public string osLoadedCreationDate() | 482 | public string osLoadedCreationDate() |
477 | { | 483 | { |