eunomia_gen 0.1.3 → 0.1.5

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
  SHA256:
3
- metadata.gz: 248b5e7d766840c8b4f4410659e934c288d9f3c6098d76bd9496b7b30c142c63
4
- data.tar.gz: 4d7db04e1470bfe4834dd40ac2fe661e14badfcd6f8ca060a6e456b27897f862
3
+ metadata.gz: ef932c7746b729d5ca11965c6f60d51a2bda8d3ea8c3b86ec7ef4920bd3f8d6d
4
+ data.tar.gz: c237ff9ef45c99ae42bdd26d95c050f2a888f3c64e4ff58c2f5778e5979be716
5
5
  SHA512:
6
- metadata.gz: cb7e64a5fd66e8098c4a327f7e5f28ae7972e4619b8b1b31bf732cb1302b45ab7d571f81b0d8c27b4cdaefc28c34cbf7806a9f133137d44da8e295eaaf09fda6
7
- data.tar.gz: a122b89d072665edf883571ba0b4be02e7be961121f2cb0b2482a7567b07265b69df6701d138a9a752463468c133048a4fd641d3f59ffdf3cfaa108b4a4ef929
6
+ metadata.gz: b5f1be4da9fa2c83d9da04cded7de88e60d53eafc943383c3b1b96a50cdef42d4b35328b1a9cc3d0b300158aa9c3cdac264fb8e62141f711c30725c65d9e94e6
7
+ data.tar.gz: b6ac9cfb36380bedad9982c53802b0b3dec9c6d3d9e69e2930e6cf972e8cd685679aff6ef78b1c59c7fc187626282a4d09f2962916173bbcb2dd727c93f8732d
@@ -11,7 +11,6 @@ module Eunomia
11
11
  :meta,
12
12
  :functions,
13
13
  :tags,
14
- :item_tags,
15
14
  :items,
16
15
  :selector,
17
16
  :sep
@@ -22,7 +21,6 @@ module Eunomia
22
21
  @alts = hash_field(hsh, :alts)
23
22
  @meta = meta_field(hsh)
24
23
  @tags = tags_field(hsh)
25
- @item_tags = Set.new
26
24
  @selector = Eunomia::Selector.new(field_or_nil(hsh, :rng))
27
25
  @items = items_from(hsh)
28
26
  raise "Generators must have items" if @items.empty?
@@ -31,13 +29,18 @@ module Eunomia
31
29
  def items_from(hsh)
32
30
  list_field(hsh, :items).map do |item|
33
31
  item = { segments: item } if item.is_a?(String)
34
- item_tags = item.fetch(:tags, [])
35
- item_tags = [item_tags] unless item_tags.is_a?(Enumerable)
36
- @item_tags += item_tags
37
32
  Eunomia::Item.new(@key, item, @tags)
38
33
  end
39
34
  end
40
35
 
36
+ def item_tags
37
+ @item_tags ||= begin
38
+ set = Set.new
39
+ items.each { |item| set += item.available_tags }
40
+ set
41
+ end
42
+ end
43
+
41
44
  def alt_for(key, segment)
42
45
  return segment unless key
43
46
  return segment unless alts[key]
@@ -49,7 +52,7 @@ module Eunomia
49
52
  def filter(tags)
50
53
  return items if tags.empty?
51
54
 
52
- items.select { |item| item.match_tags?(tags) || item.match_tags?(item_tags) }
55
+ items.select { |item| item.match_tags?(tags) }
53
56
  end
54
57
 
55
58
  def generate(request)
data/lib/eunomia/item.rb CHANGED
@@ -30,7 +30,8 @@ module Eunomia
30
30
  def available_tags
31
31
  @available_tags ||= begin
32
32
  s = Set.new
33
- refs = segments.filter { |seg| seg.is_a?(Eunomia::Reference) }
33
+ s += tags
34
+ refs = segments.filter { |seg| seg.is_a?(Eunomia::Segment::Reference) }
34
35
  unless refs.empty?
35
36
  s = refs[0].item_tags
36
37
  refs[1..].each { |ref| s &= ref.item_tags }
@@ -48,8 +49,10 @@ module Eunomia
48
49
 
49
50
  def match_tags?(tags)
50
51
  return true if tags.nil? || tags.empty?
52
+ return true if (tags - self.tags).empty?
53
+ return true if (tags - available_tags).empty?
51
54
 
52
- true if (tags - self.tags).empty?
55
+ false
53
56
  end
54
57
 
55
58
  def alt_for(key, segment)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Eunomia
4
- VERSION = "0.1.3"
4
+ VERSION = "0.1.5"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eunomia_gen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - G Palmer