summaryrefslogtreecommitdiff
path: root/fml/lib/FML/Process
diff options
context:
space:
mode:
authorfukachan <fukachan>2006-02-01 12:35:44 +0000
committerfukachan <fukachan>2006-02-01 12:35:44 +0000
commitf40747099e2565f5a2c6bf8fe7f88fd562c3ac65 (patch)
tree36b19bad647fdecc5cd08d05c2a8364237192602 /fml/lib/FML/Process
parent7667cc07daa48ad5773c3af2848dad990a5c9ab4 (diff)
downloadfml8-f40747099e2565f5a2c6bf8fe7f88fd562c3ac65.tar.gz
fml8-f40747099e2565f5a2c6bf8fe7f88fd562c3ac65.tar.bz2
fml8-f40747099e2565f5a2c6bf8fe7f88fd562c3ac65.zip
fmlproj, yet another demo
Diffstat (limited to 'fml/lib/FML/Process')
-rw-r--r--fml/lib/FML/Process/Project.pm195
1 files changed, 195 insertions, 0 deletions
diff --git a/fml/lib/FML/Process/Project.pm b/fml/lib/FML/Process/Project.pm
new file mode 100644
index 00000000..cafe7bff
--- /dev/null
+++ b/fml/lib/FML/Process/Project.pm
@@ -0,0 +1,195 @@
+#-*- perl -*-
+#
+# Copyright (C) 2006 Ken'ichi Fukamachi
+# All rights reserved.
+#
+# $FML$
+#
+
+package FML::Process::Project;
+
+use vars qw($debug @ISA @EXPORT @EXPORT_OK);
+use strict;
+use Carp;
+
+use FML::Process::Kernel;
+@ISA = qw(FML::Process::Kernel);
+
+=head1 NAME
+
+FML::Process::Project -- demonstration of FML module usage.
+
+=head1 SYNOPSIS
+
+ use FML::Process::Project;
+ $curproc = new FML::Process::Project;
+ $curproc->run();
+
+=head1 DESCRIPTION
+
+FML::Process::Project is a demonstration module to show fml module
+usage. This module provides Project presentation as a simple
+scheduler based on FML::Demo::Project class.
+
+=head1 METHODS
+
+=head2 new($args)
+
+constructor.
+
+=head2 prepare($args)
+
+load default configuration file to use $path_* variables.
+
+=head2 verify_request($args)
+
+dummy.
+
+=head2 run($args)
+
+main routine.
+
+parse the specified file and print it out by CSV or HTML TABLE format.
+You can specify the format by --csv or --html command line option.
+CSV by default.
+
+=head2 finish($args)
+
+dummy.
+
+=cut
+
+
+# Descriptions: constructor.
+# avoid the default fml new() since we do not need it.
+# Arguments: OBJ($self) HASH_REF($args)
+# Side Effects: none
+# Return Value: OBJ
+sub new
+{
+ my ($self, $args) = @_;
+ my ($type) = ref($self) || $self;
+ my $me = {};
+ $me->{ main_cf } = $args->{ main_cf };
+ $me->{ __parent_args } = $args;
+
+ return bless $me, $type;
+}
+
+
+# Descriptions: load default configurations to use $path_* info.
+# Arguments: OBJ($curproc) HASH_REF($args)
+# Side Effects: none
+# Return Value: none
+sub prepare
+{
+ my ($curproc, $args) = @_;
+
+ # load default configurations.
+ use FML::Config;
+ $curproc->{ config } = new FML::Config;
+ $curproc->config_cf_files_load();
+}
+
+
+# Descriptions: dummy.
+# Arguments: OBJ($self) HASH_REF($args)
+# Side Effects: none
+# Return Value: none
+sub verify_request { 1; }
+
+
+# Descriptions: dummy.
+# Arguments: OBJ($self) HASH_REF($args)
+# Side Effects: none
+# Return Value: none
+sub finish { 1; }
+
+
+# Descriptions: prepare parameters and call FML::Demo::Project module.
+# we use w3m to show Project (HTML table).
+# Arguments: OBJ($curproc) HASH_REF($args)
+# Side Effects: create temporary file and remove it in the last
+# Return Value: none
+sub run
+{
+ my ($curproc, $args) = @_;
+ my $config = $curproc->config();
+ my $argv = $curproc->command_line_raw_argv();
+ my $option = $curproc->command_line_options();
+ my $mode = 'text';
+
+ # -h or --help
+ if (defined $option->{ h } || defined $option->{ help }) {
+ return $curproc->help();
+ }
+
+ use FML::Demo::Chart;
+ use FML::Demo::Project;
+ my $file = $argv->[0];
+ my $proj = new FML::Demo::Project;
+ $proj->parse($file);
+ $proj->build();
+
+ if (defined $option->{ html }) {
+ $proj->print_as_html_table();
+ }
+ elsif (defined $option->{ csv }) {
+ $proj->print_as_csv();
+ }
+ else {
+ $proj->print_as_csv();
+ }
+}
+
+
+# Descriptions: show help.
+# Arguments: OBJ($curproc)
+# Side Effects: none
+# Return Value: none
+sub help
+{
+ my ($curproc) = @_;
+
+ my $name = $0;
+ eval q{ use File::Basename;
+ $name = basename($0);
+ if ($name =~ /(\w+)$/) { $name = $1;}
+ };
+
+print <<"_EOF_";
+
+Usage: $name [--debug] [--html] [--csv]
+
+--debug debug mode on
+
+_EOF_
+}
+
+
+=head1 CODING STYLE
+
+See C<http://www.fml.org/software/FNF/> on fml coding style guide.
+
+=head1 AUTHOR
+
+Ken'ichi Fukamachi
+
+=head1 COPYRIGHT
+
+Copyright (C) 2006 Ken'ichi Fukamachi
+
+All rights reserved. This program is free software; you can
+redistribute it and/or modify it under the same terms as Perl itself.
+
+=head1 HISTORY
+
+FML::Process::Project first appeared in fml8 mailing list driver package.
+See C<http://www.fml.org/> for more details.
+
+C<FML::Process::Scheduler> is renamed to C<FML::Process::Project>.
+
+=cut
+
+
+1;