Runtime assertions for Ruby literal.fun
ruby
5
fork

Configure Feed

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

Remove literal method

+1 -94
+1 -2
lib/literal.rb
··· 11 11 autoload :Data, "literal/data" 12 12 autoload :Enum, "literal/enum" 13 13 autoload :Formatter, "literal/formatter" 14 - autoload :Method, "literal/method" 15 14 autoload :Singleton, "literal/singleton" 16 15 autoload :Struct, "literal/struct" 17 16 autoload :Structish, "literal/structish" ··· 20 19 autoload :Null, "literal/null" 21 20 22 21 # Errors 23 - autoload :TypeError, "literal/errors/type_error" 24 22 autoload :Error, "literal/errors/error" 23 + autoload :TypeError, "literal/errors/type_error" 25 24 end
-92
lib/literal/method.rb
··· 1 - # frozen_string_literal: true 2 - 3 - #  @api private 4 - class Literal::Method 5 - def initialize(name, object_class) 6 - @name = name 7 - @object_class = object_class 8 - 9 - @method = @object_class.instance_method(@name) 10 - @parameters = @method.parameters.map(&:first) 11 - 12 - @rest = @parameters.include?(:rest) 13 - @keyrest = @parameters.include?(:keyrest) 14 - 15 - @number_of_required_positional_parameters = @parameters.count(:req) 16 - @number_of_optional_positional_parameters = @parameters.count(:opt) 17 - 18 - @number_of_required_keyword_parameters = @parameters.count(:keyreq) 19 - @number_of_optional_keyword_parameters = @parameters.count(:key) 20 - 21 - @visibility = if @object_class.public_instance_methods.include?(name) 22 - :public 23 - elsif @object_class.protected_instance_methods.include?(name) 24 - :protected 25 - else 26 - :private 27 - end 28 - end 29 - 30 - attr_reader :name, 31 - :object_class, 32 - :method, 33 - :parameters, 34 - :rest, 35 - :keyrest, 36 - :number_of_required_positional_parameters, 37 - :number_of_optional_positional_parameters, 38 - :number_of_required_keyword_parameters, 39 - :number_of_optional_keyword_parameters, 40 - :visibility 41 - 42 - alias_method :rest?, :rest 43 - alias_method :keyrest?, :keyrest 44 - 45 - def ==(other) 46 - @method == other.method 47 - end 48 - 49 - def <(other) 50 - self != other && 51 - positional_parameters_match?(other) && 52 - keyword_parameters_match?(other) && 53 - visibility_match?(other) 54 - end 55 - 56 - def number_of_positional_parameters 57 - @number_of_required_positional_parameters + @number_of_optional_positional_parameters 58 - end 59 - 60 - def number_of_keyword_parameters 61 - @number_of_required_keyword_parameters + @number_of_optional_keyword_parameters 62 - end 63 - 64 - private 65 - 66 - def positional_parameters_match?(other) 67 - number_of_required_positional_parameters <= other.number_of_required_positional_parameters && ( 68 - rest? || (!other.rest? && ( 69 - number_of_positional_parameters >= other.number_of_positional_parameters 70 - )) 71 - ) 72 - end 73 - 74 - def keyword_parameters_match?(other) 75 - number_of_required_keyword_parameters <= other.number_of_required_keyword_parameters && ( 76 - keyrest? || (!other.keyrest? && ( 77 - number_of_keyword_parameters >= other.number_of_keyword_parameters 78 - )) 79 - ) 80 - end 81 - 82 - def visibility_match?(other) 83 - case other.visibility 84 - when :public 85 - visibility == :public 86 - when :protected 87 - visibility == :public || visibility == :protected 88 - else 89 - true 90 - end 91 - end 92 - end