Guest User

Untitled

a guest
Oct 16th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. require "json"
  2.  
  3. module Crystal::API
  4. class RelativeLocation
  5. JSON.mapping({
  6. filename: String,
  7. line_number: Int32,
  8. url: String
  9. })
  10. end
  11.  
  12. class Type
  13. JSON.mapping({
  14. html_id: String,
  15. path: String,
  16. kind: String,
  17. full_name: String,
  18. name: String,
  19. abstract: Bool,
  20. superclass: TypeRef?,
  21. ancestors: Array(TypeRef),
  22. locations: Array(RelativeLocation),
  23. repository_name: String,
  24. program: Bool,
  25. enum: Bool,
  26. alias: Bool,
  27. aliased: String,
  28. const: Bool,
  29. constants: Array(Constant),
  30. included_modules: Array(TypeRef),
  31. extended_modules: Array(TypeRef),
  32. subclasses: Array(TypeRef),
  33. including_types: Array(TypeRef),
  34. namespace: TypeRef?,
  35. doc: String?,
  36. summary: String?,
  37. class_methods: Array(Method),
  38. constructors: Array(Method),
  39. instance_methods: Array(Method),
  40. macros: Array(Macro),
  41. types: Array(Type),
  42. })
  43. end
  44.  
  45. class TypeRef
  46. JSON.mapping({
  47. html_id: String?,
  48. kind: String,
  49. full_name: String,
  50. name: String
  51. })
  52. end
  53.  
  54. class Constant
  55. JSON.mapping({
  56. name: String,
  57. value: String,
  58. doc: String?,
  59. summary: String?
  60. })
  61. end
  62.  
  63. class Macro
  64. JSON.mapping({
  65. id: String,
  66. html_id: String,
  67. name: String,
  68. doc: String?,
  69. summary: String?,
  70. abstract: Bool,
  71. args: Array(Argument),
  72. args_string: String,
  73. source_link: String?,
  74. def: CrystalMacro,
  75. })
  76. end
  77.  
  78. class Method
  79. JSON.mapping({
  80. id: String,
  81. html_id: String,
  82. name: String,
  83. doc: String?,
  84. summary: String?,
  85. abstract: Bool,
  86. args: Array(Argument),
  87. args_string: String,
  88. source_link: String?,
  89. def: CrystalDef,
  90. })
  91. end
  92.  
  93. class Argument
  94. JSON.mapping({
  95. name: String,
  96. doc: String?,
  97. default_value: String,
  98. external_name: String,
  99. restriction: String
  100. })
  101. end
  102.  
  103. class CrystalDef
  104. JSON.mapping({
  105. name: String,
  106. args: Array(Argument),
  107. double_splat: Argument?,
  108. splat_index: Int32?,
  109. yields: Int32?,
  110. block_arg: Argument?,
  111. return_type: String,
  112. visibility: String,
  113. body: String
  114. })
  115. end
  116.  
  117. class CrystalMacro
  118. JSON.mapping({
  119. args: Array(Argument),
  120. double_splat: Argument?,
  121. splat_index: Int32?,
  122. block_arg: Argument?,
  123. visibility: String,
  124. body: String
  125. })
  126. end
  127. end
Add Comment
Please, Sign In to add comment