summaryrefslogtreecommitdiff
path: root/modules/Creator.pm
diff options
context:
space:
mode:
authorelliott_c <ocielliottc@users.noreply.github.com>2007-01-12 15:25:47 +0000
committerelliott_c <ocielliottc@users.noreply.github.com>2007-01-12 15:25:47 +0000
commita1ead4ea0aa0369461ad232ac819d3a159c2e7af (patch)
treee1bae47ab766f855930426e448b89ed9d761c629 /modules/Creator.pm
parentcbf18a70c01f12ae47059c3de20dc5dc4a0922a6 (diff)
downloadMPC-a1ead4ea0aa0369461ad232ac819d3a159c2e7af.tar.gz
ChangeLogTag: Fri Jan 12 15:24:27 UTC 2007 Chad Elliott <elliott_c@ociweb.com>
Diffstat (limited to 'modules/Creator.pm')
-rw-r--r--modules/Creator.pm85
1 files changed, 56 insertions, 29 deletions
diff --git a/modules/Creator.pm b/modules/Creator.pm
index ac04cfb7..961c24fd 100644
--- a/modules/Creator.pm
+++ b/modules/Creator.pm
@@ -349,14 +349,19 @@ sub parse_scope {
my(@values) = ();
if (defined $validNames && $self->parse_assignment($line, \@values)) {
if (defined $$validNames{$values[1]}) {
- if ($values[0] == 0) {
- $self->process_assignment($values[1], $values[2], $flags);
- }
- elsif ($values[0] == 1) {
- $self->process_assignment_add($values[1], $values[2], $flags);
- }
- elsif ($values[0] == -1) {
- $self->process_assignment_sub($values[1], $values[2], $flags);
+ ## If $type is not defined, we don't even need to bother with
+ ## processing the assignment as we will be throwing the value
+ ## away anyway.
+ if (defined $type) {
+ if ($values[0] == 0) {
+ $self->process_assignment($values[1], $values[2], $flags);
+ }
+ elsif ($values[0] == 1) {
+ $self->process_assignment_add($values[1], $values[2], $flags);
+ }
+ elsif ($values[0] == -1) {
+ $self->process_assignment_sub($values[1], $values[2], $flags);
+ }
}
}
else {
@@ -575,6 +580,28 @@ sub process_assignment {
}
+sub addition_core {
+ my($self) = shift;
+ my($name) = shift;
+ my($value) = shift;
+ my($nval) = shift;
+ my($assign) = shift;
+
+ if (defined $nval) {
+ if ($self->preserve_assignment_order($name)) {
+ $nval .= " $value";
+ }
+ else {
+ $nval = "$value $nval";
+ }
+ }
+ else {
+ $nval = $value;
+ }
+ $self->process_assignment($name, $nval, $assign, 1);
+}
+
+
sub process_assignment_add {
my($self) = shift;
my($name) = shift;
@@ -589,36 +616,19 @@ sub process_assignment_add {
## If there is anything to add, then do so
if ($value ne '') {
- if (defined $nval) {
- if ($self->preserve_assignment_order($name)) {
- $nval .= " $value";
- }
- else {
- $nval = "$value $nval";
- }
- }
- else {
- $nval = $value;
- }
- $self->process_assignment($name, $nval, $assign);
+ $self->addition_core($name, $value, $nval, $assign);
}
}
-sub process_assignment_sub {
+sub subtraction_core {
my($self) = shift;
my($name) = shift;
my($value) = shift;
+ my($nval) = shift;
my($assign) = shift;
- my($nval) = $self->get_assignment_for_modification($name, $assign);
if (defined $nval) {
- ## Remove double quotes if there are any
- $value =~ s/^\"(.*)\"$/$1/;
-
- ## Escape any regular expression special characters
- $value = $self->escape_regex_special($value);
-
my($last) = 1;
my($found) = undef;
for(my $i = 0; $i <= $last; $i++) {
@@ -637,7 +647,7 @@ sub process_assignment_sub {
## or at the end of the line (single values are always at the end
## of the line).
if ($nval =~ s/$re\s+// || $nval =~ s/$re$//) {
- $self->process_assignment($name, $nval, $assign);
+ $self->process_assignment($name, $nval, $assign, -1);
$found = 1;
last;
}
@@ -648,6 +658,23 @@ sub process_assignment_sub {
}
+sub process_assignment_sub {
+ my($self) = shift;
+ my($name) = shift;
+ my($value) = shift;
+ my($assign) = shift;
+ my($nval) = $self->get_assignment_for_modification($name, $assign);
+
+ ## Remove double quotes if there are any
+ $value =~ s/^\"(.*)\"$/$1/;
+
+ ## Escape any regular expression special characters
+ $value = $self->escape_regex_special($value);
+
+ $self->subtraction_core($name, $value, $nval, $assign);
+}
+
+
sub fill_type_name {
my($self) = shift;
my($names) = shift;