Runtime assertions for Ruby literal.fun
ruby
5
fork

Configure Feed

Select the types of activity you want to include in your feed.

Use methods to compose types

+43 -39
+43 -39
lib/literal/types.rb
··· 1 1 # frozen_string_literal: true 2 2 3 3 module Literal::Types 4 + extend self 5 + 4 6 autoload :AnyType, "literal/types/any_type" 5 7 autoload :ArrayType, "literal/types/array_type" 6 8 autoload :BooleanType, "literal/types/boolean_type" ··· 26 28 autoload :UnionType, "literal/types/union_type" 27 29 autoload :VoidType, "literal/types/void_type" 28 30 29 - ProcableType = InterfaceType.new(:to_proc).freeze 30 - CallableType = InterfaceType.new(:call).freeze 31 - LambdaType = ConstraintType.new(Proc, lambda?: true).freeze 32 - 33 - NilableBooleanType = NilableType.new(BooleanType::Instance).freeze 34 - NilableCallableType = NilableType.new(CallableType).freeze 35 - NilableJSONDataType = NilableType.new(JSONDataType).freeze 36 - NilableLambdaType = NilableType.new(LambdaType).freeze 37 - NilableProcableType = NilableType.new(ProcableType).freeze 38 - 39 31 # Matches any value except `nil`. Use `_Any?` or `_Void` to match any value including `nil`. 40 32 # ```ruby 41 33 # _Any ··· 65 57 # _Array?(String) 66 58 # ``` 67 59 def _Array?(type) 68 - NilableType.new( 69 - ArrayType.new(type) 60 + _Nilable( 61 + _Array(type) 70 62 ) 71 63 end 72 64 ··· 115 107 # _Class?(ActiveRecord::Base) 116 108 # ``` 117 109 def _Class?(...) 118 - NilableType.new( 119 - ClassType.new(...) 110 + _Nilable( 111 + _Class(...) 120 112 ) 121 113 end 122 114 ··· 133 125 # _Constraint?(Array, size: 1..3) 134 126 # ``` 135 127 def _Constraint?(...) 136 - NilableType.new( 137 - ConstraintType.new(...) 128 + _Nilable( 129 + _Constraint(...) 138 130 ) 139 131 end 140 132 ··· 165 157 166 158 # Nilable version of `_Deferred`. 167 159 def _Deferred?(&type) 168 - _Nilable(_Deferred(&type)) 160 + _Nilable( 161 + _Deferred(&type) 162 + ) 169 163 end 170 164 171 165 # Matches if the value is a descendant of the given class. ··· 178 172 179 173 # Nilable version of `_Descendant`. 180 174 def _Descendant?(...) 181 - NilableType.new( 182 - DescendantType.new(...) 175 + _Nilable( 176 + _Descendant(...) 183 177 ) 184 178 end 185 179 ··· 193 187 194 188 # Nilable version of `_Enumerable`. 195 189 def _Enumerable?(...) 196 - NilableType.new( 197 - EnumerableType.new(...) 190 + _Nilable( 191 + _Enumerable(...) 198 192 ) 199 193 end 200 194 ··· 227 221 228 222 # Nilable version of `_Frozen` 229 223 def _Frozen?(...) 230 - NilableType.new( 231 - FrozenType.new(...) 224 + _Nilable( 225 + _Frozen(...) 232 226 ) 233 227 end 234 228 ··· 239 233 240 234 # Nilable version of `_Hash` 241 235 def _Hash?(...) 242 - NilableType.new( 243 - HashType.new(...) 236 + _Nilable( 237 + _Hash(...) 244 238 ) 245 239 end 246 240 ··· 267 261 268 262 # Nilable version of `_Interface` 269 263 def _Interface?(...) 270 - NilableType.new( 271 - InterfaceType.new(...) 264 + _Nilable( 265 + _Interface(...) 272 266 ) 273 267 end 274 268 ··· 279 273 280 274 # Nilable version of `_Intersection` 281 275 def _Intersection?(...) 282 - NilableType.new( 283 - IntersectionType.new(...) 276 + _Nilable( 277 + _Intersection(...) 284 278 ) 285 279 end 286 280 ··· 316 310 # _Map?(name: String, age: Integer) 317 311 # ``` 318 312 def _Map?(...) 319 - NilableType.new( 320 - MapType.new(...) 313 + _Nilable( 314 + _Map(...) 321 315 ) 322 316 end 323 317 ··· 358 352 359 353 # Nilable version of `_Range` 360 354 def _Range?(...) 361 - NilableType.new( 362 - RangeType.new(...) 355 + _Nilable( 356 + _Range(...) 363 357 ) 364 358 end 365 359 ··· 370 364 371 365 # Nilable version of `_Set` 372 366 def _Set?(...) 373 - NilableType.new( 374 - SetType.new(...) 367 + _Nilable( 368 + _Set(...) 375 369 ) 376 370 end 377 371 ··· 431 425 # _Tuple?(String, Integer, Integer) 432 426 # ``` 433 427 def _Tuple?(...) 434 - NilableType.new( 435 - TupleType.new(...) 428 + _Nilable( 429 + _Tuple(...) 436 430 ) 437 431 end 438 432 ··· 443 437 444 438 # Nilable version of `_Union` 445 439 def _Union?(...) 446 - NilableType.new( 447 - UnionType.new(...) 440 + _Nilable( 441 + _Union(...) 448 442 ) 449 443 end 450 444 451 445 def _Void 452 446 VoidType::Instance 453 447 end 448 + 449 + ProcableType = _Interface(:to_proc) 450 + CallableType = _Interface(:call) 451 + LambdaType = _Constraint(Proc, lambda?: true) 452 + 453 + NilableBooleanType = _Nilable(BooleanType::Instance) 454 + NilableCallableType = _Nilable(CallableType) 455 + NilableJSONDataType = _Nilable(JSONDataType) 456 + NilableLambdaType = _Nilable(LambdaType) 457 + NilableProcableType = _Nilable(ProcableType) 454 458 end