aasm_rbs 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/exe/aasm_rbs +1 -1
- data/lib/aasm_rbs/output.rb +19 -8
- data/lib/aasm_rbs/version.rb +1 -1
- data/lib/aasm_rbs.rb +12 -7
- data/sig/aasm_rbs/output.rbs +10 -7
- data/sig/aasm_rbs.rbs +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d13405faad77a8c8a21b0ee27b74c3b57acfc470c444ceed6c485421607a13b3
|
4
|
+
data.tar.gz: 9578eea618f8dc30c6164f90712435b616562bb2af422db57b951d792a2f07f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3a0b8d07358a4381579f2e5a42c6b2c633c73263a8cc0b7cc23de615e343c2cb1ea99ea1470e1a9a062e50e16584fed392aa67a268e8fe3aa38f04f3e572043
|
7
|
+
data.tar.gz: 7c84da47ecb1afc0b4443c13628e2ceb0efff26038d2e5fde2602dffa3a001c38da9c31a6675a0d62124d576f95b888c924ea51ffee5aac06925054fe76d722a
|
data/exe/aasm_rbs
CHANGED
data/lib/aasm_rbs/output.rb
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
module AasmRbs
|
4
4
|
class Output
|
5
|
+
attr_reader :data
|
6
|
+
|
5
7
|
def initialize(klass)
|
6
8
|
@klass = klass
|
7
9
|
superclass = klass.superclass == Object ? nil : " < #{klass.superclass}"
|
8
10
|
self.data = "class #{klass}#{superclass}\n"
|
9
11
|
end
|
10
12
|
|
11
|
-
def add_states(states)
|
13
|
+
def add_states(states, opts = {})
|
12
14
|
add_state_constants(states)
|
13
|
-
|
14
|
-
active_record_model = klass.respond_to?(:aasm_create_scope)
|
15
|
-
add_state_scopes(states) if active_record_model && create_scopes
|
15
|
+
add_state_scopes(states) if opts[:scopes]
|
16
16
|
add_predicate_states_methods(states)
|
17
17
|
end
|
18
18
|
|
@@ -25,6 +25,16 @@ module AasmRbs
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
def add_active_record_relation
|
29
|
+
self.data += <<-RBS
|
30
|
+
class ActiveRecord_Relation < ::ActiveRecord::Relation
|
31
|
+
include GeneratedRelationMethods
|
32
|
+
include _ActiveRecord_Relation[#{klass}, Integer]
|
33
|
+
include Enumerable[#{klass}]
|
34
|
+
end
|
35
|
+
RBS
|
36
|
+
end
|
37
|
+
|
28
38
|
def new_line
|
29
39
|
self.data += "\n"
|
30
40
|
end
|
@@ -36,20 +46,21 @@ module AasmRbs
|
|
36
46
|
private
|
37
47
|
|
38
48
|
attr_reader :klass
|
39
|
-
|
49
|
+
attr_writer :data
|
40
50
|
|
41
51
|
def add_state_constants(states)
|
42
52
|
states.each { |state| self.data += " STATE_#{state.upcase}: String\n" }
|
43
|
-
|
53
|
+
new_line
|
44
54
|
end
|
45
55
|
|
46
56
|
def add_state_scopes(states)
|
47
|
-
states.each { |state| self.data += " def self.#{state}: () ->
|
48
|
-
|
57
|
+
states.each { |state| self.data += " def self.#{state}: () -> ActiveRecord_Relation\n" }
|
58
|
+
new_line
|
49
59
|
end
|
50
60
|
|
51
61
|
def add_predicate_states_methods(states)
|
52
62
|
states.each { |state| self.data += " def #{state}?: () -> bool\n" }
|
63
|
+
new_line
|
53
64
|
end
|
54
65
|
end
|
55
66
|
end
|
data/lib/aasm_rbs/version.rb
CHANGED
data/lib/aasm_rbs.rb
CHANGED
@@ -4,7 +4,7 @@ require_relative 'aasm_rbs/output'
|
|
4
4
|
|
5
5
|
module AasmRbs
|
6
6
|
def self.load_constants(klass_name)
|
7
|
-
load
|
7
|
+
load('./Rakefile') if File.exist?('./Rakefile')
|
8
8
|
begin
|
9
9
|
Rake::Task[:environment].invoke
|
10
10
|
rescue StandardError
|
@@ -17,21 +17,26 @@ module AasmRbs
|
|
17
17
|
begin
|
18
18
|
require file
|
19
19
|
rescue LoadError
|
20
|
-
abort
|
20
|
+
abort('There was a problem loading the class file.')
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
def self.run(klass_name)
|
24
|
+
def self.run(klass_name, opts = {})
|
25
25
|
klass = Object.const_get(klass_name)
|
26
|
+
output = Output.new(klass)
|
27
|
+
|
26
28
|
states = klass.aasm.states.map(&:name)
|
27
29
|
events = klass.aasm.events.map(&:name)
|
28
30
|
|
29
|
-
|
30
|
-
|
31
|
-
|
31
|
+
create_scopes = klass.aasm.state_machine.config.create_scopes
|
32
|
+
active_record_model = klass.respond_to?(:aasm_create_scope)
|
33
|
+
opts[:scopes] = true if create_scopes && active_record_model
|
34
|
+
|
35
|
+
output.add_states(states, opts)
|
32
36
|
output.add_events(events)
|
37
|
+
output.new_line && output.add_active_record_relation if opts[:scopes]
|
33
38
|
output.finalize
|
34
39
|
rescue StandardError
|
35
|
-
|
40
|
+
abort('aasm_rbs received an invalid class name.')
|
36
41
|
end
|
37
42
|
end
|
data/sig/aasm_rbs/output.rbs
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
module AasmRbs
|
2
2
|
class Output
|
3
|
-
|
3
|
+
attr_reader data: String
|
4
4
|
|
5
|
-
def
|
6
|
-
|
5
|
+
def initialize: (Class klass) -> String
|
6
|
+
|
7
|
+
def add_states: (Array[String] states, ?::Hash[untyped, untyped] opts) -> String
|
8
|
+
def add_events: (Array[String] events) -> Array[String]
|
9
|
+
def add_active_record_relation: () -> String
|
7
10
|
|
8
11
|
def new_line: () -> String
|
9
12
|
def finalize: () -> String
|
@@ -11,10 +14,10 @@ module AasmRbs
|
|
11
14
|
private
|
12
15
|
|
13
16
|
attr_reader klass: Class
|
14
|
-
|
17
|
+
attr_writer data: String
|
15
18
|
|
16
|
-
def add_state_constants: (Array[String]) -> String
|
17
|
-
def add_state_scopes: (Array[String]) -> String
|
18
|
-
def add_predicate_states_methods: (Array[String]) ->
|
19
|
+
def add_state_constants: (Array[String] states) -> String
|
20
|
+
def add_state_scopes: (Array[String] states) -> String
|
21
|
+
def add_predicate_states_methods: (Array[String] states) -> String
|
19
22
|
end
|
20
23
|
end
|
data/sig/aasm_rbs.rbs
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module AasmRbs
|
2
2
|
Rake: untyped # there is yet no Rake official RBS
|
3
3
|
|
4
|
-
def self.load_constants: (String) -> void
|
5
|
-
def self.run: (String) -> String?
|
4
|
+
def self.load_constants: (String klass_name) -> void
|
5
|
+
def self.run: (String klass_name, ?::Hash[untyped, untyped] opts) -> String?
|
6
6
|
end
|
7
7
|
|
8
8
|
# There are yet no official RBS signatures for the AASM module that gets
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aasm_rbs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lorenzo Zabot
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-09-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aasm
|
@@ -67,5 +67,5 @@ requirements: []
|
|
67
67
|
rubygems_version: 3.3.7
|
68
68
|
signing_key:
|
69
69
|
specification_version: 4
|
70
|
-
summary: AASM
|
70
|
+
summary: RBS signatures for AASM classes
|
71
71
|
test_files: []
|