mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 19:22:56 +00:00
Revert "Bygex - Regex implementation for byond."
This reverts commit a9bea16ac8.
This commit is contained in:
@@ -16,7 +16,6 @@
|
|||||||
#include "code\setup.dm"
|
#include "code\setup.dm"
|
||||||
#include "code\stylesheet.dm"
|
#include "code\stylesheet.dm"
|
||||||
#include "code\world.dm"
|
#include "code\world.dm"
|
||||||
#include "code\__HELPERS\bygex.dm"
|
|
||||||
#include "code\__HELPERS\files.dm"
|
#include "code\__HELPERS\files.dm"
|
||||||
#include "code\__HELPERS\game.dm"
|
#include "code\__HELPERS\game.dm"
|
||||||
#include "code\__HELPERS\global_lists.dm"
|
#include "code\__HELPERS\global_lists.dm"
|
||||||
|
|||||||
@@ -1,107 +0,0 @@
|
|||||||
#ifndef LIBREGEX_LIBRARY
|
|
||||||
#define LIBREGEX_LIBRARY "bygex"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
proc
|
|
||||||
regEx_compare(str, exp)
|
|
||||||
return new /datum/regex(str, exp, call(LIBREGEX_LIBRARY, "regEx_compare")(str, exp))
|
|
||||||
|
|
||||||
regex_compare(str, exp)
|
|
||||||
return new /datum/regex(str, exp, call(LIBREGEX_LIBRARY, "regex_compare")(str, exp))
|
|
||||||
|
|
||||||
regEx_find(str, exp)
|
|
||||||
return new /datum/regex(str, exp, call(LIBREGEX_LIBRARY, "regEx_find")(str, exp))
|
|
||||||
|
|
||||||
regex_find(str, exp)
|
|
||||||
return new /datum/regex(str, exp, call(LIBREGEX_LIBRARY, "regex_find")(str, exp))
|
|
||||||
|
|
||||||
regEx_replaceall(str, exp, fmt)
|
|
||||||
return call(LIBREGEX_LIBRARY, "regEx_replaceall")(str, exp, fmt)
|
|
||||||
|
|
||||||
regex_replaceall(str, exp, fmt)
|
|
||||||
return call(LIBREGEX_LIBRARY, "regex_replaceall")(str, exp, fmt)
|
|
||||||
|
|
||||||
replacetextEx(str, exp, fmt)
|
|
||||||
return call(LIBREGEX_LIBRARY, "regEx_replaceallliteral")(str, exp, fmt)
|
|
||||||
|
|
||||||
replacetext(str, exp, fmt)
|
|
||||||
return call(LIBREGEX_LIBRARY, "regex_replaceallliteral")(str, exp, fmt)
|
|
||||||
|
|
||||||
regEx_replace(str, exp, fmt)
|
|
||||||
return call(LIBREGEX_LIBRARY, "regEx_replace")(str, exp, fmt)
|
|
||||||
|
|
||||||
regex_replace(str, exp, fmt)
|
|
||||||
return call(LIBREGEX_LIBRARY, "regex_replace")(str, exp, fmt)
|
|
||||||
|
|
||||||
regEx_findall(str, exp)
|
|
||||||
return new /datum/regex(str, exp, call(LIBREGEX_LIBRARY, "regEx_findall")(str, exp))
|
|
||||||
|
|
||||||
regex_findall(str, exp)
|
|
||||||
return new /datum/regex(str, exp, call(LIBREGEX_LIBRARY, "regex_findall")(str, exp))
|
|
||||||
|
|
||||||
|
|
||||||
//upon calling a regex match or search, a /datum/regex object is created with str(haystack) and exp(needle) variables set
|
|
||||||
//it also contains a list(matches) of /datum/match objects, each of which holds the position and length of the match
|
|
||||||
//matched strings are not returned from the dll, in order to save on memory allocation for large numbers of strings
|
|
||||||
//instead, you can use regex.str(matchnum) to fetch this string as needed.
|
|
||||||
//likewise you can also use regex.pos(matchnum) and regex.len(matchnum) as shorthands
|
|
||||||
/datum/regex
|
|
||||||
var/str
|
|
||||||
var/exp
|
|
||||||
var/error
|
|
||||||
var/anchors = 0
|
|
||||||
var/list/matches = list()
|
|
||||||
|
|
||||||
New(str, exp, results)
|
|
||||||
src.str = str
|
|
||||||
src.exp = exp
|
|
||||||
|
|
||||||
if(findtext(results, "Err", 1, 4)) //error message
|
|
||||||
src.error = results
|
|
||||||
else
|
|
||||||
var/list/L = params2list(results)
|
|
||||||
var/list/M
|
|
||||||
var{i;j}
|
|
||||||
for(i in L)
|
|
||||||
M = L[i]
|
|
||||||
for(j=2, j<=M.len, j+=2)
|
|
||||||
matches += new /datum/match(text2num(M[j-1]),text2num(M[j]))
|
|
||||||
anchors = (j-2)/2
|
|
||||||
return matches
|
|
||||||
|
|
||||||
proc
|
|
||||||
str(i)
|
|
||||||
if(!i) return str
|
|
||||||
var/datum/match/M = matches[i]
|
|
||||||
return copytext(str, M.pos, M.pos+M.len)
|
|
||||||
|
|
||||||
pos(i)
|
|
||||||
if(!i) return 1
|
|
||||||
var/datum/match/M = matches[i]
|
|
||||||
return M.pos
|
|
||||||
|
|
||||||
len(i)
|
|
||||||
if(!i) return length(str)
|
|
||||||
var/datum/match/M = matches[i]
|
|
||||||
return M.len
|
|
||||||
|
|
||||||
end(i)
|
|
||||||
if(!i) return length(str)
|
|
||||||
var/datum/match/M = matches[i]
|
|
||||||
return M.pos + M.len
|
|
||||||
|
|
||||||
report() //debug tool
|
|
||||||
. = ":: RESULTS ::\n:: str :: [html_encode(str)]\n:: exp :: [html_encode(exp)]\n:: anchors :: [anchors]"
|
|
||||||
if(error)
|
|
||||||
. += "\n<font color='red'>[error]</font>"
|
|
||||||
return
|
|
||||||
for(var/i=1, i<=matches.len, ++i)
|
|
||||||
. += "\nMatch[i]\n\t[html_encode(str(i))]\n\tpos=[pos(i)] len=[len(i)]"
|
|
||||||
|
|
||||||
/datum/match
|
|
||||||
var/pos
|
|
||||||
var/len
|
|
||||||
|
|
||||||
New(pos, len)
|
|
||||||
src.pos = pos
|
|
||||||
src.len = len
|
|
||||||
@@ -194,7 +194,35 @@ proc/checkhtml(var/t)
|
|||||||
/*
|
/*
|
||||||
* Text modification
|
* Text modification
|
||||||
*/
|
*/
|
||||||
//Adds 'u' number of zeros ahead of the text 't'
|
/proc/replacetext(text, find, replacement)
|
||||||
|
var/find_len = length(find)
|
||||||
|
if(find_len < 1) return text
|
||||||
|
. = ""
|
||||||
|
var/last_found = 1
|
||||||
|
while(1)
|
||||||
|
var/found = findtext(text, find, last_found, 0)
|
||||||
|
. += copytext(text, last_found, found)
|
||||||
|
if(found)
|
||||||
|
. += replacement
|
||||||
|
last_found = found + find_len
|
||||||
|
continue
|
||||||
|
return .
|
||||||
|
|
||||||
|
/proc/replacetextEx(text, find, replacement)
|
||||||
|
var/find_len = length(find)
|
||||||
|
if(find_len < 1) return text
|
||||||
|
. = ""
|
||||||
|
var/last_found = 1
|
||||||
|
while(1)
|
||||||
|
var/found = findtextEx(text, find, last_found, 0)
|
||||||
|
. += copytext(text, last_found, found)
|
||||||
|
if(found)
|
||||||
|
. += replacement
|
||||||
|
last_found = found + find_len
|
||||||
|
continue
|
||||||
|
return .
|
||||||
|
|
||||||
|
//Adds 'u' number of zeros ahead of the text 't'
|
||||||
/proc/add_zero(t, u)
|
/proc/add_zero(t, u)
|
||||||
while (length(t) < u)
|
while (length(t) < u)
|
||||||
t = "0[t]"
|
t = "0[t]"
|
||||||
|
|||||||
Reference in New Issue
Block a user