summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorAdam Mitz <mitza-oci@users.noreply.github.com>2013-07-09 15:14:04 +0000
committerAdam Mitz <mitza-oci@users.noreply.github.com>2013-07-09 15:14:04 +0000
commit7d2f01b641b22908d09fad06cbd44547e74c406d (patch)
treedb58c774e9ad05b42cdb00ddafc9a249955d5421 /modules
parentac1a5e6af4293c41df1d6d0c40cd0bdcfbb27453 (diff)
downloadMPC-7d2f01b641b22908d09fad06cbd44547e74c406d.tar.gz
ChangeLogTag: Tue Jul 9 15:06:50 UTC 2013 Adam Mitz <mitza@ociweb.com>
Diffstat (limited to 'modules')
-rw-r--r--modules/Depgen/MakeObjectGenerator.pm5
-rw-r--r--modules/DirectoryManager.pm2
-rw-r--r--modules/TemplateParser.pm28
3 files changed, 33 insertions, 2 deletions
diff --git a/modules/Depgen/MakeObjectGenerator.pm b/modules/Depgen/MakeObjectGenerator.pm
index 84306324..eb59a0d9 100644
--- a/modules/Depgen/MakeObjectGenerator.pm
+++ b/modules/Depgen/MakeObjectGenerator.pm
@@ -13,16 +13,19 @@ package MakeObjectGenerator;
use strict;
use ObjectGenerator;
+use DirectoryManager;
use vars qw(@ISA);
@ISA = qw(ObjectGenerator);
+my $dm = bless {}, 'DirectoryManager';
+
# ************************************************************
# Subroutine Section
# ************************************************************
sub process {
- my $noext = $_[1];
+ my $noext = $dm->translate_directory($_[1]);
my @exts = ('o');
my @dirs = (defined $ENV{VDIR} ? $ENV{VDIR} : '');
$noext =~ s/\.[^\.]+$//o;
diff --git a/modules/DirectoryManager.pm b/modules/DirectoryManager.pm
index 28578c00..07b84b1e 100644
--- a/modules/DirectoryManager.pm
+++ b/modules/DirectoryManager.pm
@@ -192,7 +192,7 @@ sub translate_directory {
my $dd = 'dotdot';
$dir =~ s/^\.\.([\/\\])/$dd$1/;
$dir =~ s/([\/\\])\.\.$/$1$dd/;
- $dir =~ s/([\/\\])\.\.([\/\\])/$1$dd$2/g;
+ $dir =~ s/([\/\\])\.\.(?=[\/\\])/$1$dd$2/g;
$dir =~ s/^\.\.$/$dd/;
}
diff --git a/modules/TemplateParser.pm b/modules/TemplateParser.pm
index ed6ea26e..29d5f115 100644
--- a/modules/TemplateParser.pm
+++ b/modules/TemplateParser.pm
@@ -74,6 +74,7 @@ my %keywords = ('if' => 0,
'starts_with' => $get_type|$doif_type|$get_combined_type,
'ends_with' => $get_type|$doif_type|$get_combined_type,
'contains' => $get_type|$doif_type|$get_combined_type,
+ 'subst' => $get_type|$doif_type|$get_combined_type,
'remove_from' => $get_type|$perform_type|$doif_type|$perform_no_eval_type|$get_combined_type,
'compares' => $get_type|$doif_type|$get_combined_type,
'vars_equal' => $get_type|$perform_type,
@@ -939,6 +940,33 @@ sub handle_contains {
}
+sub get_subst {
+ my($self, $str) = @_;
+ return $self->doif_subst([$str]);
+}
+
+
+sub doif_subst {
+ my($self, $val) = @_;
+
+ if (defined $val) {
+ my($name, $pattern, $replacement) = $self->split_parameters("@$val");
+ if (defined $name && defined $pattern && defined $replacement) {
+ my $result = $self->get_value_with_default($name);
+ $result =~ s/$pattern/$replacement/g;
+ return $result;
+ }
+ }
+ return undef;
+}
+
+
+sub handle_subst {
+ my($self, $str) = @_;
+ $self->generic_handle('doif_subst', $str);
+}
+
+
sub get_remove_from {
my($self, $str) = @_;
return $self->doif_remove_from($str);