ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/ActiveDoc/ActiveDoc.pm
Revision: 1.1
Committed: Fri Aug 20 09:09:28 1999 UTC (25 years, 8 months ago) by williamc
Content type: text/plain
Branch: MAIN
Log Message:
Basic ActiveDoc - untested

File Contents

# User Rev Content
1 williamc 1.1 #
2     # The base functionality for the ActiveDocument - inherits from Basetags
3     #
4     # Inherits from BaseTags
5     # --------
6     # Interface
7     # ---------
8     # new(filename, ObjectStoreCont): create a new object based on a file and
9     # associate with the given ObjectStoreCont
10     # parse() : parse the input file
11     # include(url) : Activate include file mechanism, returns the object ref if OK
12     # treenode() : return the associated TreeNode object reference
13     # getincludeObjectStore : Return a pointer to the ObectStore that contains all
14     # included objects
15     # find(string) : find the object reference related to string in the associated
16     # tree. Mechanism for getting object references
17    
18    
19     package ActiveDoc;
20     use BaseTags;
21     use DOChandler;
22     use ObjectStoreCont;
23    
24     @ISA = qw (BaseTags);
25    
26     # Initialise
27     sub _init {
28     my $self=shift;
29     my $OC=shift;
30    
31     $self->_addurl();
32     $self->{OC}=$OC;
33     $self->{treenode)=TreeNode->new();
34     $self->{includeOS}=$self->{OC}->newStore();
35     $self->{dochandler}=DOChandler->new($self->{includeOS});
36     # Add the minimal functionality tag - feel free to override
37     $self->{tags}->addtag("Include", \&Include_Start, "", "");
38     }
39    
40     #
41     # Include mechanism
42     #
43     sub include {
44     my $self=shift;
45     my $url=shift;
46     my $obj;
47    
48     $obj=$self->{dochandler}->newdoc($url);
49     # Now Extend our tree
50     $self->{treenode}->grow($obj->treenode());
51     return $obj;
52     }
53    
54     sub treenode {
55     my $self=shift;
56     return $self->treenode;
57     }
58    
59     sub getincludeObjectStore {
60     my $self=shift;
61     return $self->{includeOS};
62     }
63    
64     sub find($) {
65     my $self=shift;
66     my $string=shift;
67    
68     $self->{treenode}->find($string);
69     }
70    
71     # ------------------------ Tag Routines ------------------------------
72     #
73     # A default Include tag
74     #
75     sub Include_Start {
76     my $returnval;
77     # Just call the basic - this is only a default wrapper for the
78     # <INCLUDE> tag assuming with no futher processing of the DOCObjref
79     $returnval=_includetag(@_)
80     # dont return anything if its a basic tag
81     }
82    
83     # ----------------------- Support Routines ---------------------------
84     #
85     # the real workings of the include tag returns the ref
86     #
87     sub _includetag {
88     my $self=shift;
89     my $name=shift;
90     my $hashref=shift;
91    
92     $self->{switch}->checkparam( $name, "ref");
93     $url=$$hashref{'ref'};
94     return $self->include($url);
95     }
96