diff -r 8b87ea768cb8 -r 60053dab7e2a dummy_foundation/lib/Parse/Yapp/Options.pm --- a/dummy_foundation/lib/Parse/Yapp/Options.pm Wed Jun 03 18:33:51 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,186 +0,0 @@ -# -# Module Parse::Yapp::Options -# -# (c) Copyright 1999-2001 Francois Desarmenien, all rights reserved. -# (see the pod text in Parse::Yapp module for use and distribution rights) -# -package Parse::Yapp::Options; - -use strict; -use Carp; - -############################################################################ -#Definitions of options -# -# %known_options allowed options -# -# %default_options default -# -# %actions sub refs to execute if option is set with ($self,$value) -# as parameters -############################################################################ -# -#A value of '' means any value can do -# -my(%known_options)= ( - language => { - perl => "Ouput parser for Perl language", -# for future use... -# 'c++' => "Output parser for C++ language", -# c => "Output parser for C language" - }, - linenumbers => { - 0 => "Don't embbed line numbers in parser", - 1 => "Embbed source line numbers in parser" - }, - inputfile => { - '' => "Input file name: will automagically fills input" - }, - classname => { - '' => "Class name of parser object (Perl and C++)" - }, - standalone => { - 0 => "Don't create a standalone parser (Perl and C++)", - 1 => "Create a standalone parser" - }, - input => { - '' => "Input text of grammar" - }, - template => { - '' => "Template text for generating grammar file" - }, -); - -my(%default_options)= ( - language => 'perl', - linenumbers => 1, - inputfile => undef, - classname => 'Parser', - standalone => 0, - input => undef, - template => undef, - shebang => undef, -); - -my(%actions)= ( - inputfile => \&__LoadFile -); - -############################################################################# -# -# Actions -# -# These are NOT a method, although they look like... -# -# They are super-private routines (that's why I prepend __ to their names) -# -############################################################################# -sub __LoadFile { - my($self,$filename)=@_; - - open(IN,"<$filename") - or croak "Cannot open input file '$filename' for reading"; - $self->{OPTIONS}{input}=join('',); - close(IN); -} - -############################################################################# -# -# Private methods -# -############################################################################# - -sub _SetOption { - my($self)=shift; - my($key,$value)=@_; - - $key=lc($key); - - @_ == 2 - or croak "Invalid number of arguments"; - - exists($known_options{$key}) - or croak "Unknown option: '$key'"; - - if(exists($known_options{$key}{lc($value)})) { - $value=lc($value); - } - elsif(not exists($known_options{$key}{''})) { - croak "Invalid value '$value' for option '$key'"; - } - - exists($actions{$key}) - and &{$actions{$key}}($self,$value); - - $self->{OPTIONS}{$key}=$value; -} - -sub _GetOption { - my($self)=shift; - my($key)=map { lc($_) } @_; - - @_ == 1 - or croak "Invalid number of arguments"; - - exists($known_options{$key}) - or croak "Unknown option: '$key'"; - - $self->{OPTIONS}{$key}; -} - -############################################################################# -# -# Public methods -# -############################################################################# - -# -# Constructor -# -sub new { - my($class)=shift; - my($self)={ OPTIONS => { %default_options } }; - - ref($class) - and $class=ref($class); - - bless($self,$class); - - $self->Options(@_); - - $self; -} - -# -# Specify one or more options to set -# -sub Options { - my($self)=shift; - my($key,$value); - - @_ % 2 == 0 - or croak "Invalid number of arguments"; - - while(($key,$value)=splice(@_,0,2)) { - $self->_SetOption($key,$value); - } -} - -# -# Set (2 parameters) or Get (1 parameter) values for one option -# -sub Option { - my($self)=shift; - my($key,$value)=@_; - - @_ == 1 - and return $self->_GetOption($key); - - @_ == 2 - and return $self->_SetOption($key,$value); - - croak "Invalid number of arguments"; - -} - -1;