Skip to content

Commit ebb3b5d

Browse files
committed
[master] allow namespace prefixes to be specified (#166)
1 parent ff61aa1 commit ebb3b5d

File tree

1 file changed

+37
-2
lines changed

1 file changed

+37
-2
lines changed

eg/dale-autowrap/dale-autowrap.pl

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
use warnings;
44
use strict;
55

6+
use Getopt::Long;
67
use JSON::XS qw(decode_json);
78

89
my %TYPE_MAP = (
@@ -189,6 +190,8 @@ sub process_union
189190

190191
sub main
191192
{
193+
my ($namespaces) = @_;
194+
192195
my %imports;
193196
my @bindings;
194197

@@ -214,11 +217,43 @@ sub main
214217
}
215218
print "\n";
216219
}
217-
for my $binding (@bindings) {
220+
221+
my %by_namespace =
222+
map { $_ => [] }
223+
@{$namespaces};
224+
my @no_namespace;
225+
BINDING: for my $binding (@bindings) {
226+
my ($name) = ($binding =~ /^\(.*? (.*?) /);
227+
for my $namespace (@{$namespaces}) {
228+
if ($name =~ /^${namespace}/) {
229+
$name =~ s/^${namespace}//;
230+
$binding =~ s/ (.*?) / $name /;
231+
push @{$by_namespace{$namespace}}, $binding;
232+
next BINDING;
233+
}
234+
}
235+
push @no_namespace, $binding;
236+
}
237+
238+
for my $namespace (@{$namespaces}) {
239+
my @ns_bindings = @{$by_namespace{$namespace}};
240+
if (@ns_bindings) {
241+
print "(namespace $namespace \n";
242+
for my $binding (@bindings) {
243+
print "$binding\n";
244+
}
245+
print ")\n";
246+
}
247+
}
248+
249+
for my $binding (@no_namespace) {
218250
print "$binding\n";
219251
}
220252
}
221253

222-
main();
254+
my @namespaces;
255+
GetOptions("namespace=s", \@namespaces);
256+
257+
main(\@namespaces);
223258

224259
1;

0 commit comments

Comments
 (0)