ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/ActiveDoc/PreProcessedFile.pm
Revision: 1.12.4.1
Committed: Tue Sep 12 13:58:36 2006 UTC (18 years, 8 months ago) by sashby
Content type: text/plain
Branch: v103_with_xml
CVS Tags: forV1_1_0, v103_xml_071106, V110p2, V110p1
Changes since 1.12: +266 -263 lines
Log Message:
Full XML support added. Code base otherwise the same as V1_0_3.

File Contents

# User Rev Content
1 williamc 1.1 #
2     # PreProcessedFile.pm
3     #
4     # Originally Written by Christopher Williams
5     #
6     # Description
7     # -----------
8     # Handle Preprocessed file information
9     #
10     # Interface
11     # ---------
12 williamc 1.9 # new(cache,dbstore) : A new PreProcessedFile object
13 williamc 1.1 # url([url]) : return the full url. With an argument will take the given
14     # url and expand it in the context of the current url base.
15     # file() : return the filename corresponding to url of the document
16     # ProcessedFile() : return the filename corresponding to processed url
17     # of the document
18 williamc 1.4 # realline(number): Return the line and fileobj corresponding to number in
19 williamc 1.9 # processed file
20     # update() : update the preprocessed file as required.
21     # store(filename) :
22 williamc 1.1 # restore(filename) :
23     package ActiveDoc::PreProcessedFile;
24     use ActiveDoc::ActiveDoc;
25 williamc 1.9 use Utilities::Verbose;
26     use ObjectUtilities::StorableObject;
27 williamc 1.1 require 5.004;
28 williamc 1.9
29 sashby 1.12.4.1 @ISA=qw(ObjectUtilities::StorableObject Utilities::Verbose);
30 williamc 1.9
31 sashby 1.12.4.1 # sub new()
32     # {
33     # my $class=shift;
34     # my $self={};
35     # bless $self, $class;
36     # $self->{dbstore}=shift;
37     # $self->cache($self->{dbstore}->cache());
38     # bless $self, $class;
39     # return $self;
40     # }
41    
42     # sub cache()
43     # {
44     # my $self=shift;
45     # if ( @_ )
46     # {
47     # $self->{cache}=shift;
48     # $self->init();
49     # }
50     # return $self->{cache};
51     # }
52    
53     # sub init()
54     # {
55     # my $self=shift;
56     # $self->{lastsequence}=-1;
57     # $self->{scramdoc}=ActiveDoc::ActiveDoc->new($self->{dbstore});
58    
59     # # -- Specific Tags
60     # # $self->{scramdoc}->newparse("include");
61     # # $self->{scramdoc}->addbasetags("include");
62     # # $self->{scramdoc}->addtag("include","include", \&Include_Start, $self,
63     # # "", $self, "", $self);
64     # }
65    
66     # sub realline {
67     # my $self=shift;
68     # my $origline=shift;
69    
70     # my $fileob=$self;
71     # my $line=$origline;
72     # for(my $i=0; $i<=$#{$self->{includesdesc}}; $i++ ) {
73     # $inc=$self->{includesdesc}[$i];
74     # $startline=$inc->startline();
75     # last if ( $line <= $startline );
76     # if ( $line >= ($inc->lines()+$startline+2) ) {
77     # # take out the 2 carriage returns added
78     # $line=$line-($inc->lines()+$startline-$inc->endline())-2;
79     # # n lines in original map to m lines in expanded
80     # }
81     # else { # must be in the include file
82     # ($line, $fileob)=$self->{includes}[$i]->realline($line-$startline);
83     # last;
84     # }
85     # }
86 williamc 1.1
87 sashby 1.12.4.1 # return ($line, $fileob);
88     # }
89 williamc 1.4
90 sashby 1.12.4.1 # sub line {
91     # my $self=shift;
92     # my $line=$self->{scramdoc}->currentparser()->line();
93     # return $line, $self;
94     # }
95    
96     # sub url {
97     # my $self=shift;
98    
99     # if ( @_ ) {
100     # my $url=shift;
101     # ($self->{url}, $file)=$self->{scramdoc}->urlget($url);
102     # $self->{scramdoc}->filetoparse($file);
103     # $self->{scramdoc}->filenameref($self->{url}." ($file)");
104     # }
105     # return $self->{url};
106     # }
107    
108     # sub ProcessedFile {
109     # my $self=shift;
110     # $self->{cache}->file("_preprocess_".$self->url());
111     # }
112 williamc 1.1
113 sashby 1.12.4.1 # sub file {
114     # my $self=shift;
115 williamc 1.1
116 sashby 1.12.4.1 # my ($url, $file)=$self->{scramdoc}->urlget($self->url());
117     # $self->verbose("Getting file ".$self->url()." = $file");
118     # return $file;
119     # }
120 williamc 1.1
121 sashby 1.12.4.1 # sub ProcessFile {
122     # my $self=shift;
123     # return $self->file();
124     # }
125    
126     # sub update {
127     # my $self=shift;
128    
129     # my $rv=0;
130     # my $outfile="_preprocess_".$self->url();
131     # my $fileobj;
132     # my $sn;
133     # @{$self->{updatedfiles}}=();
134    
135     # # -- check the input file snd output sequence numbers are in sync
136     # my $basefilenumber=$self->{cache}->updatenumber($self->url());
137     # if ( $basefilenumber != $self->{lastsequence} ) {
138     # $rv=1;
139     # }
140     # else {
141     # # -- update dependencies
142     # for (my $i=0; $i<=$#{$self->{includes}}; $i++ ) {
143     # $fileobj=$self->{includes}[$i];
144     # $rv=$rv+$fileobj->update(); # make sure it up to date
145    
146     # # -- has it changed since last time we built this object
147     # $sn=$self->{dbstore}->sequence($fileobj->url());
148     # if ( $self->{includesdesc}[$i]->lastsequence() != $sn ) {
149     # $rv++;
150     # push @{$self->{updatedfiles}},$fileobj->url(); # record for test
151     # }
152     # }
153     # }
154    
155     # if ( $rv != 0 ) {
156     # $self->verbose(" Need to Update ".$self->url());
157     # # ---- sort out the preprocessed file in the cache
158     # my $newfile=$self->{cache}->filename($outfile);
159 williamc 1.1
160 sashby 1.12.4.1 # $self->process($self->{cache}->file($self->url()),$newfile);
161     # $self->{cache}->store($outfile,$newfile);
162     # $self->{lastsequence}=$basefilenumber;
163     # # -- store self in the objectstore by url
164     # $self->{dbstore}->store($self,$self->url());
165     # }
166     # else {
167     # $self->verbose("No Need to Update ".$self->url());
168     # }
169     # return $rv;
170     # }
171    
172     # sub updatedfiles {
173     # my $self=shift;
174     # return @{$self->{updatedfiles}};
175     # }
176    
177     # sub process {
178     # my $self=shift;
179     # my $filein=shift;
180     # my $fileout=shift;
181    
182     # # -- create a new file in the url cache
183     # $self->_cleanup();
184     # $self->{fileout}=FileHandle->new();
185     # $self->{fileout}->open(">".$fileout) or die "Unable to open $newfile\n"
186     # ."$!\n";
187    
188     # # -- turn on the scramdoc streamer
189     # $self->{scramdoc}->parse("include", $self->{fileout}, "include_starttag");
190    
191     # $self->{fileout}->close();
192     # $self->verbose("$fileout Created");
193     # }
194    
195     # sub store {
196     # my $self=shift;
197     # my $location=shift;
198    
199     # my $fh=$self->openfile(">".$location);
200    
201     # # -- get all include objects to store themselves
202     # print $fh $self->{lastsequence}."\n";
203     # print $fh ref($self->cache()).":::".$self->cache()->location()."\n";
204     # print $fh ($self->url()?$self->url():"");
205     # print $fh "\n";
206     # foreach $inc ( @{$self->{includesdesc}} ) {
207     # print $fh ">\n";
208     # $inc->store($fh);
209     # }
210     # close $fh;
211     # }
212    
213     # sub restore {
214     # my $self=shift;
215     # my $location=shift;
216    
217     # my $fh=$self->openfile("<".$location);
218    
219     # $self->{lastsequence}=<$fh>;
220     # chomp $self->{lastsequence};
221     # # -- recreate the cache
222     # my $cacheinfo=<$fh>;
223     # chomp $cacheinfo;
224     # my ($type,$cachelocation)=split /:::/, $cacheinfo;
225     # my $cache=$type->new($cachelocation);
226     # $self->cache($cache);
227    
228     # my $url=<$fh>;
229     # chomp $url;
230     # $self->url($url);
231 sashby 1.12
232 sashby 1.12.4.1 # use ActiveDoc::IncFile;
233     # while ( <$fh> ) {
234     # if ( $_ eq ">\n") {
235     # $inc=ActiveDoc::IncFile->new($self->{dbstore});
236     # $inc->restore($fh);
237     # push @{$self->{includesdesc}}, $inc;
238     # # resurrect the appropriate object ID
239     # push @{$self->{includes}}, $self->{scramdoc}->getfile($inc->file());
240     # }
241     # }
242     # $fh->close();
243     # }
244    
245     # sub _cleanup {
246     # my $self=shift;
247     # foreach $inc ( @{$self->{includesdesc}} ) {
248     # undef $inc;
249     # }
250     # undef @{$self->{includesdesc}};
251     # undef @{$self->{includes}};
252     # }
253    
254     # sub _includefile {
255     # my $self=shift;
256     # my $fileobj=shift;
257     # my $startline=shift;
258     # my $endline=shift;
259     # my $lines=shift;
260     # use ActiveDoc::IncFile;
261     # my $obj=ActiveDoc::IncFile->new();
262     # my $url=$fileobj->url();
263     # my $sn=$self->{dbstore}->sequence($url);
264     # $obj->init($url,$startline,$endline,$lines, $sn);
265     # push @{$self->{includes}}, $fileobj;
266     # push @{$self->{includesdesc}}, $obj;
267     # }
268    
269     # # ------------------------ Tag Routines -------------------------------
270    
271     # #
272     # # Include tag
273    
274     # sub Include_Start {
275     # my $self=shift;
276     # my $name=shift;
277     # my $hashref=shift;
278    
279     # $self->{scramdoc}->checktag( $name,$hashref, "url");
280     # $self->verbose("Including ".$$hashref{'url'});
281     # my $fileObj=$self->{scramdoc}->getfile($$hashref{'url'});
282     # if ( defined $fileObj ) {
283     # # dump out to our file in construction
284     # my $fh=FileHandle->new();
285     # my $outfilename=$fileObj->ProcessedFile();
286     # $fh->open("<".$outfilename) or die "Unable to open $outfilename\n";
287     # print {$self->{fileout}} "\n";# always start an include on a new line
288     # my $linecount=0;
289     # while ( <$fh> ) {
290     # # Enable comments in files. Skip line if it
291     # # starts with a hash:
292     # next if /^#/;
293     # $linecount++;
294     # print {$self->{fileout}} $_;
295     # }
296     # print {$self->{fileout}} "\n";# always end include with new line
297     # undef $fh;
298     # $self->_includefile($fileObj,
299     # $self->{scramdoc}->currentparser()->tagstartline(),
300     # $self->{scramdoc}->currentparser()->line(), $linecount);
301     # }
302     # }
303 williamc 1.1