NAME

R::YapRI::Block.pm A module to segment the R commands.

SYNOPSIS

use R::YapRI::Base;

## WORKING WITH COMMAND BLOCKS:

my $rbase = R::YapRI::Base->new();

## Create a file-block_1

my $rblock1 = $rbase->create_block('BLOCK1');
$rblock1->add_command('x <- c(10, 9, 8, 5)');
$rblock1->add_command('z <- c(12, 8, 8, 4)');
$rblock1->add_command('x + z')

## Get name or rbase

my $blockname = $rblock1->get_blockname();
my $rbase = $rblock1->get_rbase();  

## Create a file-block_2

my $rblock2 = $rbase->create_block('BLOCK2');   
$rblock2->add_command('bmp(filename="myfile.bmp", width=600, height=800)');
$rblock2->add_command('dev.list()');
$rblock2->add_command('plot(c(1, 5, 10), type = "l")');

## Run each block

$rblock1->run_block();
$rblock2->run_block();

## Get the results

my $resultfile1 = $rblock1->get_resultfile();
my $resultfile2 = $rblock2->get_resultfile();

## Combine block before run it

my $newblock = $rbase->combine_blocks(['BLOCK1', 'BLOCK2'], 'NEWBLOCK');
$newblock->run_block();

DESCRIPTION

A wrapper to use blocks with R::YapRI::Base

AUTHOR

Aureliano Bombarely <ab782@cornell.edu>

CLASS METHODS

The following class methods are implemented:

(*) CONSTRUCTORS:

There are two ways to create a new block:

1) Through rbase object.
   my $rblock = $rbase->new_block($blockname);

2) Through R::YapRI::Block class
   my $rblock = R::YapRI::Block->new($rbase, $blockname);

Both methods will add the new block to the rbase object.

constructor new

Usage: my $rblock = R::YapRI::Block->new($rbase, $blockname);

Desc: Create a new R block object associated with a R::YapRI::Base object

Ret: a R::YapRI::Block object

Args: $rbase, a R::YapRI::Base object.
      $blockname, an scalar, a blockname
      $cmdfile, a filename with the command file (optional).
      
Side_Effects: Die if no arguments are used.
              Die if $rbase argument is not a R::YapRI::Base object.
              Create a new command file if no commandfile is supplied.
              Add the block created to rbase object.

Example: my $rblock = R::YapRI::Block->new($rbase, 'MyBlock');           

(*) ACCESSORS:

No set accessors have been created for rbase or blockname. 
They are controlled by R::YapRI::Base object.

get_rbase

Usage: my $rbase = $rblock->get_rbase(); 

Desc: Get rbase object from rblock

Ret: $rbase, a R::YapRI::Base object

Args: None

Side_Effects: None

Example: my $rbase = $rblock->get_rbase(); 

get_blockname

Usage: my $blockname = $rblock->get_blockname(); 

Desc: Get blockname from rblock object

Ret: $blockname, name of the block, an alias for cmdfile.

Args: None

Side_Effects: None

Example: my $blockname = $rblock->get_blockname(); 

get_command_file

Usage: my $filename = $rblock->get_command_file(); 

Desc: Get filename of the block from rbase object

Ret: $filename, the command filename for the block associated to rbase.

Args: None

Side_Effects: None

Example: my $filename = $rblock->get_command_file(); 

set_command_file

Usage: $rblock->set_command_file($filename); 

Desc: Set filename for a block

Ret: None

Args: $filename

Side_Effects: Die if no argument is used.

Example: $rblock->set_command_file($filename); 

delete_command_file

Usage: $rblock->delete_command_file(); 

Desc: Delete command filename for a block and set command file as empty

Ret: None

Args: None

Side_Effects: None

Example: $rblock->delete_command_file(); 

get_result_file

Usage: my $filename = $rblock->get_result_file(); 

Desc: Get result filename of the block

Ret: $filename, the result filename for the block associated to rbase.

Args: None

Side_Effects: None

Example: my $filename = $rblock->get_result_file(); 

set_result_file

Usage: $rblock->set_result_file($filename); 

Desc: Set result filename for a block

Ret: None

Args: $filename, the result filename for the block associated to rbase.

Side_Effects: Die if no argument is used or if the result file doesnt exist

Example: $rblock->set_result_file($filename); 

delete_result_file

Usage: $rblock->delete_result_file(); 

Desc: Delete result filename for a block and set command file as empty

Ret: None

Args: None

Side_Effects: None

Example: $rblock->delete_result_file(); 

(*) COMMAND METHODS:

add_command

Usage: $rblock->add_command($r_command); 

Desc: Add a R command line to a block

Ret: None

Args: $r_command, a string or a hash ref. with the R commands.
      If hashref. is used, it will translated to R using r_var from
      R::YapRI::Interpreter::Perl

Side_Effects: Die if no argument is used.
              Die if argument is not an scalar or an hash reference.
              Translate a perl hashref. to R command if hashref is used.

Example: $rblock->add_command('x <- c(10, 9, 8, 5)')
         $rblock->add_command({ '' => { x => [10, 9, 8, 5] } })

read_commands

Usage: my @commands = $rblock->read_commands(); 

Desc: Read all the R command lines from a block and return them in an 
      array.

Ret: @commands, an array with the commands used in the block

Args: None

Side_Effects: None

Example: None

run_block

Usage: $rblock->run_block(); 

Desc: Run R commands for a specific block.

Ret: None

Args: None

Side_Effects: None

Example: $rblock->run_block(); 

read_results

Usage: my @results = $rblock->read_results(); 

Desc: Read all the results lines from a block and return them as an 
      array.

Ret: @results, an array with the produced by the block

Args: None

Side_Effects: None

Example: my @results = $rblock->read_results();

(*) DESTRUCTORS:

Destructor will delete the files associated with this block (command and
result) if the rbase switch keepfiles is disabled.

DESTROY

 Usage: $block->DESTROY(); 

 Desc: Destructor for block object. It also delete the command file and
       the result files associated with that block if keepfiles from
       rbase is disabled

 Ret: None

 Args: None

 Side_Effects: None

 Example: $block->DESTROY();