修复故事线独立情况下崩溃的bug

This commit is contained in:
codeboss 2025-05-11 15:55:40 +08:00
parent 0b68468679
commit adb6e326d2
2 changed files with 28 additions and 16 deletions

View File

@ -980,7 +980,7 @@ open System.IO
$"{a.Value.name()}&{b.name()}", b.address())
// 线线
let towards_arrs = fragment_defs|> List.map(fun (_, defn) ->
let towards_prim = fragment_defs|> List.map(fun (_, defn) ->
let node_refs = defn.children() |> List.filter(fun v -> v:? AstImport.FragmentRef)
|> List.map(fun v -> v:?> AstImport.FragmentRef)
@ -992,10 +992,14 @@ open System.IO
)
)
|> List.reduce(fun al bl-> al @ bl)
|> List.reduce(fun a b -> a + b)
let all_arrows = arrows_decl + towards_arrs
let all_arrows =
if towards_prim.IsEmpty then
arrows_decl
else
let towards_arrs = towards_prim |> List.reduce(fun a b -> a + b)
arrows_decl + towards_arrs
$"""digraph node_relates{{
rankdir=LR
label="{gname}"
@ -1087,17 +1091,25 @@ open System.IO
|> List.map(fun v -> v, (v.children()|> List.filter(fun v-> v:? AstImport.FragmentRef))) // 线
|> List.filter(fun (_, al)-> al.Length > 0)
let refers = rst|> List.map(fun (a, refsa) ->
refsa|> List.map(fun refn ->
let refx = refn :?> AstImport.FragmentRef
let target_name = $"""{refx.storyRef()}&{refx.sliceRef()}"""
let _, target_address = node_map|> List.filter(fun (a, _) -> a = target_name)|> List.item 0
$"""node_{a.address()}--node_{target_address}
"""
)
)
|> List.reduce (fun a b -> a @ b)
|> List.reduce (fun a b -> a + b)
let refers_prim=
if not rst.IsEmpty then
rst |> List.map(fun (a, refsa) ->
refsa |> List.map(fun refn ->
let refx = refn :?> AstImport.FragmentRef
let target_name = $"""{refx.storyRef()}&{refx.sliceRef()}"""
let _, target_address = node_map|> List.filter(fun (a, _) -> a = target_name)|> List.item 0
$"""node_{a.address()}--node_{target_address}
"""
)
)
|> List.reduce (fun a b -> a @ b)
else []
let refers =
if refers_prim.IsEmpty then
""
else
refers_prim |> List.reduce (fun a b -> a + b)
$"""graph{{ label="{gname}" {clusters_desc} {refers} }}"""

View File

@ -2,7 +2,7 @@
"profiles": {
"AstConv": {
"commandName": "Project",
"commandLineArgs": "--file \"E:/storyline.xast\" --format"
"commandLineArgs": "--file \"E:/storyline.xast\" --html \"E:/html\""
}
}
}