ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/ActiveDoc/ActiveDoc.pm
(Generate patch)

Comparing COMP/SCRAM/src/ActiveDoc/ActiveDoc.pm (file contents):
Revision 1.15 by williamc, Thu Jan 20 18:18:45 2000 UTC vs.
Revision 1.20 by williamc, Fri Feb 11 14:55:22 2000 UTC

# Line 20 | Line 20
20   # includeparse(local_parsename, objparsename, activedoc) : copy the parse from
21   #                                                       one object to another
22   # currentparsename([name]) : get/set current parse name
23 # newdoc(file)  : Return an new object of the appropriate type
23   # getfile(url)  : get a processedfile object given a url
24   # activatedoc(url) : Return the object ref for a doc described by the given url
25   #                    -- any parse called "init" will also be run
# Line 29 | Line 28
28   # copydocconfig(ActiveDoc) : Copy the basic configuration from the ActiveDoc
29   # copydocquery(ActiveDoc) : Copy the basicquery from the ActiveDoc
30   # userinterface()       : Return the defaullt userinterface
31 < # option(var)           : return the value of the option var
31 > # option(var)           : return the value of the option var ( or undef )
32   # requestoption("message") : Ask the user to supply a value for an option
33   #                            if it dosnt already exist
34 + # askuser(Query)        : send a query object to the userinterface
35 + # verbose(string)       : Print string in verbosity mode
36   #
37   # -- error methods --
38   # error(string)       : Report an general error to the user
# Line 63 | Line 64 | sub new {
64             # --- is there a starter document?
65             my $basedoc=$self->config()->basedoc();
66             if ( defined $basedoc ) {
67 +             $self->verbose("Initialising from $basedoc");
68               $self->copydocquery($basedoc);
69             }
70             else {
71 <             $self->error("Error : No base doc found");
71 >             $self->error("ActiveDoc Error : No base doc found");
72             }
73          }
74          $self->_init2();
# Line 85 | Line 87 | sub _init2 {
87  
88   }
89  
90 + sub verbose {
91 +        my $self=shift;
92 +        my $string=shift;
93 +
94 +        if ( $self->option('verbose_all') ||
95 +                        $self->option('verbose_'.ref($self)) ) {
96 +          print ">".ref($self)." : ".$string."\n";
97 +        }
98 + }
99 +
100   # ----- parse related routines --------------
101   sub parse {
102          my $self=shift;
# Line 185 | Line 197 | sub copydocquery {
197          my $self=shift;
198          my $ActiveDoc=shift;
199  
200 <        $self->basequery($ActiveDoc->basequery());
200 >        if ( defined $ActiveDoc->basequery() ) {
201 >          $self->basequery($ActiveDoc->basequery());
202 >        }
203 >        else {
204 >          $self->error("Cannot copy basequery - undefined");
205 >        }
206   }
207  
208   sub config {
# Line 198 | Line 215 | sub basequery {
215          my $self=shift;
216          @_ ? $self->{Query}=shift
217             : $self->{Query};
218 +        return $self->{Query};
219   }
220  
221   sub option {
# Line 229 | Line 247 | sub requestoption {
247          return $par;
248   }
249  
250 + sub askuser {
251 +        my $self=shift;
252 +        return $self->userinterface()->askuser(@_);
253 + }
254 +
255   sub getfile() {
256          my $self=shift;
257          my $origurl=shift;
258  
259          my $fileref;
260 <        my ($url, $file)=$self->{urlhandler}->get($origurl);
260 >        my ($url, $file);
261 >        if ( defined $self->option('url_update') ) {
262 >           $self->verbose("Forced download of $origurl");
263 >           ($url, $file)=$self->{urlhandler}->download($origurl);
264 >        }
265 >        else {
266 >           ($url, $file)=$self->{urlhandler}->get($origurl);
267 >        }
268          # do we already have an appropriate object?
269          ($fileref)=$self->config()->find($url);
270          #undef $fileref;
271          if (  defined $fileref ) {
272 <         print "found $url in database ----\n";
272 >         $self->verbose("Found $url in database");
273           $fileref->update();
274          }
275          else {
# Line 264 | Line 294 | sub activatedoc {
294  
295          # now parse it for the <DocType> tag
296          my $tempdoc=ActiveDoc::ActiveDoc->new($self->config());
297 <        $tempdoc->url($url);
297 >        $tempdoc->{urlhandler}=$self->{urlhandler};
298 >        my $fullurl=$tempdoc->url($url);
299 >        $url=$fullurl;
300          $tempdoc->{doctypefound}=0;
301          $tempdoc->newparse("doctype");
302          $tempdoc->addtag("doctype","Doc", \&Doc_Start, $tempdoc,
# Line 303 | Line 335 | sub parseerror {
335          my $self=shift;
336          my $string=shift;
337  
338 <        ($line, $file)=$self->line();
339 <        print "Parse Error in ".$file->url().", line ".
338 >        if ( $self->currentparsename() eq "" ) {
339 >                $self->error($string);
340 >        }
341 >        else {
342 >         ($line, $file)=$self->line();
343 >         print "Parse Error in ".$file->url().", line ".
344                                          $line."\n";
345 <        print $string."\n";
346 <        die;
345 >         print $string."\n";
346 >         exit;
347 >        }
348   }
349  
350   sub checktag {
# Line 363 | Line 400 | sub Base_start {
400          # Keep track of base tags
401          push @{$self->{basestack}}, $$hashref{"type"};
402          # Set the base
366        print "BASE SET for ".$$hashref{"type"}."\n";
403          $self->{urlhandler}->setbase($$hashref{"type"},$hashref);
368        print "BASE SET for ".$$hashref{"type"}."\n";
369
404   }
405  
406   sub Base_end {
# Line 375 | Line 409 | sub Base_end {
409          my $type;
410  
411          if ( $#{$self->{basestack}} == -1 ) {
412 <                print "Parse Error : unmatched </".$name."> on line ".
379 <                        $self->line()."\n";
380 <                die;
412 >                $self->parseerror("Parse Error : unmatched </$name>");
413          }
414          else {
415            $type = pop @{$self->{basestack}};

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines