contextualizer 0.0.3 → 0.0.6

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
- SHA1:
3
- metadata.gz: 656da6e97d5a4805a96b5aae76332fd738c9727a
4
- data.tar.gz: 0ec330dd1f6919269230eda301084792ac83be30
2
+ SHA256:
3
+ metadata.gz: e4e8936f90745f3f7bcc2d55b9ed9ea80a3701f88bcbac199761d5e8c198bbb2
4
+ data.tar.gz: 8a52995c0569c7d8271b5aff3623cce888ee1eea8f3d9e809612eb2fe53ba3da
5
5
  SHA512:
6
- metadata.gz: 70d5adca95a69de4c41a852ccc290920008ab7fc7b58d95675039b7394adadb447f7ea15df842a2e4653b415c3c643d5d1e5976dcce7a3048e257d63445f1fd8
7
- data.tar.gz: d83fac648dadc104b6c898dbdbf61c0d39f251a6bf73194eb6d3b7a41ec0947c1c6df7cd499d40957055f3eaceea3e0ca1dc9b196ebbbbb637e10aa0e5d26b33
6
+ metadata.gz: ddf97150f7a70d16b157ec0e6ae7f9fb4c5a042aa84ada0a5a585ba94f137eb3537200ce96e52134402482e9719bb9361d3b8878df8315148ce197cdf570b480
7
+ data.tar.gz: f72fead3e5c3013f1fa27d8b5948f9c531079cd253496a8da74f6d161c6e25a6eaa12f636f6f0b36ad3514e91236b834dced720ca4b7b9263097ae72bc6d6e64
@@ -0,0 +1,28 @@
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby-version: [2.6, 2.7, 3.0, 3.1]
15
+ steps:
16
+ - uses: actions/checkout@v2
17
+ - name: Set up Ruby
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: ${{ matrix.ruby-version }}
21
+ bundler-cache: true
22
+ - name: Run tests
23
+ run: bundle exec rake
24
+ - name: Coveralls GitHub Action
25
+ if: matrix.ruby-version == '3.1'
26
+ uses: coverallsapp/github-action@1.1.3
27
+ with:
28
+ github-token: ${{ secrets.GITHUB_TOKEN }}
data/Gemfile CHANGED
@@ -1,5 +1,3 @@
1
- ruby '2.4.0'
2
-
3
1
  source "https://rubygems.org"
4
2
 
