culturecode_stagehand 0.11.1 → 0.12.0

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
  SHA1:
3
- metadata.gz: 24e3b40120cfab02ac8bce3d4516942a7fb9c3b5
4
- data.tar.gz: 43c21541d06a5026b988e428169638992a33ace3
3
+ metadata.gz: c893dda09123a4ae10bf48b2ee8baccd9810faa3
4
+ data.tar.gz: e036f39b6df9eab7580afdeee075f43f6b32b621
5
5
  SHA512:
6
- metadata.gz: b7ffb9b0682a49e40c57a7e52b522e559512036ee578cc7a8a9b01121580e1ca16f5ab74e489d94ffcfb26409ad8cc2ba6192dcecd7266d17a08347a2e5f62ad
7
- data.tar.gz: dd987ebb5c3f9df98b88c21443dee227ddf99d96ad476b051a07715a1e8b0e69a5cecbb24cafa3b90a574864fce7f336c214c61662ad7031ba9a53fdef01f9d4
6
+ metadata.gz: 9946912b9989f00cd65c2de61439942d0f1bc09bc45b9e920914f01eb0cb34d21ed24add2596b3c9841ea2fb3261a84165cd46d1c8d3131d6cdfd40a9bd997df
7
+ data.tar.gz: d19d3a122766096414acc98c7c20ec4f3f404a214e9fe0fdf87ca449e6decb3c0b6c483392e40eec5c73528f44b5a50bdc83afcf46bb405c482732868f015887
@@ -12,13 +12,15 @@ module Stagehand
12
12
  related_entries(commit.entries).collect(&:commit_id).select(&:present?).uniq
13
13
  end
14
14
 
15
- def self.related_entries(entries)
15
+ def self.related_entries(entries, relation_filter = nil)
16
16
  entries = Array.wrap(entries)
17
17
  related_entries = []
18
18
 
19
19
  entries_to_spider = Array.wrap(entries)
20
20
  while entries_to_spider.present?
21
21
  contained_matching = CommitEntry.contained.matching(entries_to_spider)
22
+ contained_matching = contained_matching.where(id: contained_matching.select(&relation_filter)) if relation_filter
23
+
22
24
  matching_commit_entries = CommitEntry.where(:commit_id => contained_matching.select(:commit_id))
23
25
 
24
26
  # Spider using content operations. Don't spider control operations to avoid extending the list of results unnecessarily
@@ -37,7 +39,7 @@ module Stagehand
37
39
  return related_entries
38
40
  end
39
41
 
40
- def self.associated_records(entries)
42
+ def self.associated_records(entries, association_filter = nil)
41
43
  records = preload_records(compact_entries(entries)).select(&:record).flat_map do |entry|
42
44
  associated_associations(entry.record_class).flat_map do |association|
43
45
  entry.record.send(association)
@@ -47,6 +49,7 @@ module Stagehand
47
49
  records.uniq!
48
50
  records.compact!
49
51
  records.select! {|record| stagehand_class?(record.class) }
52
+ records.select!(&association_filter) if association_filter
50
53
 
51
54
  return records
52
55
  end
@@ -95,9 +98,11 @@ module Stagehand
95
98
 
96
99
  public
97
100
 
98
- def initialize(subject, &confirmation_filter)
101
+ def initialize(subject, confirmation_filter: nil, association_filter: nil, relation_filter: nil)
99
102
  @subject = subject
100
103
  @confirmation_filter = confirmation_filter
104
+ @association_filter = association_filter
105
+ @relation_filter = relation_filter
101
106
  affected_entries # Init the affected_entries changes can be rolled back without affecting the checklist
102
107
  end
103
108
 
@@ -133,9 +138,9 @@ module Stagehand
133
138
 
134
139
  def affected_entries
135
140
  cache(:affected_entries) do
136
- related = self.class.related_entries(@subject)
137
- associated = self.class.associated_records(related)
138
- associated_related = self.class.related_entries(associated)
141
+ related = self.class.related_entries(@subject, @relation_filter)
142
+ associated = self.class.associated_records(related, @association_filter)
143
+ associated_related = self.class.related_entries(associated, @relation_filter)
139
144
 
140
145
  (related + associated_related).uniq
141
146
  end
@@ -1,3 +1,3 @@
1
1
  module Stagehand
2
- VERSION = "0.11.1"
2
+ VERSION = "0.12.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: culturecode_stagehand
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.1
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicholas Jakobsen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-11-16 00:00:00.000000000 Z
12
+ date: 2016-11-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails