Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Cleanup of .gist/.perl for KeySet|Set
  • Loading branch information
lizmat committed Sep 4, 2013
1 parent 8bfb3c7 commit 78ccd95
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 15 deletions.
7 changes: 2 additions & 5 deletions src/core/KeySet.pm
@@ -1,6 +1,6 @@
my class KeySet is Set {

method delete($k) {
method delete($k --> Bool) {
my $elems := nqp::getattr(self, Set, '%!elems');
my $key := $k.WHICH;
return False unless nqp::existskey($elems, nqp::unbox_s($key));
Expand All @@ -9,7 +9,7 @@ my class KeySet is Set {
True;
}

method at_key($k) {
method at_key($k --> Bool) {
Proxy.new(
FETCH => {
so nqp::existskey(nqp::getattr(self, Set, '%!elems'), nqp::unbox_s($k.WHICH));
Expand All @@ -24,7 +24,4 @@ my class KeySet is Set {
so $value;
});
}

multi method gist(Any:D $ : --> Str) { self.^name ~ ".new({ nqp::getattr(self, Set, '%!elems').values».gist.join(', ') })" }
multi method perl(Any:D $ : --> Str) { self.^name ~ '.new(' ~ join(', ', map { .perl }, nqp::getattr(self, Set, '%!elems').values) ~ ')' }
}
32 changes: 22 additions & 10 deletions src/core/Set.pm
Expand Up @@ -169,14 +169,14 @@ only sub infix:<<"\x2285">>($a, $b --> Bool) {
my class Set is Iterable does Associative {
has %!elems;

method default { False }
method default(--> Bool) { False }
method keys { %!elems.values }
method values { %!elems.elems x True }
method elems returns Int { %!elems.elems }
method exists($k) returns Bool {
method values { True xx %!elems.elems }
method elems(--> Int) { %!elems.elems }
method exists($k --> Bool) {
so nqp::existskey(%!elems, nqp::unbox_s($k.WHICH));
}
method delete($k) is hidden_from_backtrace {
method delete($k --> Bool) is hidden_from_backtrace {
X::Immutable.new( method => 'delete', typename => self.^name ).throw;
}
method Bool { %!elems.Bool }
Expand All @@ -187,11 +187,11 @@ my class Set is Iterable does Associative {
method Bag { bag self.values }
method KeyBag { KeyBag.new(self.values) }

method at_key($k) returns Bool {
method at_key($k --> Bool) {
so nqp::existskey(%!elems, nqp::unbox_s($k.WHICH));
}

method hash {
method hash(--> Hash) {
my %e;
%e{$_} = True for %!elems.values;
%e;
Expand All @@ -211,9 +211,21 @@ my class Set is Iterable does Associative {
!! $other.^does(self);
}

multi method Str(Any:D $ : --> Str) { ~%!elems.values() }
multi method gist(Any:D $ : --> Str) { "set({ %!elems.values».gist.join(', ') })" }
multi method perl(Any:D $ : --> Str) { 'set(' ~ join(', ', map { .perl }, %!elems.values) ~ ')' }
multi method Str(Set:D --> Str) { ~%!elems.values() }
multi method gist(Set:D $ : --> Str) {
my $name := self.^name;
( $name eq 'Set' ?? 'set' !! "$name.new" )
~ '('
~ %!elems.values.map( {.gist} ).join(', ')
~ ')';
}
multi method perl(Set:D $ : --> Str) {
my $name := self.^name;
( $name eq 'Set' ?? 'set' !! "$name.new" )
~ '('
~ %!elems.values.map( {.perl} ).join(',')
~ ')';
}

method iterator() { %!elems.values.iterator }
method list() { %!elems.values }
Expand Down

0 comments on commit 78ccd95

Please sign in to comment.