# --------------------------------------------------------------------------- #
# Pair Container
# --------------------------------------------------------------------------- #
# Pair is an immutable object, you must pass in the $!key and $!value 
# arguments to the constructor, otherwise they will be nil.

^Pair := ^Class.new({});
^Pair.set_name('Pair');
^Pair.set_version('0.0.1');
^Pair.set_authority('url:pugscode.org');

^Pair.set_superclasses([ ^Object ]);

^Pair.add_attribute('$!key',   nil);
^Pair.add_attribute('$!value', nil);

^Pair.add_method('BUILD', -> %params {
    -> {
        self`set_attr('$!key', %params`fetch("k"))
    }`do_if(%params`exists("k"));
    -> {
        self`set_attr('$!value', %params`fetch("v"))
    }`do_if(%params`exists("v"));
});

^Pair.add_method('key',   -> { self`get_attr('$!key')   });
^Pair.add_method('value', -> { self`get_attr('$!value') });

^Pair.add_method('kv', -> { 
    ^Array`create('p6array', [ self.key(), self.value() ]) 
});
