Rename common to ACU
This commit is contained in:
parent
641b516355
commit
e243e7bbcf
|
@ -164,11 +164,9 @@ sub compute ($$$)
|
|||
|
||||
#TODO: Be more secure!
|
||||
#$cpt = new Safe;
|
||||
#$cpt->permit(qw(require));
|
||||
#$cpt->permit_only(qw(:base_core :base_mem :base_loop));
|
||||
#$safe->share_from('List::Util', [ 'reduce' ]);
|
||||
|
||||
#${$cpt->varglob("$$pvar[0]")} = "$$pvar[1]";
|
||||
|
||||
my $res = 0;
|
||||
{
|
||||
no warnings "uninitialized";
|
||||
|
@ -176,6 +174,8 @@ sub compute ($$$)
|
|||
$res = $current[0] if @current == 1;
|
||||
}
|
||||
|
||||
$res = $res * $self->{factor};
|
||||
|
||||
$ids->{ $self->{id} } = $res;
|
||||
|
||||
return $res;
|
||||
|
@ -210,7 +210,7 @@ sub getValue ($$)
|
|||
my $self = shift;
|
||||
my $ids = shift;
|
||||
|
||||
if (not $self->{value}) {
|
||||
if ($self->{value} eq "") {
|
||||
return $ids->{ $self->{ref} } // 0;
|
||||
}
|
||||
else {
|
||||
|
@ -237,6 +237,8 @@ sub compute ($$$)
|
|||
}
|
||||
}
|
||||
|
||||
say "$self->{ref}\t$ret" if (defined $main::debug and defined $ret);
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
|
@ -14,7 +14,12 @@ use XML::SAX::ParserFactory;
|
|||
sub new ($$)
|
||||
{
|
||||
my $class = shift;
|
||||
my $self = {};
|
||||
my $self = {
|
||||
ids => {},
|
||||
infos => {},
|
||||
comments => {},
|
||||
who => {},
|
||||
};
|
||||
|
||||
bless $self, $class;
|
||||
$self->_initialize(@_);
|
||||
|
@ -26,15 +31,10 @@ sub _initialize ($$)
|
|||
{
|
||||
my $self = shift;
|
||||
|
||||
my $sax_handler = TraceHandler->new;
|
||||
my $sax_handler = TraceHandler->new($self);
|
||||
my $parser = XML::SAX::ParserFactory->parser( Handler => $sax_handler );
|
||||
|
||||
$parser->parse_file(shift);
|
||||
|
||||
$self->{version} = $sax_handler->getVersion();
|
||||
$self->{type} = $sax_handler->getType();
|
||||
$self->{ids} = $sax_handler->getIds();
|
||||
$self->{infos} = $sax_handler->getInfos();
|
||||
}
|
||||
|
||||
sub getVersion ($)
|
||||
|
@ -61,6 +61,37 @@ sub getInfos ($)
|
|||
return $self->{infos};
|
||||
}
|
||||
|
||||
sub getComment ($$)
|
||||
{
|
||||
my $self = shift;
|
||||
return $self->{comments}{$_[0]};
|
||||
}
|
||||
|
||||
sub getComments ($)
|
||||
{
|
||||
my $self = shift;
|
||||
return $self->{comments};
|
||||
}
|
||||
|
||||
sub getWho ($$)
|
||||
{
|
||||
my $self = shift;
|
||||
return $self->{who}{$_[0]};
|
||||
}
|
||||
|
||||
sub getFirstWho ($)
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
return $self->{who}{def1_end_group};
|
||||
}
|
||||
|
||||
sub getWhos ($)
|
||||
{
|
||||
my $self = shift;
|
||||
return $self->{who};
|
||||
}
|
||||
|
||||
sub getValue ($$)
|
||||
{
|
||||
my $self = shift;
|
||||
|
@ -78,15 +109,16 @@ package TraceHandler;
|
|||
|
||||
use constant NO_ID_VALUE => "__#";
|
||||
|
||||
sub new
|
||||
sub new ($$)
|
||||
{
|
||||
my $class = shift;
|
||||
my $self = {
|
||||
ids => {},
|
||||
infos => {},
|
||||
parsed => shift,
|
||||
inComment => "",
|
||||
inEval => "",
|
||||
inInfo => "",
|
||||
inValue => "",
|
||||
inWho => "",
|
||||
values => ""
|
||||
};
|
||||
|
||||
|
@ -100,21 +132,29 @@ sub start_element
|
|||
my ($self, $element) = @_;
|
||||
|
||||
if ($element->{Name} eq "trace") {
|
||||
$self->{version} = $element->{Attributes}{"{}version"}{Value};
|
||||
$self->{type} = $element->{Attributes}{"{}type"}{Value};
|
||||
$self->{parsed}{version} = $element->{Attributes}{"{}version"}{Value};
|
||||
$self->{parsed}{type} = $element->{Attributes}{"{}type"}{Value};
|
||||
}
|
||||
elsif ($element->{Name} eq "info") {
|
||||
$self->{inInfo} = $element->{Attributes}{"{}name"}{Value};
|
||||
$self->{infos}{ $self->{inInfo} } = 0;
|
||||
$self->{parsed}{infos}{ $self->{inInfo} } = 0;
|
||||
$self->{values} = "";
|
||||
}
|
||||
elsif ($element->{Name} eq "eval") {
|
||||
my $tmp = $element->{Attributes}{"{}id"}{Value};
|
||||
if ($tmp) {
|
||||
$self->{inEval} = $tmp;
|
||||
$self->{ids}{ $self->{inEval} } = 0;
|
||||
$self->{parsed}{ids}{ $self->{inEval} } = 0;
|
||||
}
|
||||
}
|
||||
elsif ($element->{Name} eq "comment" && $self->{inEval}) {
|
||||
$self->{inComment} = $self->{inEval};
|
||||
$self->{values} = "";
|
||||
}
|
||||
elsif ($element->{Name} eq "who" && $self->{inEval}) {
|
||||
$self->{inWho} = $self->{inEval};
|
||||
$self->{values} = "";
|
||||
}
|
||||
elsif ($element->{Name} eq "value") {
|
||||
if ($element->{Attributes}{"{}id"}{Value}) {
|
||||
$self->{inValue} = $element->{Attributes}{"{}id"}{Value};
|
||||
|
@ -130,7 +170,7 @@ sub characters
|
|||
{
|
||||
my ($self, $characters) = @_;
|
||||
|
||||
if ($self->{inValue} || $self->{inInfo}) {
|
||||
if ($self->{inValue} || $self->{inInfo} || $self->{inComment} || $self->{inWho}) {
|
||||
$self->{values} .= $characters->{Data};
|
||||
}
|
||||
}
|
||||
|
@ -141,42 +181,31 @@ sub end_element
|
|||
|
||||
if ($element->{Name} eq "value") {
|
||||
if ($self->{values} =~ /(-?[0-9]+(.[0-9]+)?)/) {
|
||||
$self->{ids}{ $self->{inEval} } += $1;
|
||||
$self->{parsed}{ids}{ $self->{inEval} } += $1;
|
||||
if ($self->{inValue} ne NO_ID_VALUE) {
|
||||
$self->{ids}{ $self->{inValue} } = $1;
|
||||
$self->{parsed}{ids}{ $self->{inValue} } = $1;
|
||||
}
|
||||
}
|
||||
$self->{inValue} = "";
|
||||
}
|
||||
elsif ($element->{Name} eq "comment") {
|
||||
if ($self->{values} =~ /([^\s].*[^\s]|[^\s])/) {
|
||||
$self->{parsed}{comments}{ $self->{inComment} } = $1;
|
||||
}
|
||||
$self->{inComment} = "";
|
||||
}
|
||||
elsif ($element->{Name} eq "who") {
|
||||
if ($self->{values} =~ /([^\s].*[^\s]|[^\s])/) {
|
||||
$self->{parsed}{who}{ $self->{inWho} } = $1;
|
||||
}
|
||||
$self->{inComment} = "";
|
||||
}
|
||||
elsif ($element->{Name} eq "info") {
|
||||
if ($self->{values} =~ /([^\s].*[^\s]|[^\s])/) {
|
||||
$self->{infos}{ $self->{inInfo} } = $1;
|
||||
$self->{parsed}{infos}{ $self->{inInfo} } = $1;
|
||||
}
|
||||
$self->{inInfo} = "";
|
||||
}
|
||||
}
|
||||
|
||||
sub getVersion ($)
|
||||
{
|
||||
my $self = shift;
|
||||
return $self->{version};
|
||||
}
|
||||
|
||||
sub getInfos ($)
|
||||
{
|
||||
my $self = shift;
|
||||
return $self->{infos};
|
||||
}
|
||||
|
||||
sub getType ($)
|
||||
{
|
||||
my $self = shift;
|
||||
return $self->{type};
|
||||
}
|
||||
|
||||
sub getIds ($)
|
||||
{
|
||||
my $self = shift;
|
||||
return $self->{ids};
|
||||
}
|
||||
|
||||
1;
|
|
@ -13,10 +13,13 @@ use Grading;
|
|||
use Trace;
|
||||
|
||||
# Parse arguments
|
||||
my $input;
|
||||
our $debug;
|
||||
my $input; my $format;
|
||||
my $help; my $man;
|
||||
GetOptions ("help|h|?" => \$help,
|
||||
"man" => \$man,
|
||||
"format|F" => \$format,
|
||||
"debug|d" => \$debug,
|
||||
"" => \$input)
|
||||
or pod2usage(2);
|
||||
pod2usage(1) if $help;
|
||||
|
@ -51,5 +54,5 @@ do {
|
|||
|
||||
$grade->fill($trace->getIds);
|
||||
|
||||
say $trace->getInfo("assistant").",".$grade->compute();
|
||||
say $trace->getFirstWho().",".$grade->compute();
|
||||
} while ($#ARGV >= 0);
|
||||
|
|
Reference in New Issue