bel_parser 1.0.0.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. checksums.yaml +7 -0
  2. data/.gemspec +28 -0
  3. data/CHANGELOG.md +10 -0
  4. data/LICENSE +191 -0
  5. data/README.md +9 -0
  6. data/VERSION +1 -0
  7. data/bin/bel2_termcheck +39 -0
  8. data/lib/bel_parser.rb +17 -0
  9. data/lib/bel_parser/ast_filter.rb +27 -0
  10. data/lib/bel_parser/ast_generator.rb +86 -0
  11. data/lib/bel_parser/ast_validator.rb +40 -0
  12. data/lib/bel_parser/expression/parser.rb +42 -0
  13. data/lib/bel_parser/expression/term_semantics.rb +36 -0
  14. data/lib/bel_parser/language.rb +7 -0
  15. data/lib/bel_parser/language/function.rb +59 -0
  16. data/lib/bel_parser/language/quoting.rb +236 -0
  17. data/lib/bel_parser/language/semantic_ast.rb +604 -0
  18. data/lib/bel_parser/language/semantics/analyzer.rb +59 -0
  19. data/lib/bel_parser/language/signature.rb +39 -0
  20. data/lib/bel_parser/language/specification.rb +49 -0
  21. data/lib/bel_parser/language/syntax/expression/incomplete_node.rb +14 -0
  22. data/lib/bel_parser/language/syntax/expression/invalid_term_function.rb +22 -0
  23. data/lib/bel_parser/language/version1.rb +50 -0
  24. data/lib/bel_parser/language/version1/functions/abundance.rb +85 -0
  25. data/lib/bel_parser/language/version1/functions/biological_process.rb +85 -0
  26. data/lib/bel_parser/language/version1/functions/catalytic_activity.rb +110 -0
  27. data/lib/bel_parser/language/version1/functions/cell_secretion.rb +80 -0
  28. data/lib/bel_parser/language/version1/functions/cell_surface_expression.rb +80 -0
  29. data/lib/bel_parser/language/version1/functions/chaperone_activity.rb +110 -0
  30. data/lib/bel_parser/language/version1/functions/complex_abundance.rb +115 -0
  31. data/lib/bel_parser/language/version1/functions/composite_abundance.rb +80 -0
  32. data/lib/bel_parser/language/version1/functions/degradation.rb +80 -0
  33. data/lib/bel_parser/language/version1/functions/fusion.rb +302 -0
  34. data/lib/bel_parser/language/version1/functions/gene_abundance.rb +125 -0
  35. data/lib/bel_parser/language/version1/functions/gtp_bound_activity.rb +110 -0
  36. data/lib/bel_parser/language/version1/functions/kinase_activity.rb +110 -0
  37. data/lib/bel_parser/language/version1/functions/list.rb +115 -0
  38. data/lib/bel_parser/language/version1/functions/micro_rna_abundance.rb +85 -0
  39. data/lib/bel_parser/language/version1/functions/molecular_activity.rb +80 -0
  40. data/lib/bel_parser/language/version1/functions/pathology.rb +85 -0
  41. data/lib/bel_parser/language/version1/functions/peptidase_activity.rb +110 -0
  42. data/lib/bel_parser/language/version1/functions/phosphatase_activity.rb +110 -0
  43. data/lib/bel_parser/language/version1/functions/products.rb +80 -0
  44. data/lib/bel_parser/language/version1/functions/protein_abundance.rb +245 -0
  45. data/lib/bel_parser/language/version1/functions/protein_modification.rb +167 -0
  46. data/lib/bel_parser/language/version1/functions/reactants.rb +80 -0
  47. data/lib/bel_parser/language/version1/functions/reaction.rb +85 -0
  48. data/lib/bel_parser/language/version1/functions/ribosylation_activity.rb +110 -0
  49. data/lib/bel_parser/language/version1/functions/rna_abundance.rb +125 -0
  50. data/lib/bel_parser/language/version1/functions/substitution.rb +96 -0
  51. data/lib/bel_parser/language/version1/functions/transcriptional_activity.rb +110 -0
  52. data/lib/bel_parser/language/version1/functions/translocation.rb +100 -0
  53. data/lib/bel_parser/language/version1/functions/transport_activity.rb +110 -0
  54. data/lib/bel_parser/language/version1/functions/truncation.rb +82 -0
  55. data/lib/bel_parser/language/version1/return_types/abundance.rb +20 -0
  56. data/lib/bel_parser/language/version1/return_types/any.rb +74 -0
  57. data/lib/bel_parser/language/version1/return_types/biological_process.rb +17 -0
  58. data/lib/bel_parser/language/version1/return_types/catalytic_activity.rb +20 -0
  59. data/lib/bel_parser/language/version1/return_types/chaperone_activity.rb +20 -0
  60. data/lib/bel_parser/language/version1/return_types/complex_abundance.rb +17 -0
  61. data/lib/bel_parser/language/version1/return_types/fusion.rb +17 -0
  62. data/lib/bel_parser/language/version1/return_types/gene_abundance.rb +17 -0
  63. data/lib/bel_parser/language/version1/return_types/gtp_bound_activity.rb +20 -0
  64. data/lib/bel_parser/language/version1/return_types/kinase_activity.rb +20 -0
  65. data/lib/bel_parser/language/version1/return_types/list.rb +17 -0
  66. data/lib/bel_parser/language/version1/return_types/micro_rna_abundance.rb +17 -0
  67. data/lib/bel_parser/language/version1/return_types/molecular_activity.rb +20 -0
  68. data/lib/bel_parser/language/version1/return_types/pathology.rb +17 -0
  69. data/lib/bel_parser/language/version1/return_types/peptidase_activity.rb +20 -0
  70. data/lib/bel_parser/language/version1/return_types/phosphatase_activity.rb +20 -0
  71. data/lib/bel_parser/language/version1/return_types/products.rb +17 -0
  72. data/lib/bel_parser/language/version1/return_types/protein_abundance.rb +17 -0
  73. data/lib/bel_parser/language/version1/return_types/protein_modification.rb +17 -0
  74. data/lib/bel_parser/language/version1/return_types/reactants.rb +17 -0
  75. data/lib/bel_parser/language/version1/return_types/ribosylation_activity.rb +20 -0
  76. data/lib/bel_parser/language/version1/return_types/rna_abundance.rb +17 -0
  77. data/lib/bel_parser/language/version1/return_types/substitution.rb +17 -0
  78. data/lib/bel_parser/language/version1/return_types/transcriptional_activity.rb +20 -0
  79. data/lib/bel_parser/language/version1/return_types/transport_activity.rb +20 -0
  80. data/lib/bel_parser/language/version1/return_types/truncation.rb +17 -0
  81. data/lib/bel_parser/language/version2.rb +50 -0
  82. data/lib/bel_parser/language/version2/functions/abundance.rb +165 -0
  83. data/lib/bel_parser/language/version2/functions/activity.rb +115 -0
  84. data/lib/bel_parser/language/version2/functions/biological_process.rb +85 -0
  85. data/lib/bel_parser/language/version2/functions/cell_secretion.rb +80 -0
  86. data/lib/bel_parser/language/version2/functions/cell_surface_expression.rb +80 -0
  87. data/lib/bel_parser/language/version2/functions/complex_abundance.rb +190 -0
  88. data/lib/bel_parser/language/version2/functions/composite_abundance.rb +80 -0
  89. data/lib/bel_parser/language/version2/functions/degradation.rb +80 -0
  90. data/lib/bel_parser/language/version2/functions/fragment.rb +119 -0
  91. data/lib/bel_parser/language/version2/functions/from_location.rb +85 -0
  92. data/lib/bel_parser/language/version2/functions/fusion.rb +227 -0
  93. data/lib/bel_parser/language/version2/functions/gene_abundance.rb +195 -0
  94. data/lib/bel_parser/language/version2/functions/list.rb +115 -0
  95. data/lib/bel_parser/language/version2/functions/location.rb +85 -0
  96. data/lib/bel_parser/language/version2/functions/micro_rna_abundance.rb +165 -0
  97. data/lib/bel_parser/language/version2/functions/molecular_activity.rb +83 -0
  98. data/lib/bel_parser/language/version2/functions/pathology.rb +85 -0
  99. data/lib/bel_parser/language/version2/functions/products.rb +80 -0
  100. data/lib/bel_parser/language/version2/functions/protein_abundance.rb +285 -0
  101. data/lib/bel_parser/language/version2/functions/protein_modification.rb +167 -0
  102. data/lib/bel_parser/language/version2/functions/reactants.rb +80 -0
  103. data/lib/bel_parser/language/version2/functions/reaction.rb +85 -0
  104. data/lib/bel_parser/language/version2/functions/rna_abundance.rb +195 -0
  105. data/lib/bel_parser/language/version2/functions/to_location.rb +85 -0
  106. data/lib/bel_parser/language/version2/functions/translocation.rb +90 -0
  107. data/lib/bel_parser/language/version2/functions/variant.rb +83 -0
  108. data/lib/bel_parser/language/version2/return_types/abundance.rb +20 -0
  109. data/lib/bel_parser/language/version2/return_types/activity.rb +20 -0
  110. data/lib/bel_parser/language/version2/return_types/any.rb +74 -0
  111. data/lib/bel_parser/language/version2/return_types/biological_process.rb +17 -0
  112. data/lib/bel_parser/language/version2/return_types/complex_abundance.rb +17 -0
  113. data/lib/bel_parser/language/version2/return_types/fragment.rb +20 -0
  114. data/lib/bel_parser/language/version2/return_types/from_location.rb +20 -0
  115. data/lib/bel_parser/language/version2/return_types/fusion.rb +17 -0
  116. data/lib/bel_parser/language/version2/return_types/gene_abundance.rb +17 -0
  117. data/lib/bel_parser/language/version2/return_types/list.rb +17 -0
  118. data/lib/bel_parser/language/version2/return_types/location.rb +20 -0
  119. data/lib/bel_parser/language/version2/return_types/micro_rna_abundance.rb +17 -0
  120. data/lib/bel_parser/language/version2/return_types/molecular_activity.rb +20 -0
  121. data/lib/bel_parser/language/version2/return_types/pathology.rb +17 -0
  122. data/lib/bel_parser/language/version2/return_types/products.rb +17 -0
  123. data/lib/bel_parser/language/version2/return_types/protein_abundance.rb +17 -0
  124. data/lib/bel_parser/language/version2/return_types/protein_modification.rb +17 -0
  125. data/lib/bel_parser/language/version2/return_types/reactants.rb +17 -0
  126. data/lib/bel_parser/language/version2/return_types/rna_abundance.rb +17 -0
  127. data/lib/bel_parser/language/version2/return_types/to_location.rb +20 -0
  128. data/lib/bel_parser/language/version2/return_types/variant.rb +20 -0
  129. data/lib/bel_parser/mixin/line_continuator.rb +15 -0
  130. data/lib/bel_parser/mixin/line_mapping.rb +14 -0
  131. data/lib/bel_parser/parser.rb +54 -0
  132. data/lib/bel_parser/parsers/ast/mapped_traversal.rb +36 -0
  133. data/lib/bel_parser/parsers/ast/node.rb +705 -0
  134. data/lib/bel_parser/parsers/ast/sexp.rb +8 -0
  135. data/lib/bel_parser/parsers/ast/traversal.rb +21 -0
  136. data/lib/bel_parser/parsers/bel_script.rb +4 -0
  137. data/lib/bel_parser/parsers/bel_script/define_annotation.rb +5476 -0
  138. data/lib/bel_parser/parsers/bel_script/define_annotation.rl +141 -0
  139. data/lib/bel_parser/parsers/bel_script/define_namespace.rb +1780 -0
  140. data/lib/bel_parser/parsers/bel_script/define_namespace.rl +121 -0
  141. data/lib/bel_parser/parsers/bel_script/set.rb +4556 -0
  142. data/lib/bel_parser/parsers/bel_script/set.rl +116 -0
  143. data/lib/bel_parser/parsers/bel_script/unset.rb +706 -0
  144. data/lib/bel_parser/parsers/bel_script/unset.rl +95 -0
  145. data/lib/bel_parser/parsers/common.rb +5 -0
  146. data/lib/bel_parser/parsers/common/blank_line.rb +211 -0
  147. data/lib/bel_parser/parsers/common/blank_line.rl +81 -0
  148. data/lib/bel_parser/parsers/common/comment_line.rb +245 -0
  149. data/lib/bel_parser/parsers/common/comment_line.rl +97 -0
  150. data/lib/bel_parser/parsers/common/common.rb +7 -0
  151. data/lib/bel_parser/parsers/common/common.rl +13 -0
  152. data/lib/bel_parser/parsers/common/identifier.rb +289 -0
  153. data/lib/bel_parser/parsers/common/identifier.rl +106 -0
  154. data/lib/bel_parser/parsers/common/list.rb +2142 -0
  155. data/lib/bel_parser/parsers/common/list.rl +144 -0
  156. data/lib/bel_parser/parsers/common/string.rb +271 -0
  157. data/lib/bel_parser/parsers/common/string.rl +107 -0
  158. data/lib/bel_parser/parsers/expression.rb +7 -0
  159. data/lib/bel_parser/parsers/expression/comment.rb +239 -0
  160. data/lib/bel_parser/parsers/expression/comment.rl +97 -0
  161. data/lib/bel_parser/parsers/expression/parameter.rb +1506 -0
  162. data/lib/bel_parser/parsers/expression/parameter.rl +97 -0
  163. data/lib/bel_parser/parsers/expression/relationship.rb +254 -0
  164. data/lib/bel_parser/parsers/expression/relationship.rl +98 -0
  165. data/lib/bel_parser/parsers/expression/statement_nested.rb +17802 -0
  166. data/lib/bel_parser/parsers/expression/statement_nested.rl +141 -0
  167. data/lib/bel_parser/parsers/expression/statement_observed_term.rb +7291 -0
  168. data/lib/bel_parser/parsers/expression/statement_observed_term.rl +92 -0
  169. data/lib/bel_parser/parsers/expression/statement_simple.rb +10475 -0
  170. data/lib/bel_parser/parsers/expression/statement_simple.rl +112 -0
  171. data/lib/bel_parser/parsers/expression/term.rb +3989 -0
  172. data/lib/bel_parser/parsers/expression/term.rl +157 -0
  173. data/lib/bel_parser/parsers/line_parser.rb +92 -0
  174. data/lib/bel_parser/parsers/mixin/buffer.rb +10 -0
  175. data/lib/bel_parser/parsers/nonblocking_io_wrapper.rb +50 -0
  176. data/lib/bel_parser/script/parser.rb +49 -0
  177. data/lib/bel_parser/vendor/ast.rb +17 -0
  178. data/lib/bel_parser/vendor/ast/node.rb +254 -0
  179. data/lib/bel_parser/vendor/ast/processor.rb +12 -0
  180. data/lib/bel_parser/vendor/ast/processor/mixin.rb +282 -0
  181. data/lib/bel_parser/vendor/ast/sexp.rb +30 -0
  182. metadata +226 -0
