perlconsole

 view release on metacpan or  search on metacpan

lib/PerlConsole/Commands.pm  view on Meta::CPAN

    chomp($code);
    return $code =~ /^\s*:(\S+)\s*/;
}

# Execute the internal command given
sub execute($$$)
{
    my ($class, $console, $code) = @_;

    # preference : output
    if ($code =~ /^\s*:set/) {
        if ($code =~ /^\s*:set\s+(\S+)\s*=\s*(\S+)/) {
            my ($pref, $val) = ($1, $2);
            if ($pref eq "output") {
                $console->setOutput($val);
            }
            else {
                $console->setPreference($pref, $val);
            }
        }
        else {
            $console->error("invalid syntax for setting a preference, see :help preferences");
        }
    }

    # The main help page
    elsif ($code =~ /^\s*:help\s*$/) {
        $console->message(PerlConsole::Commands->help($console));
    }
    
    # The help page of a specified topic
    elsif ($code =~ /^\s*:help\s+(\S+)/) {
        $console->message(PerlConsole::Commands->help($console, $1));
    }
    
    # display the logs stack
    elsif ($code =~ /^\s*:logs/) {
        foreach my $log (@{$console->getLogs}) {
            $console->message($log);
        }
    }
    
    # at this point, unrecognized command
    else {
        $console->error("no such command");
    }
    return 1;
}

# Returns an help message, on a topic 
sub help
{
    my ($class, $console, $topic) = @_;
    if (! defined $topic) {
        return "The following help topics are available:\n".
            join("\n- ", keys%{$help});
    }
    else {
        # preferences have automated online help
        if ($topic =~ /preferences/) {
            return $console->{'prefs'}->help();
        }
        elsif (grep /^$topic$/, $console->{'prefs'}->getPreferences()) {
            return $console->{'prefs'}->help($topic);
        }
        elsif (defined $help->{$topic}) {
            return $help->{$topic};
        }
        else {
            return "No such help topic: $topic";
        }
    }
}

# END
1;



( run in 2.048 seconds using v1.01-cache-2.11-cpan-8f98c5d2c55 )