Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. namespace ElasticsearchFs
  2.  
  3. module ApiGenerator =
  4.  
  5. module EnumSpec =
  6.  
  7. type Source =
  8. | Parameter
  9. | Part
  10.  
  11. type T =
  12. { Source: Source
  13. ActionName: string
  14. Name: string
  15. Options: string array }
  16.  
  17. let make source actionName name options : T =
  18. { Source = source
  19. ActionName = actionName
  20. Name = name
  21. Options = options }
  22.  
  23. let ofParameter actionName parameterName parameter =
  24. if ApiSpec.Parameter.isEnum parameter then
  25. Some (make Source.Parameter actionName parameterName parameter.Options)
  26. else
  27. None
  28.  
  29. let ofPart actionName partName part =
  30. if ApiSpec.Part.isEnum part then
  31. Some (make Source.Part actionName partName part.Options)
  32. else
  33. None
  34.  
  35. let ofUrl actionName (url: ApiSpec.Url) : T array =
  36. let parameters =
  37. Map.toArray url.Parameters
  38. |> Array.choose (fun (n,p) -> ofParameter actionName n p)
  39. let parts =
  40. Map.toArray url.Parts
  41. |> Array.choose (fun (n,p) -> ofPart actionName n p)
  42. Array.append parameters parts
  43.  
  44. let ofApiSpec apiSpec =
  45. Map.toArray apiSpec
  46. |> Array.collect (fun (actionName,action) ->
  47. ofUrl actionName (ApiSpec.Action.url action))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement