tron 0.7.1 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d51f556716f1f0a9f8114a007d508a2049e76811
4
- data.tar.gz: 2d276ac27e157b50edc2167061742271762403c9
3
+ metadata.gz: 990e0bd04a0f3189d1483d9ebe010c740461aedc
4
+ data.tar.gz: e11e18fc405897c6d3fc36fd14440efd4b5a2bb7
5
5
  SHA512:
6
- metadata.gz: b2f4011a55f95b77fa8f30c06254e729fe0b90630dcbeb574ef247591bd670f0ea78584c5fbe0b69ab9880fe3acf82927a64b9c8c0ee93c7115247f3942e182a
7
- data.tar.gz: b47262f253f70aecf9c021fcd4d04a5c3bea84daa50e627744792cc35127b61d6368570774c13ec9ad20b5caad2bf868bb8122f4e9abb30fb52835cb53252acd
6
+ metadata.gz: 6651802dd7c1e274810caff0c0f0e924614da61c3861e66278264e24e91cc285c97d24c64c2d79528fcf7b4adfbbefe3eb0108559f1e7c31ec89be4e6fd9ff2f
7
+ data.tar.gz: 4aa73296745a4415dd108627176530b320408cd96e6f639b462aa5610fa8e8889ef42f2c6023097b2c5d7f0f9a7d5f44c8efa32236a777a52b379f7d775cfb85
@@ -1,8 +1,81 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'tron/version'
2
4
 
3
- require 'tron/resultable'
4
- require 'tron/success'
5
- require 'tron/failure'
5
+ require 'tron/resultable' # Legady
6
+ require 'tron/success' # Legacy
7
+ require 'tron/failure' # Legacy
6
8
 
7
9
  module Tron
10
+ def self.success(code, attributes = {}) # rubocop:disable Metrics/MethodLength
11
+ code.respond_to?(:to_sym) ||
12
+ raise(ArgumentError, 'Tron.success must be called with a Symbol as first argument')
13
+
14
+ attributes.respond_to?(:keys)||
15
+ raise(ArgumentError, 'The attributes Hash for Tron.success must respond to #keys')
16
+
17
+ attributes.respond_to?(:values) ||
18
+ raise(ArgumentError, 'The attributes Hash for Tron.success must respond to #values')
19
+
20
+ Struct.new(:success, *attributes.keys) do
21
+ undef_method '[]='.to_sym
22
+ members.each { |member| undef_method "#{member}=".to_sym }
23
+
24
+ def success?
25
+ true
26
+ end
27
+
28
+ def failure?
29
+ false
30
+ end
31
+
32
+ def failure
33
+ nil
34
+ end
35
+
36
+ def on_success(proc = nil, &block)
37
+ (proc || block).call
38
+ end
39
+
40
+ def on_failure(_ = nil)
41
+ self
42
+ end
43
+ end.new code.to_sym, *attributes.values.map(&:freeze)
44
+ end
45
+
46
+ def self.failure(code, attributes = {}) # rubocop:disable Metrics/MethodLength
47
+ code.respond_to?(:to_sym) ||
48
+ raise(ArgumentError, 'Tron.failure must be called with a Symbol as first argument')
49
+
50
+ attributes.respond_to?(:keys)||
51
+ raise(ArgumentError, 'The attributes Hash for Tron.failure must respond to #keys')
52
+
53
+ attributes.respond_to?(:values) ||
54
+ raise(ArgumentError, 'The attributes Hash for Tron.failure must respond to #values')
55
+
56
+ Struct.new(:failure, *attributes.keys) do
57
+ undef_method '[]='.to_sym
58
+ members.each { |member| undef_method "#{member}=".to_sym }
59
+
60
+ def success?
61
+ false
62
+ end
63
+
64
+ def failure?
65
+ true
66
+ end
67
+
68
+ def success
69
+ nil
70
+ end
71
+
72
+ def on_success(_ = nil)
73
+ self
74
+ end
75
+
76
+ def on_failure(proc = nil, &block)
77
+ (proc || block).call
78
+ end
79
+ end.new code.to_sym, *attributes.values.map(&:freeze)
80
+ end
8
81
  end
