NAME

Vote::Count::ReadBallots

VERSION 0.017

SYNOPSIS

Vote::Count::ReadBallots 'read_ballots';

my $data1 = read_ballots('t/data/data1.txt');

Description

Reads a file containing vote data. Retruns a HashRef of a Vote::Count BallotSet.

BallotSet Data Structure

ballots   {
       CHOCOLATE:MINTCHIP:VANILLA {
           count   1,
           votes   [
               [0] "CHOCOLATE",
               [1] "MINTCHIP",
               [2] "VANILLA"
           ]
       },
   },
   choices   {
       CHOCOLATE    1,
       MINTCHIP     1,
       VANILLA      1
   },
   comment   "# Optional Comment",
   options   { 
     rcv   1
   }

=head1 Data File Format

 # This is a comment, optional.
 :CHOICES:VANILLA:CHOCOLATE:STRAWBERRY:MINTCHIP:CARAMEL:RUMRAISIN
 5:VANILLA:CHOCOLATE:STRAWBERRY
 RUMRAISIN

CHOICES must be defined before any vote lines. or an error will be thrown. CHOICES must only be defined once. These rules are to protect against errors in manually prepared files.

A data line may begin with a number or a choice. When there is no number the line is counted as being a single ballot. The number represents the number of ballots identical to that one; this notation will both dramatically shrink the data files and improve performance.

read_ballots

Reads a data file in the standard Vote::Count format and returns a BallotSet.

write_ballots

write_ballots( $BallotSet, $newfile);

Write out a ballotset. Useful for creating a compressed version of a raw file.

Other Formats

It is planned to add support in the future for ranged voting. JSON, XML, and YAML formats may also be provided in the future.

BUG TRACKER

https://github.com/brainbuz/Vote-Count/issues

AUTHOR

John Karr (BRAINBUZ) brainbuz@cpan.org

CONTRIBUTORS

Copyright 2019 by John Karr (BRAINBUZ) brainbuz@cpan.org.

LICENSE

This module is released under the GNU Public License Version 3. See license file for details. For more information on this license visit http://fsf.org.