duckface-interfaces 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 91741dbb1648b476dafbc5faafe831caef36726f
4
- data.tar.gz: 333f3d74a4d3009b19b78cc5375f8885dc421dc9
3
+ metadata.gz: 30396b46a38049271ab9ed210b927668e994da99
4
+ data.tar.gz: 56d6a155fde25658a4e7cb1a735b0d74a6efbce2
5
5
  SHA512:
6
- metadata.gz: f1a3bf5007f37d2110189266e20706f855802cbfa3612f31a328451f054308d3aa6078d4d5b5f81a86f2bea5ddea528b20c2a7a85dc3ed3757bbfc5e0bb03338
7
- data.tar.gz: 4bd4224adc8af55a7f5b95258d12ae9e9c60c91060992d18d7abb9f0f78b7669382f96b6020ab0c178a690df15c09e0092aedf511b9b9e5b6617e7dac1ea62da
6
+ metadata.gz: 296f5f84390d8f29802e599678e7cd094e68dd0dd405deb91e0e081d526082ce0fa1be9b250530bdfb21d581056ab6455d1206d1686200f30982d7064a2102cd
7
+ data.tar.gz: 87bcbc634568b6dd6d4764be504f55752541fb6432d29d0aa6886a1540eac79fa30973954d10b979d7a6a71e2029122a89fafb519c68040c2acb8cdaeab99946
@@ -0,0 +1,57 @@
1
+ # Ruby CircleCI 2.0 configuration file
2
+ #
3
+ # Check https://circleci.com/docs/2.0/language-ruby/ for more details
4
+ #
5
+ version: 2
6
+ jobs:
7
+ build:
8
+ docker:
9
+ # specify the version you desire here
10
+ - image: circleci/ruby:2.4.4-node-browsers
11
+
12
+ # Specify service dependencies here if necessary
13
+ # CircleCI maintains a library of pre-built images
14
+ # documented at https://circleci.com/docs/2.0/circleci-images/
15
+ # - image: circleci/postgres:9.4
16
+
17
+ working_directory: ~/repo
18
+
19
+ steps:
20
+ - checkout
21
+
22
+ # Download and cache dependencies
23
+ - restore_cache:
24
+ keys:
25
+ - v1-dependencies-{{ checksum "Gemfile.lock" }}
26
+ # fallback to using the latest cache if no exact match is found
27
+ - v1-dependencies-
28
+
29
+ - run:
30
+ name: install dependencies
31
+ command: |
32
+ bundle install --jobs=4 --retry=3 --path vendor/bundle
33
+
34
+ - save_cache:
35
+ paths:
36
+ - ./vendor/bundle
37
+ key: v1-dependencies-{{ checksum "Gemfile.lock" }}
38
+
39
+ # run tests!
40
+ - run:
41
+ name: run tests
42
+ command: |
43
+ mkdir /tmp/test-results
44
+ TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
45
+
46
+ bundle exec rspec --format progress \
47
+ --format RspecJunitFormatter \
48
+ --out /tmp/test-results/rspec.xml \
49
+ --format progress \
50
+ $TEST_FILES
51
+
52
+ # collect reports
53
+ - store_test_results:
54
+ path: /tmp/test-results
55
+ - store_artifacts:
56
+ path: /tmp/test-results
57
+ destination: test-results
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ 0.0.2
2
+
3
+ * Add `Class.says_it_implements?` for quickly checking whether a class says it is implementing a given interface. This doesn't perform the full method/params checking that happens on `.check_it_implements`.
4
+ * Make `.check_it_implements` available on any class
5
+
1
6
  0.0.1
2
7
 
3
8
  * Initial release
data/Gemfile CHANGED
@@ -13,6 +13,7 @@ group :development, :test do
13
13
  gem 'rb-readline'
14
14
  gem 'reek'
15
15
  gem 'rspec'
16
+ gem 'rspec_junit_formatter'
16
17
  gem 'rubocop'
17
18
  gem 'rubocop-rspec'
18
19
  end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- duckface (0.0.1)
