11#r " ../_lib/Fornax.Core.dll"
22#r " ../../packages/docs/Newtonsoft.Json/lib/netstandard2.0/Newtonsoft.Json.dll"
33#r " ../../packages/docs/FSharp.Formatting/lib/netstandard2.0/FSharp.MetadataFormat.dll"
4+
45#if ! FORNAX
56#load " ../loaders/contentloader.fsx"
67#load " ../loaders/apirefloader.fsx"
78#load " ../loaders/globalloader.fsx"
8-
99#endif
1010
1111open Apirefloader
@@ -17,67 +17,73 @@ type Entry = {
1717 title: string
1818 content: string
1919}
20- let generate ( ctx : SiteContents ) ( projectRoot : string ) ( page : string ) =
21- let siteInfo = ctx.TryGetValue< Globalloader.SiteInfo>() .Value
22- let rootUrl = siteInfo.root_ url
2320
24- let pages = ctx.TryGetValues< Contentloader.Post> () |> Option.defaultValue Seq.empty
25- let entries =
26- pages
27- |> Seq.map ( fun n ->
28- { uri = rootUrl + " /" + n.link.Replace( " content/" , " " ); title = n.title; content = n.text}
29- )
30-
31- let all = ctx.TryGetValues< AssemblyEntities>()
32- let refs =
33- match all with
34- | None -> []
35- | Some all ->
36- all
37- |> Seq.toList
38- |> List.collect ( fun n ->
39- let generatorOutput = n.GeneratorOutput
40- let allModules = n.Modules
41- let allTypes = n.Types
21+ let generate ( ctx : SiteContents ) ( projectRoot : string ) ( page : string ) =
22+ printfn " generating search index"
23+ try
24+ let siteInfo = ctx.TryGetValue< Globalloader.SiteInfo>() .Value
25+ let rootUrl = siteInfo.root_ url
26+ let pages = ctx.TryGetValues< Contentloader.Post> () |> Option.defaultValue Seq.empty
27+ let entries =
28+ pages
29+ |> Seq.map ( fun n ->
30+ { uri = rootUrl + " /" + n.link.Replace( " content/" , " " ); title = n.title; content = n.text}
31+ )
4232
43- let gen =
44- let ctn =
45- sprintf " %s \n %s " generatorOutput.AssemblyGroup.Name ( generatorOutput.AssemblyGroup.Namespaces |> Seq.map ( fun n -> n.Name) |> String.concat " " )
46- { uri = ( rootUrl + sprintf " /reference/%s /index.html" n.Label ); title = sprintf " %s - API Reference" n.Label; content = ctn }
33+ let all = ctx.TryGetValues< AssemblyEntities>()
34+ let refs =
35+ match all with
36+ | None -> []
37+ | Some all ->
38+ all
39+ |> Seq.toList
40+ |> List.collect ( fun n ->
41+ let generatorOutput = n.GeneratorOutput
42+ let allModules = n.Modules
43+ let allTypes = n.Types
4744
48- let mdlsGen =
49- allModules
50- |> Seq.map ( fun m ->
51- let m = m.Info
52- let cnt =
53- sprintf " %s \n %s \n %s \n %s \n %s \n %s "
54- m.Name
55- m.Comment.FullText
56- ( m.NestedModules |> List.map ( fun m -> m.Name + " " + m.Comment.FullText ) |> String.concat " " )
57- ( m.NestedTypes |> List.map ( fun m -> m.Name + " " + m.Comment.FullText ) |> String.concat " " )
58- ( m.ValuesAndFuncs |> List.map ( fun m -> m.Name + " " + m.Comment.FullText ) |> String.concat " " )
59- ( m.TypeExtensions |> List.map ( fun m -> m.Name + " " + m.Comment.FullText ) |> String.concat " " )
45+ let gen =
46+ let ctn =
47+ sprintf " %s \n %s " generatorOutput.AssemblyGroup.Name ( generatorOutput.AssemblyGroup.Namespaces |> Seq.map ( fun n -> n.Name) |> String.concat " " )
48+ { uri = ( rootUrl + sprintf " /reference/%s /index.html" n.Label ); title = sprintf " %s - API Reference" n.Label; content = ctn }
6049
50+ let mdlsGen =
51+ allModules
52+ |> Seq.map ( fun m ->
53+ let m = m.Info
54+ let cnt =
55+ sprintf " %s \n %s \n %s \n %s \n %s \n %s "
56+ m.Name
57+ m.Comment.FullText
58+ ( m.NestedModules |> List.map ( fun m -> m.Name + " " + m.Comment.FullText ) |> String.concat " " )
59+ ( m.NestedTypes |> List.map ( fun m -> m.Name + " " + m.Comment.FullText ) |> String.concat " " )
60+ ( m.ValuesAndFuncs |> List.map ( fun m -> m.Name + " " + m.Comment.FullText ) |> String.concat " " )
61+ ( m.TypeExtensions |> List.map ( fun m -> m.Name + " " + m.Comment.FullText ) |> String.concat " " )
6162
62- { uri = rootUrl + sprintf " /reference/%s /%s .html" n.Label m.UrlName ; title = m.Name; content = cnt }
63- )
6463
65- let tsGen =
66- allTypes
67- |> Seq.map ( fun m ->
68- let m = m.Info
69- let cnt =
70- sprintf " %s \n %s \n %s "
71- m.Name
72- m.Comment.FullText
73- ( m.AllMembers |> List.map ( fun m -> m.Name + " " + m.Comment.FullText ) |> String.concat " " )
64+ { uri = rootUrl + sprintf " /reference/%s /%s .html" n.Label m.UrlName ; title = m.Name; content = cnt }
65+ )
7466
67+ let tsGen =
68+ allTypes
69+ |> Seq.map ( fun m ->
70+ let m = m.Info
71+ let cnt =
72+ sprintf " %s \n %s \n %s "
73+ m.Name
74+ m.Comment.FullText
75+ ( m.AllMembers |> List.map ( fun m -> m.Name + " " + m.Comment.FullText ) |> String.concat " " )
7576
76- { uri = rootUrl + sprintf " /reference/%s /%s .html" n.Label m.UrlName ; title = m.Name; content = cnt }
77- )
78- [ yield ! entries; gen; yield ! mdlsGen; yield ! tsGen]
79- )
8077
81- [| yield ! entries; yield ! refs|]
82- |> Newtonsoft.Json.JsonConvert.SerializeObject
78+ { uri = rootUrl + sprintf " /reference/%s /%s .html" n.Label m.UrlName ; title = m.Name; content = cnt }
79+ )
80+ [ yield ! entries; gen; yield ! mdlsGen; yield ! tsGen]
81+ )
82+ printfn " generated search index"
83+ [| yield ! entries; yield ! refs|]
84+ |> Newtonsoft.Json.JsonConvert.SerializeObject
85+ with
86+ | e ->
87+ failwithf " error while generating index for %s \n %A " page e
88+
8389
0 commit comments