File tree Expand file tree Collapse file tree 1 file changed +37
-2
lines changed Expand file tree Collapse file tree 1 file changed +37
-2
lines changed Original file line number Diff line number Diff line change 3
3
use warnings;
4
4
use strict;
5
5
6
+ use Getopt::Long;
6
7
use JSON::XS qw( decode_json) ;
7
8
8
9
my %TYPE_MAP = (
@@ -189,6 +190,8 @@ sub process_union
189
190
190
191
sub main
191
192
{
193
+ my ($namespaces ) = @_ ;
194
+
192
195
my %imports ;
193
196
my @bindings ;
194
197
@@ -214,11 +217,43 @@ sub main
214
217
}
215
218
print " \n " ;
216
219
}
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 ) {
218
250
print " $binding \n " ;
219
251
}
220
252
}
221
253
222
- main();
254
+ my @namespaces ;
255
+ GetOptions(" namespace=s" , \@namespaces );
256
+
257
+ main(\@namespaces );
223
258
224
259
1;
You can’t perform that action at this time.
0 commit comments