@@ -95,8 +95,8 @@ def import_embed(d, seen):
95
95
import_embed (d [k ], seen )
96
96
97
97
98
- def pack (document_loader , processobj , uri , metadata ):
99
- # type: (Loader, Union[Dict[Text, Any], List[Dict[Text, Any]]], Text, Dict[Text, Text]) -> Dict[Text, Any]
98
+ def pack (document_loader , processobj , uri , metadata , rewrite_out = None ):
99
+ # type: (Loader, Union[Dict[Text, Any], List[Dict[Text, Any]]], Text, Dict[Text, Text], Dict[Text, Text] ) -> Dict[Text, Any]
100
100
101
101
document_loader = SubLoader (document_loader )
102
102
document_loader .idx = {}
@@ -114,15 +114,20 @@ def loadref(b, u):
114
114
# type: (Text, Text) -> Union[Dict, List, Text]
115
115
return document_loader .resolve_ref (u , base_url = b )[0 ]
116
116
117
+ ids = set () # type: Set[Text]
118
+ find_ids (processobj , ids )
119
+
117
120
runs = {uri }
118
121
find_run (processobj , loadref , runs )
119
122
120
- ids = set () # type: Set[Text]
121
123
for f in runs :
122
124
find_ids (document_loader .resolve_ref (f )[0 ], ids )
123
125
124
126
names = set () # type: Set[Text]
125
- rewrite = {} # type: Dict[Text, Text]
127
+ if rewrite_out is None :
128
+ rewrite = {} # type: Dict[Text, Text]
129
+ else :
130
+ rewrite = rewrite_out
126
131
127
132
mainpath , _ = urllib .parse .urldefrag (uri )
128
133
@@ -131,8 +136,10 @@ def rewrite_id(r, mainuri):
131
136
if r == mainuri :
132
137
rewrite [r ] = "#main"
133
138
elif r .startswith (mainuri ) and r [len (mainuri )] in ("#" , "/" ):
134
- path , frag = urllib .parse .urldefrag (r )
135
- rewrite [r ] = "#" + frag
139
+ if r [len (mainuri ):].startswith ("#main/" ):
140
+ rewrite [r ] = "#" + uniquename (r [len (mainuri )+ 1 :], names )
141
+ else :
142
+ rewrite [r ] = "#" + uniquename ("main/" + r [len (mainuri )+ 1 :], names )
136
143
else :
137
144
path , frag = urllib .parse .urldefrag (r )
138
145
if path == mainpath :
@@ -144,8 +151,7 @@ def rewrite_id(r, mainuri):
144
151
sortedids = sorted (ids )
145
152
146
153
for r in sortedids :
147
- if r in document_loader .idx :
148
- rewrite_id (r , uri )
154
+ rewrite_id (r , uri )
149
155
150
156
packed = {"$graph" : [], "cwlVersion" : metadata ["cwlVersion" ]
151
157
} # type: Dict[Text, Any]
0 commit comments