mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
This is meant to be hosted on the same machine as the servers are hosted on, otherwise the list of admins will not be able to be generated. Be sure to look at config.txt to under the Redirector directory. It's pre-configured but can be modified for other servers' usage. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3961 316c924e-a436-60f5-8080-3fe189b3f50e
150 lines
4.9 KiB
Plaintext
150 lines
4.9 KiB
Plaintext
/*
|
|
Written by contributor Doohl for the /tg/station Open Source project, hosted on Google Code.
|
|
(2012)
|
|
|
|
NOTE: The below functions are part of BYOND user Deadron's "TextHandling" library.
|
|
[ http://www.byond.com/developer/Deadron/TextHandling ]
|
|
*/
|
|
|
|
|
|
proc
|
|
///////////////////
|
|
// Reading files //
|
|
///////////////////
|
|
dd_file2list(file_path, separator = "\n")
|
|
var/file
|
|
if (isfile(file_path))
|
|
file = file_path
|
|
else
|
|
file = file(file_path)
|
|
return dd_text2list(file2text(file), separator)
|
|
|
|
|
|
////////////////////
|
|
// Replacing text //
|
|
////////////////////
|
|
dd_replacetext(text, search_string, replacement_string)
|
|
// A nice way to do this is to split the text into an array based on the search_string,
|
|
// then put it back together into text using replacement_string as the new separator.
|
|
var/list/textList = dd_text2list(text, search_string)
|
|
return dd_list2text(textList, replacement_string)
|
|
|
|
|
|
dd_replaceText(text, search_string, replacement_string)
|
|
var/list/textList = dd_text2List(text, search_string)
|
|
return dd_list2text(textList, replacement_string)
|
|
|
|
|
|
/////////////////////
|
|
// Prefix checking //
|
|
/////////////////////
|
|
dd_hasprefix(text, prefix)
|
|
var/start = 1
|
|
var/end = lentext(prefix) + 1
|
|
return findtext(text, prefix, start, end)
|
|
|
|
dd_hasPrefix(text, prefix)
|
|
var/start = 1
|
|
var/end = lentext(prefix) + 1
|
|
return findtextEx(text, prefix, start, end)
|
|
|
|
|
|
/////////////////////
|
|
// Suffix checking //
|
|
/////////////////////
|
|
dd_hassuffix(text, suffix)
|
|
var/start = length(text) - length(suffix)
|
|
if (start) return findtext(text, suffix, start)
|
|
|
|
dd_hasSuffix(text, suffix)
|
|
var/start = length(text) - length(suffix)
|
|
if (start) return findtextEx(text, suffix, start)
|
|
|
|
/////////////////////////////
|
|
// Turning text into lists //
|
|
/////////////////////////////
|
|
dd_text2list(text, separator)
|
|
var/textlength = lentext(text)
|
|
var/separatorlength = lentext(separator)
|
|
var/list/textList = new /list()
|
|
var/searchPosition = 1
|
|
var/findPosition = 1
|
|
var/buggyText
|
|
while (1) // Loop forever.
|
|
findPosition = findtext(text, separator, searchPosition, 0)
|
|
buggyText = copytext(text, searchPosition, findPosition) // Everything from searchPosition to findPosition goes into a list element.
|
|
textList += "[buggyText]" // Working around weird problem where "text" != "text" after this copytext().
|
|
|
|
searchPosition = findPosition + separatorlength // Skip over separator.
|
|
if (findPosition == 0) // Didn't find anything at end of string so stop here.
|
|
return textList
|
|
else
|
|
if (searchPosition > textlength) // Found separator at very end of string.
|
|
textList += "" // So add empty element.
|
|
return textList
|
|
|
|
dd_text2List(text, separator)
|
|
var/textlength = lentext(text)
|
|
var/separatorlength = lentext(separator)
|
|
var/list/textList = new /list()
|
|
var/searchPosition = 1
|
|
var/findPosition = 1
|
|
var/buggyText
|
|
while (1) // Loop forever.
|
|
findPosition = findtextEx(text, separator, searchPosition, 0)
|
|
buggyText = copytext(text, searchPosition, findPosition) // Everything from searchPosition to findPosition goes into a list element.
|
|
textList += "[buggyText]" // Working around weird problem where "text" != "text" after this copytext().
|
|
|
|
searchPosition = findPosition + separatorlength // Skip over separator.
|
|
if (findPosition == 0) // Didn't find anything at end of string so stop here.
|
|
return textList
|
|
else
|
|
if (searchPosition > textlength) // Found separator at very end of string.
|
|
textList += "" // So add empty element.
|
|
return textList
|
|
|
|
dd_list2text(list/the_list, separator)
|
|
var/total = the_list.len
|
|
if (total == 0) // Nothing to work with.
|
|
return
|
|
|
|
var/newText = "[the_list[1]]" // Treats any object/number as text also.
|
|
var/count
|
|
for (count = 2, count <= total, count++)
|
|
if (separator) newText += separator
|
|
newText += "[the_list[count]]"
|
|
return newText
|
|
|
|
dd_centertext(message, length)
|
|
var/new_message = message
|
|
var/size = length(message)
|
|
if (size == length)
|
|
return new_message
|
|
if (size > length)
|
|
return copytext(new_message, 1, length + 1)
|
|
|
|
// Need to pad text to center it.
|
|
var/delta = length - size
|
|
if (delta == 1)
|
|
// Add one space after it.
|
|
return new_message + " "
|
|
|
|
// Is this an odd number? If so, add extra space to front.
|
|
if (delta % 2)
|
|
new_message = " " + new_message
|
|
delta--
|
|
|
|
// Divide delta in 2, add those spaces to both ends.
|
|
delta = delta / 2
|
|
var/spaces = ""
|
|
for (var/count = 1, count <= delta, count++)
|
|
spaces += " "
|
|
return spaces + new_message + spaces
|
|
|
|
dd_limittext(message, length)
|
|
// Truncates text to limit if necessary.
|
|
var/size = length(message)
|
|
if (size <= length)
|
|
return message
|
|
else
|
|
return copytext(message, 1, length + 1) |