mumukit-core 1.16.0 → 1.17.0
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.
- checksums.yaml +4 -4
 - data/lib/mumukit/core.rb +16 -0
 - data/lib/mumukit/core/class.rb +8 -0
 - data/lib/mumukit/core/module.rb +22 -0
 - data/lib/mumukit/core/status.rb +1 -1
 - data/lib/mumukit/core/version.rb +1 -1
 - metadata +5 -4
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: e155445df55585a847f88773beee7cc43efcb8da5d20e400c4151f25d4843538
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 36bdd8bf00c694e8e54bc9205a3b01168e6bdb54308d5a96f9ffdd0a9868d17f
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 7868ff5fac67e2aca6e2d07699083bccb83ab5cc2c7a0912e34b73f4936a557c65db1cb5051e555c780e6470b73c81be61365e63ac344621d6c346ba7ed803d0
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: c0e664b65c2fc9f8f789f831982f44affa800c6edeaf593224236aaad4594bae0d08799ea4bb109febf07530e314115c991eea3b0534b85af54ce346ff78027e
         
     | 
    
        data/lib/mumukit/core.rb
    CHANGED
    
    | 
         @@ -3,12 +3,28 @@ require 'active_support/all' 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            module Mumukit
         
     | 
| 
       5 
5 
     | 
    
         
             
              module Core
         
     | 
| 
      
 6 
     | 
    
         
            +
                class << self
         
     | 
| 
      
 7 
     | 
    
         
            +
                  def test_mode!
         
     | 
| 
      
 8 
     | 
    
         
            +
                    Class.class_eval do
         
     | 
| 
      
 9 
     | 
    
         
            +
                      break if method_defined? :__mumukit_core_contract_new__
         
     | 
| 
      
 10 
     | 
    
         
            +
                      alias_method :__mumukit_core_contract_new__, :new
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                      def new(*args, &block)
         
     | 
| 
      
 13 
     | 
    
         
            +
                        validate_complies_with_contract!
         
     | 
| 
      
 14 
     | 
    
         
            +
                        __mumukit_core_contract_new__(*args, &block)
         
     | 
| 
      
 15 
     | 
    
         
            +
                      end
         
     | 
| 
      
 16 
     | 
    
         
            +
                    end
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
       6 
19 
     | 
    
         
             
              end
         
     | 
| 
       7 
20 
     | 
    
         
             
            end
         
     | 
| 
       8 
21 
     | 
    
         | 
| 
      
 22 
     | 
    
         
            +
            Mumukit::Core.test_mode! if %w(RACK_ENV RAILS_ENV).any? { |it| ENV[it] == 'test' }
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
       9 
24 
     | 
    
         
             
            require_relative './core/status'
         
     | 
| 
       10 
25 
     | 
    
         
             
            require_relative './core/object'
         
     | 
| 
       11 
26 
     | 
    
         
             
            require_relative './core/module'
         
     | 
| 
      
 27 
     | 
    
         
            +
            require_relative './core/class'
         
     | 
| 
       12 
28 
     | 
    
         
             
            require_relative './core/json'
         
     | 
| 
       13 
29 
     | 
    
         
             
            require_relative './core/hash'
         
     | 
| 
       14 
30 
     | 
    
         
             
            require_relative './core/string'
         
     | 
    
        data/lib/mumukit/core/module.rb
    CHANGED
    
    | 
         @@ -93,4 +93,26 @@ class Module 
     | 
|
| 
       93 
93 
     | 
    
         
             
                raise "method #{selector} was not previously defined here" unless method_defined?(selector)
         
     | 
| 
       94 
94 
     | 
    
         
             
                define_method selector, &block
         
     | 
| 
       95 
95 
     | 
    
         
             
              end
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
              def contract
         
     | 
| 
      
 98 
     | 
    
         
            +
                @contract ||= []
         
     | 
| 
      
 99 
     | 
    
         
            +
              end
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
              attr_writer :contract
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
              def implements(*selectors)
         
     | 
| 
      
 104 
     | 
    
         
            +
                self.contract += selectors
         
     | 
| 
      
 105 
     | 
    
         
            +
              end
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
              def full_contract
         
     | 
| 
      
 108 
     | 
    
         
            +
                ancestors.flat_map(&:contract).uniq
         
     | 
| 
      
 109 
     | 
    
         
            +
              end
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
              def breaches_contract?
         
     | 
| 
      
 112 
     | 
    
         
            +
                !contract_breaches.empty?
         
     | 
| 
      
 113 
     | 
    
         
            +
              end
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
              def contract_breaches
         
     | 
| 
      
 116 
     | 
    
         
            +
                full_contract.reject { |it| method_defined? it }
         
     | 
| 
      
 117 
     | 
    
         
            +
              end
         
     | 
| 
       96 
118 
     | 
    
         
             
            end
         
     | 
    
        data/lib/mumukit/core/status.rb
    CHANGED
    
    
    
        data/lib/mumukit/core/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: mumukit-core
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.17.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Franco Leonardo Bulgarelli
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-04-06 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -16,14 +16,14 @@ dependencies: 
     | 
|
| 
       16 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
17 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       18 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '2.0'
         
     | 
| 
       20 
20 
     | 
    
         
             
              type: :development
         
     | 
| 
       21 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       22 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
24 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '2.0'
         
     | 
| 
       27 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
28 
     | 
    
         
             
              name: rake
         
     | 
| 
       29 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -148,6 +148,7 @@ files: 
     | 
|
| 
       148 
148 
     | 
    
         
             
            - lib/mumukit/core.rb
         
     | 
| 
       149 
149 
     | 
    
         
             
            - lib/mumukit/core/activemodel.rb
         
     | 
| 
       150 
150 
     | 
    
         
             
            - lib/mumukit/core/array.rb
         
     | 
| 
      
 151 
     | 
    
         
            +
            - lib/mumukit/core/class.rb
         
     | 
| 
       151 
152 
     | 
    
         
             
            - lib/mumukit/core/configurable.rb
         
     | 
| 
       152 
153 
     | 
    
         
             
            - lib/mumukit/core/file.rb
         
     | 
| 
       153 
154 
     | 
    
         
             
            - lib/mumukit/core/hash.rb
         
     |