Advertisement
Guest User

Untitled

a guest
Oct 13th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 1.61 KB | None | 0 0
  1. let findTemplatesFile (file : string) =
  2.     let doc = SchemeOFTD(XDocument.Load(file))
  3.     //doc.preprocess()
  4.     let elements =
  5.         doc.xd.Element(nsoftd + "Документ").Element(nsoftd + "Лист").Elements()
  6.             |> Seq.filter
  7.                 (fun xe ->
  8.                     xe.Name.NamespaceName = nsOftdElement.NamespaceName
  9.                     || xe.Name.NamespaceName = nsbsloftd.NamespaceName)
  10.     let svgGroups =
  11.         doc.xd.Element(nsoftd + "Документ").Element(nsoftd + "Лист").Elements()
  12.         |> Seq.tryFind (fun xe -> xe.Name.LocalName = "svg")
  13.         |> (fun xe ->
  14.             match xe with
  15.             | None -> Seq.empty
  16.             | Some(xe) ->
  17.                 match xe.Element(nssvg + "svg").Element(nssvg + "g") with
  18.                 | null -> Seq.empty
  19.                 | a -> a.Elements())
  20.         |> Seq.toList
  21.     let templates =
  22.         elements
  23.         |> Seq.choose
  24.             (fun e ->
  25.                 let idSvg = e.Attribute(xn "svg-id").Value
  26.                 match svgGroups
  27.                         |> List.tryFind (fun a -> a.Attribute(xn "id").Value = idSvg) with
  28.                 | Some(a) -> Some(e, a)
  29.                 | None -> None)
  30.         |> Seq.map
  31.             (fun (el, svgGroup) ->
  32.                 Template.TransformTemplate(Template.Template.fromOftd(doc, el, svgGroup)))
  33.         |> (fun ts ->
  34.             Template.TemplateAcc(doc, Seq.toList(ts)))
  35.     templates
  36.  
  37.  
  38. let findTemplatesDirectory directory =
  39.     let templates =
  40.         Directory.GetFiles(directory) |> Seq.map (fun f -> findTemplatesFile f)
  41.     templates
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement