mirror of
https://github.com/lihop/godot-xterm.git
synced 2024-11-25 10:40:25 +01:00
43 lines
1.1 KiB
GDScript
43 lines
1.1 KiB
GDScript
# ------------------------------------------------------------------------------
|
|
# This datastructure represents a simple one-to-many relationship. It manages
|
|
# a dictionary of value/array pairs. It ignores duplicates of both the "one"
|
|
# and the "many".
|
|
# ------------------------------------------------------------------------------
|
|
var _items = {}
|
|
|
|
|
|
# return the size of _items or the size of an element in _items if "one" was
|
|
# specified.
|
|
func size(one = null):
|
|
var to_return = 0
|
|
if one == null:
|
|
to_return = _items.size()
|
|
elif _items.has(one):
|
|
to_return = _items[one].size()
|
|
return to_return
|
|
|
|
|
|
# Add an element to "one" if it does not already exist
|
|
func add(one, many_item):
|
|
if _items.has(one) and !_items[one].has(many_item):
|
|
_items[one].append(many_item)
|
|
else:
|
|
_items[one] = [many_item]
|
|
|
|
|
|
func clear():
|
|
_items.clear()
|
|
|
|
|
|
func has(one, many_item):
|
|
var to_return = false
|
|
if _items.has(one):
|
|
to_return = _items[one].has(many_item)
|
|
return to_return
|
|
|
|
|
|
func to_s():
|
|
var to_return = ""
|
|
for key in _items:
|
|
to_return += str(key, ": ", _items[key], "\n")
|
|
return to_return
|