aboutsummaryrefslogtreecommitdiff
path: root/challenge-049/arne-sommer/raku/lru-cache
blob: 2eea93f67f40f3e34501ec166c2e8d1dfd4f7620 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#! /usr/bin/env raku

use lib 'lib';
use Cache::LRU;

unit sub MAIN (Int $limit = 3, :$verbose);

say ": Cache size: $limit" if $verbose;

my $lru = Cache::LRU.new(:$limit, :$verbose);

loop
{
  given prompt "Command (h for help): "
  {
     when /^c[apacity]?$/ { say $lru.get-limit; }
     when /^c[apacity]? \s+ [\= \s+]? (\d+) $/ { $lru.set-limit($0.Int); }
     when /^s[et]?\((\d+) \, \s* (\d+) \) $/ { $lru.set($0.Int, $1.Int); }
     when /^s[et]? \s+ (\d+) \, \s* (\d+) $/ { $lru.set($0.Int, $1.Int); }
     when /^g[et]?\((\d+) \)$/ { say $lru.get($0.Int); }
     when /^g[et]? \s+ (\d+)$/ { say $lru.get($0.Int); }
     when 'd'|'dump' { $lru.dump if $lru.head; }
     when 'data' { $lru.dump2 if $lru.head; }
     when 'h'|'help' { help; }
     when 'quit'|'q' { exit; }
     default { say "- Illegal command. Use 'h' for help"; }
  }
}

sub help
{
  ;
}