@@ -5,12 +5,9 @@ module Tron
5
5
  def on_success(_ = nil)
6
6
  self
7
7
  end
8
- alias_method :>>, :on_success
9
8
 
10
9
  def on_failure(proc = nil, &block)
11
10
  (proc || block).call
12
11
  end
13
- alias_method :>>, :on_failure
14
-
15
12
  end
16
13
  end
@@ -16,6 +16,9 @@ module Tron
16
16
  def initialize(code: nil, metadata: nil)
17
17
  @code = code
18
18
  @metadata = metadata
19
+ warn 'DEPRECATED: As of Tron 1.0.0 calls to `Tron::Success` and `Tron::Failure.call` are deprecated. ' \
20
+ 'They will be removed in Tron 2.0.0. Please migrate using `Tron.success` and `Tron.failure`. ' \
21
+ 'See github.com/halo/tron'
19
22
  end
20
23
 
21
24
  def success?
@@ -28,13 +31,14 @@ module Tron
28
31
 
29
32
  def code
30
33
  return if @code.to_s == ''
34
+
31
35
  @code.to_s.to_sym
32
36
  end
33
37
 
34
38
  # Convenience Wrapper
35
39
  def object
36
40
  metadata[:object] || metadata['object']
37
- rescue
41
+ rescue StandardError
38
42
  nil
39
43
  end
40
44
 
@@ -57,6 +61,5 @@ module Tron
57
61
  ::Hashie::Mash.new
58
62
  end
59
63
  end
60
-
61
64
  end
62
65
  end
@@ -5,12 +5,9 @@ module Tron
5
5
  def on_success(proc = nil, &block)
6
6
  (proc || block).call
7
7
  end
8
- alias_method :>>, :on_success
9
8
 
10
9
  def on_failure(_ = nil)
11
10
  self
12
11
  end
13
- alias_method :>>, :on_failure
14
-
15
12
  end
16
13
  end
@@ -1,8 +1,8 @@
1
1
  module Tron
2
2
  module VERSION #:nodoc:
3
- MAJOR = 0
4
- MINOR = 7
5
- TINY = 1
3
+ MAJOR = 1
4
+ MINOR = 0
5
+ TINY = 0
6
6
  PRE = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join '.'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tron
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - halo
@@ -11,7 +11,7 @@ cert_chain: []
11
11
  date: 2016-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: hashie
14
+ name: guard-rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec
28
+ name: hashie
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: guard-rspec
42
+ name: rb-fsevent
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rb-fsevent
56
+ name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -80,15 +80,15 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- description: General-purpose method return objects that can be chained. Heavily inspired
84
- by the `deterministic` gem, but much much more light-weight.
83
+ description: General-purpose method return objects that can be chained. Think minimalistic
84
+ value object monads. Heavily inspired by the `deterministic` gem, but much much
85
+ more light-weight.
85
86
  email:
86
87
  executables: []
87
88
  extensions: []
88
89
  extra_rdoc_files: []
89
90
  files:
90
91
  - README.md
91
- - Rakefile
92
92
  - lib/tron.rb
93
93
  - lib/tron/failure.rb
94
94
  - lib/tron/resultable.rb
@@ -106,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - ">="
108
108
  - !ruby/object:Gem::Version
109
- version: 2.1.5
109
+ version: 2.3.0
110
110
  required_rubygems_version: !ruby/object:Gem::Requirement
111
111
  requirements:
112
112
  - - ">="
@@ -114,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  version: '0'
115
115
  requirements: []
116
116
  rubyforge_project:
117
- rubygems_version: 2.2.2
117
+ rubygems_version: 2.5.1
118
118
  signing_key:
119
119
  specification_version: 4
120
120
  summary: General-purpose method return objects that can be chained.
data/Rakefile DELETED
@@ -1 +0,0 @@
1
- require 'bundler/gem_tasks'