File Coverage

blib/lib/Soar/WM.pm
Criterion Covered Total %
statement 34 34 100.0
branch 2 2 100.0
condition n/a
subroutine 10 10 100.0
pod 4 4 100.0
total 50 50 100.0


line stmt bran cond sub pod time code
1             #
2             # This file is part of Soar-WM
3             #
4             # This software is copyright (c) 2012 by Nathan Glenn.
5             #
6             # This is free software; you can redistribute it and/or modify it under
7             # the same terms as the Perl 5 programming language system itself.
8             #
9             # ABSTRACT: Traverse Soar working memory dumps
10             package Soar::WM;
11 3     3   119915 use strict;
  3         7  
  3         134  
12 3     3   17 use warnings;
  3         6  
  3         92  
13              
14 3     3   1572 use Soar::WM::Slurp qw(read_wm);
  3         8  
  3         197  
15 3     3   2021 use Soar::WM::Element;
  3         8  
  3         83  
16              
17 3     3   16 use Carp;
  3         5  
  3         149  
18 3     3   14 use base 'Exporter';
  3         5  
  3         1052  
19             our @EXPORT_OK = qw( wm_root_from_file wm_root );
20              
21             our $VERSION = '0.04'; # VERSION
22              
23             print 'root is ' . __PACKAGE__->wm_root_from_file( $ARGV[0] )->id unless caller;
24              
25             sub new {
26 1     1 1 157 my ($class, @slurp_args) = @_;
27 1         8 my ( $wme_hash, $root_name ) = read_wm(@slurp_args);
28 1         3 my $wm = bless $wme_hash, $class;
29 1         12 $wm->{'#root_name'} = $root_name;
30 1         6 return $wm;
31             }
32              
33             sub get_wme {
34 1     1 1 840 my ($self, $id) = @_;
35 1         14 return Soar::WM::Element->new($self, uc $id);
36             }
37              
38             #return a Soar::WM::Element object for the root
39             sub wm_root_from_file {
40 2     2 1 285 my ($file) = @_;
41 2 100       15 if ( !$file ) {
42 1         32 carp 'missing file name argument';
43 1         736 return;
44             }
45              
46 1         4 return wm_root( file => $file );
47              
48             }
49              
50             #args should be file=>xx or text=>xx.
51             sub wm_root {
52 3     3 1 1070 my @slurp_args = @_;
53 3         20 my ( $wme_hash, $root_name ) = read_wm(@slurp_args);
54              
55 3         13 my $wm = bless $wme_hash, __PACKAGE__;
56 3         26 return Soar::WM::Element->new( $wm, $root_name );
57             }
58              
59              
60              
61             1;
62              
63             __END__