CCCPaste

Split component

/**
* # Split component
*
* Splits a string
*/
/obj/item/circuit_component/split
display_name = "Split"
display_desc = "Splits a string by the separator and turns it into a list"

/// The input port
var/datum/port/input/input_port

/// The seperator
var/datum/port/input/separator

/// The result from the output
var/datum/port/output/output

circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL|CIRCUIT_FLAG_OUTPUT_SIGNAL

var/max_range = 5

/obj/item/circuit_component/split/Initialize()
. = ..()
input_port = add_input_port("Input", PORT_TYPE_STRING)
separator = add_input_port("Seperator", PORT_TYPE_STRING)
output = add_output_port("Output", PORT_TYPE_LIST)

/obj/item/circuit_component/split/Destroy()
input_port = null
separator = null
output = null
return ..()

/obj/item/circuit_component/split/input_received(datum/port/input/port)
. = ..()
if(.)
return

var/separator = separator.input_value
if(isnull(separator))
return

var/value = input_port.input_value
if(isnull(value))
return

var/list/result = splittext(value,separator)

output.set_output(result)


/**
Using vendored Node v12.20.0
=> Starting 'dm'
:: Skipping 'yarn' (up to date)
:: Skipping 'tgui' (up to date)
:: Skipping 'tgfont' (up to date)
DM compiler version 514.1557
loading tgstation.mdme
loading interface\skin.dmf
code\modules\wiremod\components\list\split.dm:40:error: separator.input_value: compile failed (possible infinite cross-reference loop)
code\modules\wiremod\components\list\split.dm:41:error: separator: compile failed (possible infinite cross-reference loop)
code\modules\wiremod\components\list\split.dm:49:error: separator: compile failed (possible infinite cross-reference loop)
code\modules\wiremod\components\list\split.dm:51:error: result: compile failed (possible infinite cross-reference loop)
tgstation.mdme.dmb - 4 errors, 0 warnings (7/1/21 10:40 pm)
Total time: 0:59
=> Target 'dm' failed in 59.763s, exit code: 4294967295
=> Target 'default' failed
Press any key to continue . . .
*/