@@ -0,0 +1,85 @@
1
+ require_relative '../../version1'
2
+ require_relative '../../function'
3
+ require_relative '../../signature'
4
+ require_relative '../../semantic_ast'
5
+
6
+ module BELParser
7
+ module Language
8
+ module Version2
9
+ module Functions
10
+ # ToLocation: Denotes the to cellular location of the abundance.
11
+ class ToLocation
12
+ extend Function
13
+
14
+ SHORT = :toLoc
15
+ LONG = :toLocation
16
+ RETURN_TYPE = BELParser::Language::Version2::ReturnTypes::ToLocation
17
+ DESCRIPTION = 'Denotes the to cellular location of the abundance.'.freeze
18
+
19
+ def self.short
20
+ SHORT
21
+ end
22
+
23
+ def self.long
24
+ LONG
25
+ end
26
+
27
+ def self.return_type
28
+ RETURN_TYPE
29
+ end
30
+
31
+ def self.description
32
+ DESCRIPTION
33
+ end
34
+
35
+ def self.signatures
36
+ SIGNATURES
37
+ end
38
+
39
+ module Signatures
40
+
41
+ class ToLocationSignature
42
+ extend BELParser::Language::Signature
43
+
44
+ private_class_method :new
45
+
46
+ AST = BELParser::Language::Semantics::Builder.build do
47
+ term(
48
+ function(
49
+ identifier(
50
+ function_of(ToLocation))),
51
+ argument(
52
+ parameter(
53
+ prefix(
54
+ identifier(
55
+ has_namespace,
56
+ namespace_of(:*))),
57
+ value(
58
+ value_type(
59
+ has_encoding,
60
+ encoding_of(:Location))))))
61
+ end
62
+ private_constant :AST
63
+
64
+ STRING_FORM = 'toLocation(E:location)toLocation'.freeze
65
+ private_constant :STRING_FORM
66
+
67
+ def self.semantic_ast
68
+ AST
69
+ end
70
+
71
+ def self.string_form
72
+ STRING_FORM
73
+ end
74
+ end
75
+
76
+ end
77
+
78
+ SIGNATURES = Signatures.constants.map do |const|
79
+ Signatures.const_get(const)
80
+ end.freeze
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,90 @@
1
+ require_relative '../../version1'
2
+ require_relative '../../function'
3
+ require_relative '../../signature'
4
+ require_relative '../../semantic_ast'
5
+
6
+ module BELParser
7
+ module Language
8
+ module Version2
9
+ module Functions
10
+ # Translocation: Denotes the frequency or abundance of events in which members move between locations
11
+ class Translocation
12
+ extend Function
13
+
14
+ SHORT = :tloc
15
+ LONG = :translocation
16
+ RETURN_TYPE = BELParser::Language::Version2::ReturnTypes::Abundance
17
+ DESCRIPTION = 'Denotes the frequency or abundance of events in which members move between locations'.freeze
18
+
19
+ def self.short
20
+ SHORT
21
+ end
22
+
23
+ def self.long
24
+ LONG
25
+ end
26
+
27
+ def self.return_type
28
+ RETURN_TYPE
29
+ end
30
+
31
+ def self.description
32
+ DESCRIPTION
33
+ end
34
+
35
+ def self.signatures
36
+ SIGNATURES
37
+ end
38
+
39
+ module Signatures
40
+
41
+ class Translocation
42
+ extend BELParser::Language::Signature
43
+
44
+ private_class_method :new
45
+
46
+ AST = BELParser::Language::Semantics::Builder.build do
47
+ term(
48
+ function(
49
+ identifier(
50
+ function_of(Translocation))),
51
+ argument(
52
+ term(
53
+ function(
54
+ identifier(
55
+ return_type_of(BELParser::Language::Version2::ReturnTypes::Abundance))))),
56
+ argument(
57
+ term(
58
+ function(
59
+ identifier(
60
+ return_type_of(BELParser::Language::Version2::ReturnTypes::FromLocation))))),
61
+ argument(
62
+ term(
63
+ function(
64
+ identifier(
65
+ return_type_of(BELParser::Language::Version2::ReturnTypes::ToLocation))))))
66
+ end
67
+ private_constant :AST
68
+
69
+ STRING_FORM = 'translocation(F:abundance,F:fromLocation,F:toLocation)abundance'.freeze
70
+ private_constant :STRING_FORM
71
+
72
+ def self.semantic_ast
73
+ AST
74
+ end
75
+
76
+ def self.string_form
77
+ STRING_FORM
78
+ end
79
+ end
80
+
81
+ end
82
+
83
+ SIGNATURES = Signatures.constants.map do |const|
84
+ Signatures.const_get(const)
85
+ end.freeze
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,83 @@
1
+ require_relative '../../version1'
2
+ require_relative '../../function'
3
+ require_relative '../../signature'
4
+ require_relative '../../semantic_ast'
5
+
6
+ module BELParser
7
+ module Language
8
+ module Version2
9
+ module Functions
10
+ # Variant: Denotes a sequence variant of the specified abundance.
11
+ class Variant
12
+ extend Function
13
+
14
+ SHORT = :var
15
+ LONG = :variant
16
+ RETURN_TYPE = BELParser::Language::Version2::ReturnTypes::Variant
17
+ DESCRIPTION = 'Denotes a sequence variant of the specified abundance.'.freeze
18
+
19
+ def self.short
20
+ SHORT
21
+ end
22
+
23
+ def self.long
24
+ LONG
25
+ end
26
+
27
+ def self.return_type
28
+ RETURN_TYPE
29
+ end
30
+
31
+ def self.description
32
+ DESCRIPTION
33
+ end
34
+
35
+ def self.signatures
36
+ SIGNATURES
37
+ end
38
+
39
+ module Signatures
40
+
41
+ class VariantSignature
42
+ extend BELParser::Language::Signature
43
+
44
+ private_class_method :new
45
+
46
+ # TODO: More strict prefix validation for variant namespace?
47
+ AST = BELParser::Language::Semantics::Builder.build do
48
+ term(
49
+ function(
50
+ identifier(
51
+ function_of(Variant))),
52
+ argument(
53
+ parameter(
54
+ prefix(any),
55
+ value(
56
+ value_type(
57
+ has_encoding,
58
+ encoding_of(:HgvsVariantDescription))))))
59
+ end
60
+ private_constant :AST
61
+
62
+ STRING_FORM = 'variant(E:hgvsVariantDescription)variant'.freeze
63
+ private_constant :STRING_FORM
64
+
65
+ def self.semantic_ast
66
+ AST
67
+ end
68
+
69
+ def self.string_form
70
+ STRING_FORM
71
+ end
72
+ end
73
+
74
+ end
75
+
76
+ SIGNATURES = Signatures.constants.map do |const|
77
+ Signatures.const_get(const)
78
+ end.freeze
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'any'
2
+
3
+ module BELParser
4
+ module Language
5
+ module Version2
6
+ module ReturnTypes
7
+ # Abundance return type.
8
+ class Abundance < Any
9
+ # Return the {Symbol} value.
10
+ #
11
+ # @note This method should be overridden in subclasses.
12
+ def self.to_sym
13
+ raise_not_implemented(__method__) if self != Abundance
14
+ :abundance
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'any'
2
+
3
+ module BELParser
4
+ module Language
5
+ module Version2
6
+ module ReturnTypes
7
+ # Activity return type.
8
+ class Activity < Any
9
+ # Return the {Symbol} value.
10
+ #
11
+ # @note This method should be overridden in subclasses.
12
+ def self.to_sym
13
+ raise_not_implemented(__method__) if self != Activity
14
+ :activity
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,74 @@
1
+ require 'English'
2
+
3
+ module BELParser
4
+ module Language
5
+ module Version2
6
+ module ReturnTypes
7
+ # The any type.
8
+ class Any
9
+ # Return the {Symbol} value.
10
+ #
11
+ # @note This method should be overridden in subclasses.
12
+ def self.to_sym
13
+ raise_not_implemented(__method__) if self != Any
14
+ :*
15
+ end
16
+
17
+ # Returns +true+ if I am a subtype of +other_return_type+; otherwise
18
+ # return +false+.
19
+ #
20
+ # @param [Class] other_return_type to compare to
21
+ # @return [Boolean] +true+ if I am a subtype; +false+ if not
22
+ def self.subtype_of?(other_return_type)
23
+ self <= other_return_type
24
+ end
25
+
26
+ # Retrieve my immediate subtypes.
27
+ #
28
+ # @return [Array<Class>] my immediate subtypes
29
+ def self.subtypes
30
+ (@subtypes ||= []).freeze
31
+ end
32
+
33
+ # Retrieve my transitive subtypes.
34
+ #
35
+ # @return [Array<Class>] my transitive subtypes
36
+ def self.transitive_subtypes
37
+ transitive_subtypes =
38
+ (@subtypes ||= []).flat_map do |subtype|
39
+ [subtype, subtype.subtypes]
40
+ end.flatten
41
+ transitive_subtypes << self
42
+ transitive_subtypes.freeze
43
+ end
44
+
45
+ # Inherited hook overridden to keep track of descendants. This method
46
+ # is inherited by all descendants.
47
+ #
48
+ # @param [Class] cls the subclass that is inheriting me
49
+ # @see .subtypes
50
+ def self.inherited(cls)
51
+ (@subtypes ||= []) << cls
52
+ end
53
+ private_class_method
54
+
55
+ # Raise {NotImplementedError} for +method+. Alters the exception
56
+ # backtrace to exclude this method.
57
+ #
58
+ # @param [#to_s] the method name
59
+ # @raise [NotImplementedError] for +method+
60
+ def self.raise_not_implemented(method)
61
+ msg = "#{name} must implement the #{method} method"
62
+ raise NotImplementedError, msg
63
+ rescue StandardError
64
+ raise(
65
+ $ERROR_INFO.class,
66
+ $ERROR_INFO.message,
67
+ $ERROR_INFO.backtrace[1..-1])
68
+ end
69
+ private_class_method
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,17 @@
1
+ require_relative 'any'
2
+
3
+ module BELParser
4
+ module Language
5
+ module Version2
6
+ module ReturnTypes
7
+ # Biological process return type.
8
+ class BiologicalProcess < Any
9
+ def self.to_sym
10
+ raise_not_implemented(__method__) if self != BiologicalProcess
11
+ :biologicalProcess
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require_relative 'abundance'
2
+
3
+ module BELParser
4
+ module Language
5
+ module Version2
6
+ module ReturnTypes
7
+ # Complex abundance return type.
8
+ class ComplexAbundance < Abundance
9
+ def self.to_sym
10
+ raise_not_implemented(__method__) if self != ComplexAbundance
11
+ :complexAbundance
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'any'
2
+
3
+ module BELParser
4
+ module Language
5
+ module Version2
6
+ module ReturnTypes
7
+ # Fragment return type.
8
+ class Fragment < Any
9
+ # Return the {Symbol} value.
10
+ #
11
+ # @note This method should be overridden in subclasses.
12
+ def self.to_sym
13
+ raise_not_implemented(__method__) if self != Fragment
14
+ :fragment
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require_relative 'location'
2
+
3
+ module BELParser
4
+ module Language
5
+ module Version2
6
+ module ReturnTypes
7
+ # FromLocation return type.
8
+ class FromLocation < Location
9
+ # Return the {Symbol} value.
10
+ #
11
+ # @note This method should be overridden in subclasses.
12
+ def self.to_sym
13
+ raise_not_implemented(__method__) if self != FromLocation
14
+ :fromLocation
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end