mumukit-core 1.16.0 → 1.17.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|