riker 0.1.0.pre2 → 0.1.0.pre3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 86f0741a4cd82edba656094d41663f3a119ee7a6e6019d2417d3f12ef459dcdc
4
- data.tar.gz: b82ff16ca094921419d09c2c4e8f2888dc35b228d086916135b6977ff2138656
3
+ metadata.gz: b819ce3e2d6fb0f84fd16e4eb754802ca3c655810179225c9f4ba9cff3d8f068
4
+ data.tar.gz: ab2a5b0a1e9f3beb29c1ba8437de4b50be42f395c79cc833985c7da082c572f4
5
5
  SHA512:
6
- metadata.gz: acde908c28b815b7e77d75e0a8a68cb94c2f106b03bcb56fb608dc812465de8692ffd630c080279a7eb275a90b37a414c25699e1091d77a2632dbb78c18da576
7
- data.tar.gz: 21b81e7a1f99bd1236d60b4603b6614751fad3e1158eaf39fe3593536d7a21d4b81bc9b2d492beed713b4a24a4ccb256ba6b3bf53582db0dd69d1199f330dea2
6
+ metadata.gz: ae433f9f555ceee2b68121953086c7de1e340773ccd1dc802a254126a7bcee94f7f77d2f28427b29e89a6f2e738f9b7aeb5ec709951eb84c150de49bff58ef9c
7
+ data.tar.gz: 65a9c8f2be649a18223f3f97caf10b628155f6e0ac54b7891aba504616084eaa6ef85f79f7ac96ff55d7d057d18070bc3a84e527a0ba4b0faac276c80509e74b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- riker (0.1.0.pre1)
4
+ riker (0.1.0.pre2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -12,7 +12,7 @@ High-Performance, Dependency-Free Command Pattern For Ruby
12
12
  ### In your gemfile:
13
13
 
14
14
  ```ruby
15
- gem 'riker', '0.1.0.pre2'
15
+ gem 'riker', '0.1.0.pre3'
16
16
  ```
17
17
 
18
18
  ### In your code:
@@ -23,9 +23,12 @@ class SimpleGreeting
23
23
 
24
24
  param :first_name
25
25
  param :last_name, required: false
26
+ param :punctuation, default: '.'
26
27
 
27
28
  execute do
28
- "Hello #{first_name} #{last_name}".strip
29
+ return "Hello #{first_name}#{punctuation}" if last_name.nil?
30
+
31
+ "Hello #{first_name} #{last_name}#{punctuation}"
29
32
  end
30
33
  end
31
34
  ```
@@ -34,8 +37,38 @@ end
34
37
 
35
38
  ```ruby
36
39
  SimpleGreeting.run!(first_name: 'Will')
37
- # => "Hello Will
40
+ # => "Hello Will."
38
41
 
39
42
  SimpleGreeting.run!(first_name: 'Will', last_name: 'Riker')
40
- # => "Hello Will Riker
43
+ # => "Hello Will Riker."
44
+
45
+ SimpleGreeting.run!(first_name: 'Will', last_name: 'Riker', punctuation: '!')
46
+ # => "Hello Will Riker!"
47
+ ```
48
+
49
+ ## Default Procs
50
+
51
+ ### In your code:
52
+
53
+ ```ruby
54
+ class CaptainsLog
55
+ extend Riker
56
+
57
+ param :stardate, default: -> { Time.now.to_f }
58
+ param :message
59
+
60
+ execute do
61
+ "Captain's Log; Stardate: #{stardate}\n\n#{message}"
62
+ end
63
+ end
64
+ ```
65
+
66
+ ### In use:
67
+
68
+ ```ruby
69
+ CaptainsLog.run!(message: "The Borg are attacking!")
70
+ # => "Captain's Log; Stardate: 1664393978.915553\n\nThe Borg are attacking!"
71
+
72
+ CaptainsLog.run(message: "We've traveled back in time!", stardate: 42.1337)
73
+ # => "Captain's Log; Stardate: 42.1337\n\nWe've traveled back in time!"
41
74
  ```
data/lib/riker/command.rb CHANGED
@@ -7,7 +7,7 @@ module Riker
7
7
  # track of the build of a command in your application
8
8
  #
9
9
  class Command
10
- # @return [Riker::Parameters]
10
+ # @return [Riker::CommandParameters]
11
11
  attr_reader :parameters
12
12
 
13
13
  # @return [Proc, nil]
@@ -20,6 +20,7 @@ module Riker
20
20
  # @param klass [Class]
21
21
  def build!(klass)
22
22
  klass.define_method(:execute, &execute_block)
23
+ define_default_setters!(klass)
23
24
  define_init!(klass)
24
25
  define_run_bang!(klass)
25
26
  define_attr_readers!(klass)
@@ -50,5 +51,12 @@ module Riker
50
51
  def define_attr_readers!(klass)
51
52
  klass.attr_reader(*parameters.map(&:name))
52
53
  end
54
+
55
+ # @param klass [Class]
56
+ def define_default_setters!(klass)
57
+ parameters.each do |param|
58
+ param.default.build_default_function!(klass)
59
+ end
60
+ end
53
61
  end
54
62
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'parameter/default_value'
4
+
3
5
  module Riker
4
6
  # Single Command Parameter
5
7
  #
@@ -7,11 +9,20 @@ module Riker
7
9
  # @return [Symbol]
8
10
  attr_reader :name
9
11
 
12
+ # @return [DefaultValue]
13
+ attr_reader :default
14
+
10
15
  # @param name [Symbol]
11
16
  # @param required [Boolean]
12
- def initialize(name, required: true)
17
+ # @param default [Object, Proc]
18
+ def initialize(
19
+ name,
20
+ required: true,
21
+ default: DefaultValue.no_value
22
+ )
13
23
  @name = name
14
24
  @required = required
25
+ @default = DefaultValue.new(name, default)
15
26
  end
16
27
 
17
28
  # @return [Boolean]
@@ -32,6 +43,7 @@ module Riker
32
43
  private
33
44
 
34
45
  def fallback_default
46
+ return default.function_name if default.present?
35
47
  return if required?
36
48
 
37
49
  'nil'
data/lib/riker/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Riker
4
- VERSION = '0.1.0.pre2'
4
+ VERSION = '0.1.0.pre3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre2
4
+ version: 0.1.0.pre3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Falk
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-26 00:00:00.000000000 Z
11
+ date: 2022-09-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: High-Performance, Dependency-Free Command Pattern For Ruby
14
14
  email: