Runtime assertions for Ruby literal.fun
ruby
5
fork

Configure Feed

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

Switch to Zeitwerk for code loading (#305)

Closes #304

authored by

Joel Drapper and committed by
GitHub
1ec5382f 0ee6e62a

+44 -84
+11 -25
lib/literal.rb
··· 1 1 # frozen_string_literal: true 2 2 3 + require "zeitwerk" 4 + require_relative "literal/version" 5 + 3 6 module Literal 4 - autoload :Array, "literal/array" 5 - autoload :Data, "literal/data" 6 - autoload :DataProperty, "literal/data_property" 7 - autoload :DataStructure, "literal/data_structure" 8 - autoload :Enum, "literal/enum" 9 - autoload :Flags, "literal/flags" 10 - autoload :Flags16, "literal/flags" 11 - autoload :Flags32, "literal/flags" 12 - autoload :Flags64, "literal/flags" 13 - autoload :Flags8, "literal/flags" 14 - autoload :Hash, "literal/hash" 15 - autoload :Null, "literal/null" 16 - autoload :Object, "literal/object" 17 - autoload :Properties, "literal/properties" 18 - autoload :Property, "literal/property" 19 - autoload :Set, "literal/set" 20 - autoload :Struct, "literal/struct" 21 - autoload :Type, "literal/type" 22 - autoload :Types, "literal/types" 23 - autoload :Tuple, "literal/tuple" 7 + Loader = Zeitwerk::Loader.for_gem.tap do |loader| 8 + loader.inflector.inflect( 9 + "json_data_type" => "JSONDataType" 10 + ) 24 11 25 - # Errors 26 - autoload :Error, "literal/errors/error" 27 - autoload :TypeError, "literal/errors/type_error" 28 - autoload :ArgumentError, "literal/errors/argument_error" 12 + loader.collapse("#{__dir__}/literal/flags") 13 + loader.collapse("#{__dir__}/literal/errors") 29 14 30 - autoload :TRANSFORMS, "literal/transforms" 15 + loader.setup 16 + end 31 17 32 18 def self.Enum(type) 33 19 Class.new(Literal::Enum) do
+1 -1
lib/literal/array.rb
··· 344 344 345 345 def map(type, &block) 346 346 my_type = @__type__ 347 - transform_type = Literal::TRANSFORMS.dig(my_type, block) 347 + transform_type = Literal::Transforms.dig(my_type, block) 348 348 349 349 if transform_type && Literal.subtype?(transform_type, of: my_type) 350 350 Literal::Array.allocate.__initialize_without_check__(
lib/literal/deferred_type.rb lib/literal/types/deferred_type.rb
-24
lib/literal/flags.rb
··· 219 219 2 ** self.class::FLAGS.fetch(key) 220 220 end 221 221 end 222 - 223 - class Literal::Flags8 < Literal::Flags 224 - BYTES = 1 225 - BITS = BYTES * 8 226 - PACKER = "C" 227 - end 228 - 229 - class Literal::Flags16 < Literal::Flags 230 - BYTES = 2 231 - BITS = BYTES * 8 232 - PACKER = "S" 233 - end 234 - 235 - class Literal::Flags32 < Literal::Flags 236 - BYTES = 4 237 - BITS = BYTES * 8 238 - PACKER = "L" 239 - end 240 - 241 - class Literal::Flags64 < Literal::Flags 242 - BYTES = 8 243 - BITS = BYTES * 8 244 - PACKER = "Q" 245 - end
+7
lib/literal/flags/flags_16.rb
··· 1 + # frozen_string_literal: true 2 + 3 + class Literal::Flags16 < Literal::Flags 4 + BYTES = 2 5 + BITS = BYTES * 8 6 + PACKER = "S" 7 + end
+7
lib/literal/flags/flags_32.rb
··· 1 + # frozen_string_literal: true 2 + 3 + class Literal::Flags32 < Literal::Flags 4 + BYTES = 4 5 + BITS = BYTES * 8 6 + PACKER = "L" 7 + end
+7
lib/literal/flags/flags_64.rb
··· 1 + # frozen_string_literal: true 2 + 3 + class Literal::Flags64 < Literal::Flags 4 + BYTES = 8 5 + BITS = BYTES * 8 6 + PACKER = "Q" 7 + end
+7
lib/literal/flags/flags_8.rb
··· 1 + # frozen_string_literal: true 2 + 3 + class Literal::Flags8 < Literal::Flags 4 + BYTES = 1 5 + BITS = BYTES * 8 6 + PACKER = "C" 7 + end
-3
lib/literal/properties.rb
··· 1 1 # frozen_string_literal: true 2 2 3 3 module Literal::Properties 4 - autoload :Schema, "literal/properties/schema" 5 - autoload :DataSchema, "literal/properties/data_schema" 6 - 7 4 include Literal::Types 8 5 9 6 module DocString
-3
lib/literal/rails.rb
··· 4 4 require_relative "rails/patches/active_record" 5 5 6 6 module Literal::Rails 7 - autoload :EnumType, "literal/rails/enum_type" 8 - autoload :FlagsType, "literal/rails/flags_type" 9 - autoload :EnumSerializer, "literal/rails/enum_serializer" 10 7 end
+1 -1
lib/literal/transforms.rb
··· 1 1 # frozen_string_literal: true 2 2 3 3 # A map of core types to transform Procs mapping to the new type. 4 - Literal::TRANSFORMS = { 4 + Literal::Transforms = { 5 5 Integer => { 6 6 abs: Integer, 7 7 ceil: Integer,
-26
lib/literal/types.rb
··· 3 3 module Literal::Types 4 4 extend self 5 5 6 - autoload :AnyType, "literal/types/any_type" 7 - autoload :ArrayType, "literal/types/array_type" 8 - autoload :BooleanType, "literal/types/boolean_type" 9 - autoload :ClassType, "literal/types/class_type" 10 - autoload :ConstraintType, "literal/types/constraint_type" 11 - autoload :DeferredType, "literal/deferred_type" 12 - autoload :DescendantType, "literal/types/descendant_type" 13 - autoload :EnumerableType, "literal/types/enumerable_type" 14 - autoload :FalsyType, "literal/types/falsy_type" 15 - autoload :FrozenType, "literal/types/frozen_type" 16 - autoload :HashType, "literal/types/hash_type" 17 - autoload :InterfaceType, "literal/types/interface_type" 18 - autoload :IntersectionType, "literal/types/intersection_type" 19 - autoload :JSONDataType, "literal/types/json_data_type" 20 - autoload :MapType, "literal/types/map_type" 21 - autoload :NeverType, "literal/types/never_type" 22 - autoload :NilableType, "literal/types/nilable_type" 23 - autoload :NotType, "literal/types/not_type" 24 - autoload :PredicateType, "literal/types/predicate_type" 25 - autoload :RangeType, "literal/types/range_type" 26 - autoload :SetType, "literal/types/set_type" 27 - autoload :TruthyType, "literal/types/truthy_type" 28 - autoload :TupleType, "literal/types/tuple_type" 29 - autoload :UnionType, "literal/types/union_type" 30 - autoload :VoidType, "literal/types/void_type" 31 - 32 6 # Matches any value except `nil`. Use `_Any?` or `_Void` to match any value including `nil`. 33 7 # ```ruby 34 8 # _Any
+2
literal.gemspec
··· 27 27 28 28 spec.require_paths = ["lib"] 29 29 30 + spec.add_runtime_dependency "zeitwerk" 31 + 30 32 spec.metadata["rubygems_mfa_required"] = "true" 31 33 end
+1 -1
test/transforms.test.rb
··· 45 45 ], 46 46 } 47 47 48 - Literal::TRANSFORMS.each do |type, transforms| 48 + Literal::Transforms.each do |type, transforms| 49 49 transforms.each do |method, new_type| 50 50 test "#{type}.#{method} transforms to #{new_type}" do 51 51 examples = EXAMPLES.fetch(type)