diff --git a/AstConv/HtmlStruct.fs b/AstConv/HtmlStruct.fs index f3c2a02..3b7fe59 100644 --- a/AstConv/HtmlStruct.fs +++ b/AstConv/HtmlStruct.fs @@ -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} }}""" diff --git a/AstConv/Properties/launchSettings.json b/AstConv/Properties/launchSettings.json index deb1f45..4541d53 100644 --- a/AstConv/Properties/launchSettings.json +++ b/AstConv/Properties/launchSettings.json @@ -2,7 +2,7 @@ "profiles": { "AstConv": { "commandName": "Project", - "commandLineArgs": "--file \"E:/storyline.xast\" --format" + "commandLineArgs": "--file \"E:/storyline.xast\" --html \"E:/html\"" } } } \ No newline at end of file