5
3
  # Specify your gem's dependencies in contextualizer.gemspec
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Contextualizer
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/contextualizer.svg)](https://badge.fury.io/rb/contextualizer)
4
- [![CircleCI](https://circleci.com/gh/pabloh/contextualizer/tree/master.svg?style=shield)](https://circleci.com/gh/pabloh/contextualizer/tree/master)
4
+ [![Tests](https://github.com/pabloh/contextualizer/workflows/Tests/badge.svg)](https://github.com/oabloh/contextualizer/actions?query=workflow%3ATests)
5
5
  [![Coverage Status](https://coveralls.io/repos/github/pabloh/contextualizer/badge.svg?branch=master)](https://coveralls.io/github/pabloh/contextualizer?branch=master)
6
6
 
7
7
  Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/contextualizer`. To experiment with that code, run `bin/console` for an interactive prompt.
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
 
12
12
  spec.summary = %q{Allows to define context values for your objects}
13
13
  spec.description = %q{Allows to define context values for your objects}
14
- #spec.homepage = "http://github.com/pabloh/contextualizer"
14
+ spec.homepage = "http://github.com/pabloh/contextualizer"
15
15
  spec.license = "MIT"
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -23,10 +23,13 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.required_ruby_version = ">= 2.4.0"
25
25
 
26
- spec.add_development_dependency "bundler", ">= 1.14.0"
27
- spec.add_development_dependency "rake", "~> 10.0"
26
+ spec.add_dependency "ruby2_keywords"
27
+
28
+ spec.add_development_dependency "bundler", "~> 2.3.7"
29
+ spec.add_development_dependency "rake", "~> 12.3.3"
28
30
  spec.add_development_dependency "rspec", "~> 3.0"
29
- spec.add_development_dependency "coveralls"
31
+ spec.add_development_dependency "simplecov-lcov", '~> 0.8.0'
32
+ spec.add_development_dependency "simplecov"
30
33
  spec.add_development_dependency "pry"
31
34
  spec.add_development_dependency "pry-byebug"
32
35
  end
@@ -1,8 +1,9 @@
1
1
  require 'contextualizer'
2
+ require 'ruby2_keywords'
2
3
 
3
4
  module Contextualizer
4
5
  module Callable
5
- def call(ctx, *args, &bl)
6
+ ruby2_keywords def call(ctx, *args, &bl)
6
7
  new(ctx).call(*args, &bl)
7
8
  end
8
9
 
@@ -1,3 +1,3 @@
1
1
  module Contextualizer
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -1,6 +1,8 @@
1
1
  require 'contextualizer/version'
2
2
 
3
3
  module Contextualizer
4
+ OPTIONAL = Object.new.freeze
5
+
4
6
  def context(*attrs, **opt_attrs)
5
7
  unless @__setter
6
8
  @__setter = Setter.new
@@ -37,19 +39,23 @@ module Contextualizer
37
39
 
38
40
  class Setter
39
41
  def initialize
40
- @attrs, @opt_attrs = [], {}
42
+ @mandatory, @with_default, @optional = [], {}, []
41
43
  end
42
44
 
43
45
  def add_attrs(*attrs, **opt_attrs)
44
- @attrs |= attrs
45
- @opt_attrs.merge!(opt_attrs)
46
+ optional, with_default = opt_attrs.partition { |_, v| v == OPTIONAL }.map(&:to_h)
47
+
48
+ @mandatory |= attrs
49
+ @optional |= optional.keys
50
+ @with_default.merge!(with_default)
46
51
  end
47
52
 
48
53
  def set(obj, args)
49
54
  context = obj.context&.dup || {}
50
55
 
51
- @opt_attrs.each { |key, default| context[key] = args.key?(key) ? args[key] : default }
52
- @attrs.each do |key|
56
+ @with_default.each { |key, default| context[key] = args.fetch(key, default) }
57
+ @optional.each { |key| context[key] = args[key] if args.key?(key) }
58
+ @mandatory.each do |key|
53
59
  fail ":#{key} was not found in scope" unless args.key?(key)
54
60
  context[key] = args[key]
55
61
  end
metadata CHANGED
@@ -1,43 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contextualizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Herrero
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-30 00:00:00.000000000 Z
11
+ date: 2022-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: ruby2_keywords
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.14.0
20
- type: :development
19
+ version: '0'
20
+ type: :runtime
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: 1.14.0
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 2.3.7
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 2.3.7
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '10.0'
47
+ version: 12.3.3
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '10.0'
54
+ version: 12.3.3
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -53,7 +67,21 @@ dependencies:
53
67
  - !ruby/object:Gem::Version
54
68
  version: '3.0'
55
69
  - !ruby/object:Gem::Dependency
56
- name: coveralls
70
+ name: simplecov-lcov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.8.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.8.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
87
  - - ">="
@@ -101,9 +129,9 @@ executables: []
101
129
  extensions: []
102
130
  extra_rdoc_files: []
103
131
  files:
132
+ - ".github/workflows/tests.yml"
104
133
  - ".gitignore"
105
134
  - ".rspec"
106
- - ".travis.yml"
107
135
  - Gemfile
108
136
  - LICENSE.txt
109
137
  - README.md
@@ -116,7 +144,7 @@ files:
116
144
  - lib/contextualizer.rb
117
145
  - lib/contextualizer/callable.rb
118
146
  - lib/contextualizer/version.rb
119
- homepage:
147
+ homepage: http://github.com/pabloh/contextualizer
120
148
  licenses:
121
149
  - MIT
122
150
  metadata: {}
@@ -135,8 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
163
  - !ruby/object:Gem::Version
136
164
  version: '0'
137
165
  requirements: []
138
- rubyforge_project:
139
- rubygems_version: 2.6.9
166
+ rubygems_version: 3.0.9
140
167
  signing_key:
141
168
  specification_version: 4
142
169
  summary: Allows to define context values for your objects
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.4.0
5
- before_install: gem install bundler -v 1.15.1