Changeset 3919
- Timestamp:
- 2003-03-19T14:57:06+12:00 (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl/perllib/plugins/SRCPlug.pm
r3540 r3919 179 179 180 180 # Get '#include' directives for metadata 181 if ($$textref =~ /\#\W?include\b/) { 182 my $includes=$$textref; 183 184 # remove commented lines 185 $includes =~ s@/\*.*?\*/@@sg; # treat string as single line 186 # ? means match smallest instead of longest !!! 187 $includes =~ s@//.*$@@mg; # treat string as multiple lines 188 189 # remove non- include lines (well, lines without a '#') 190 $includes =~ s/^[^\#]*$//mg; 191 192 # lines don't always start '#include "'.... we have to allow (eg) 193 # '# include ...' 194 # ' #include ...' 195 # also make sure it contains an actual filename, as we don't 196 # do pre-processing (eg #including a macro). 197 while ($includes =~ /\#\s*include.*(\"|<)/) { 198 $includes =~ s/^.*?include.*?(\"|<)(.*)(\"|>).*$//m; 199 my $include=$2; 200 # remove leading pathname 201 $include =~ s@^.*(/|\\)@@; 202 203 my $incs_done=$doc_obj->get_metadata($section, "includes"); 204 foreach my $elem (@$incs_done) { 205 if ("$elem" eq "$include") {goto header_done;} 206 } 207 $doc_obj->add_utf8_metadata($topsection, "includes", $include); 208 header_done: 181 if ($$textref !~ /\#\s*include\b/) { 182 return; 183 } 184 185 my @includes = 186 ($$textref =~ m/^\s*\#\s*include\s*(?:\"|<)(.*?)(?:\"|>)/mg); 187 188 my $incs_done_ref=$doc_obj->get_metadata($section, "includes"); 189 my @incs_done; 190 if (defined($incs_done_ref)) { 191 @incs_done=@$incs_done_ref; 192 } else { 193 @incs_done=(); 194 } 195 196 foreach my $inc (@includes) { 197 # add entries, but only if they don't already exist 198 if (!join('', map {$_ eq "$inc"?1:""} @incs_done)) { 199 push @incs_done, $inc; 200 $doc_obj->add_utf8_metadata($topsection, "includes", $inc); 209 201 } 210 202 }
Note:
See TracChangeset
for help on using the changeset viewer.