riker 0.1.0.pre2 → 0.1.0.pre3
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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +37 -4
- data/lib/riker/command.rb +9 -1
- data/lib/riker/parameter.rb +13 -1
- data/lib/riker/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b819ce3e2d6fb0f84fd16e4eb754802ca3c655810179225c9f4ba9cff3d8f068
|
4
|
+
data.tar.gz: ab2a5b0a1e9f3beb29c1ba8437de4b50be42f395c79cc833985c7da082c572f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae433f9f555ceee2b68121953086c7de1e340773ccd1dc802a254126a7bcee94f7f77d2f28427b29e89a6f2e738f9b7aeb5ec709951eb84c150de49bff58ef9c
|
7
|
+
data.tar.gz: 65a9c8f2be649a18223f3f97caf10b628155f6e0ac54b7891aba504616084eaa6ef85f79f7ac96ff55d7d057d18070bc3a84e527a0ba4b0faac276c80509e74b
|
data/Gemfile.lock
CHANGED
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.
|
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}
|
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::
|
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
|
data/lib/riker/parameter.rb
CHANGED
@@ -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
|
-
|
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
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.
|
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-
|
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:
|