4
+ duckface-interfaces (0.0.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -105,6 +105,8 @@ GEM
105
105
  diff-lcs (>= 1.2.0, < 2.0)
106
106
  rspec-support (~> 3.6.0)
107
107
  rspec-support (3.6.0)
108
+ rspec_junit_formatter (0.4.1)
109
+ rspec-core (>= 2, < 4, != 2.12.0)
108
110
  rubocop (0.49.1)
109
111
  parallel (~> 1.10)
110
112
  parser (>= 2.3.3.1, < 3.0)
@@ -146,7 +148,7 @@ PLATFORMS
146
148
 
147
149
  DEPENDENCIES
148
150
  bundler (>= 1.13)
149
- duckface!
151
+ duckface-interfaces!
150
152
  guard-livereload
151
153
  guard-rspec
152
154
  pry-byebug
@@ -155,6 +157,7 @@ DEPENDENCIES
155
157
  rb-readline
156
158
  reek
157
159
  rspec
160
+ rspec_junit_formatter
158
161
  rubocop
159
162
  rubocop-rspec
160
163
  simplecov
data/README.md CHANGED
@@ -1,9 +1,21 @@
1
1
  ![duckface](https://user-images.githubusercontent.com/2643026/40590182-811ac3bc-61f2-11e8-814a-b235c51fd52c.jpg)
2
2
 
3
- # Duckface
3
+ # Duckface [![CircleCI](https://circleci.com/gh/samuelgiles/duckface.svg?style=svg)](https://circleci.com/gh/samuelgiles/duckface)
4
4
 
5
5
  A collection of tools to enforce duck typing based interfaces in Ruby.
6
6
 
7
+ ## Install
8
+
9
+ From gem:
10
+ ```
11
+ gem 'duckface-interfaces', require: 'duckface'
12
+ ```
13
+
14
+ From source:
15
+ ```
16
+ gem 'duckface-interfaces', require: 'duckface', git: 'git@github.com:samuelgiles/duckface.git'
17
+ ```
18
+
7
19
  ## Configure
8
20
 
9
21
  ### RSpec
@@ -5,5 +5,9 @@ module Duckface
5
5
  def check_it_implements(interface_class)
6
6
  Duckface::Services::CheckClassImplementsInterface.new(self, interface_class).perform
7
7
  end
8
+
9
+ def says_it_implements?(interface_class)
10
+ included_modules.include?(interface_class)
11
+ end
8
12
  end
9
13
  end
@@ -4,8 +4,16 @@ require 'duckface/services/check_class_implements_interface'
4
4
  require 'duckface/implementation_methods'
5
5
 
6
6
  module Duckface
7
- # Provides methods on any class for indicate usage of interfaces
7
+ # Provides methods on any class to indicate usage of interfaces
8
8
  module ObjectSugar
9
+ def check_it_implements(_interface_class)
10
+ false
11
+ end
12
+
13
+ def says_it_implements?(_interface_class)
14
+ false
15
+ end
16
+
9
17
  def implements_interface(interface_class)
10
18
  extend Duckface::ImplementationMethods
11
19
  include interface_class
@@ -13,4 +21,4 @@ module Duckface
13
21
  end
14
22
  end
15
23
 
16
- Object.extend(Duckface::ObjectSugar)
24
+ Class.include(Duckface::ObjectSugar)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Duckface
4
- VERSION = '0.0.1'
4
+ VERSION = '0.0.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duckface-interfaces
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bellroy Tech Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-31 00:00:00.000000000 Z
11
+ date: 2018-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -59,6 +59,7 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
+ - ".circleci/config.yml"
62
63
  - ".gitignore"
63
64
  - ".reek"
64
65
  - ".rspec"
@@ -77,7 +78,6 @@ files:
77
78
  - lib/duckface/acts_as_interface.rb
78
79
  - lib/duckface/constants.rb
79
80
  - lib/duckface/errors.rb
80
- - lib/duckface/example_class.rb
81
81
  - lib/duckface/implementation_methods.rb
82
82
  - lib/duckface/method_implementation.rb
83
83
  - lib/duckface/object_sugar.rb
File without changes