bmg 0.20.2 → 0.20.4

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
  SHA1:
3
- metadata.gz: 45a80b1a3fd00fc27f88f37b41816dd11324aa70
4
- data.tar.gz: 9d600dd0619e0d814a07db94c95dc093b61584b9
3
+ metadata.gz: bb2c9a67394ec85b7898ecf5c3d0b0dcf9532666
4
+ data.tar.gz: 6a8c8ed5c60392299225c7187e2d05ac95b59798
5
5
  SHA512:
6
- metadata.gz: 38fefe80ca45ddce14d3310621b82b389db5a7c11ab22bb17563c2c6f7dc769f9a54f9a3bebde6c40a2bbecbae215969857a8cf875a7363ad10261fd5b32b75f
7
- data.tar.gz: 91492014f31ff3c540df388cac9e362e16555e373ca59ed178bdf32f7098d176947f7e6432df804a8bb3f34210d8a3762b92ce39d37455ff2ee2e55346bf9bce
6
+ metadata.gz: 633a62f541c6f2fe87d20de2809fd2dc3166d1118320623ea3c16edd54435a164ef45d11d8a8475f927203abb0e247083525d280393dc30c0ffc06ff485c70ba
7
+ data.tar.gz: c8b357936dc6511d3e955b80da8b48dee258adef5d2ad1cd1024fd45c3bd895ed31a382fcf27141c32afa9d0e7728c38866bd1f720830b29fdb941f98dec1411
@@ -68,6 +68,20 @@ module Bmg
68
68
 
69
69
  protected ### optimization
70
70
 
71
+ def _allbut(type, butlist)
72
+ new_roots = wrapped_roots!
73
+ separator = @options[:split]
74
+ down = operand.type.attrlist!.select { |attr|
75
+ root = attr.to_s.split(separator).map(&:to_sym).first
76
+ butlist.include?(root)
77
+ }
78
+ r = operand.allbut(down)
79
+ r = r.autowrap(options) unless (butlist & new_roots == new_roots)
80
+ r
81
+ rescue UnknownAttributesError
82
+ super
83
+ end
84
+
71
85
  def _autowrap(type, opts)
72
86
  if same_options?(opts)
73
87
  self
@@ -122,11 +136,12 @@ module Bmg
122
136
  end
123
137
 
124
138
  def _project(type, attrlist)
125
- if (wrapped_roots! & attrlist).empty?
126
- operand.project(attrlist).autowrap(options)
127
- else
128
- super
129
- end
139
+ separator = @options[:split]
140
+ to_keep = operand.type.attrlist!.select { |attr|
141
+ root = attr.to_s.split(separator).map(&:to_sym).first
142
+ attrlist.include?(root)
143
+ }
144
+ operand.project(to_keep).autowrap(options)
130
145
  rescue UnknownAttributesError
131
146
  super
132
147
  end
@@ -169,6 +184,7 @@ module Bmg
169
184
 
170
185
  def wrapped_roots_of!(r, opts)
171
186
  raise UnknownAttributesError unless r.type.knows_attrlist?
187
+
172
188
  Support.wrapped_roots(r.type.to_attrlist, opts[:split])
173
189
  end
174
190
 
@@ -67,6 +67,10 @@ module Bmg
67
67
  operand.restrict(predicate).project(attrlist)
68
68
  end
69
69
 
70
+ def _allbut(type, butlist)
71
+ Project.new(type, @operand, attrlist - butlist)
72
+ end
73
+
70
74
  protected ### inspect
71
75
 
72
76
  def args
data/lib/bmg/type.rb CHANGED
@@ -46,6 +46,11 @@ module Bmg
46
46
  attr_accessor :attrlist
47
47
  protected :attrlist=
48
48
 
49
+ def attrlist!
50
+ knows_attrlist!
51
+ attrlist
52
+ end
53
+
49
54
  def with_attrlist(attrlist)
50
55
  dup.tap{|x|
51
56
  x.attrlist = attrlist
data/lib/bmg/version.rb CHANGED
@@ -2,7 +2,7 @@ module Bmg
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 20
5
- TINY = 2
5
+ TINY = 4
6
6
  end
7
7
  VERSION = "#{Version::MAJOR}.#{Version::MINOR}.#{Version::TINY}"
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bmg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.2
4
+ version: 0.20.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bernard Lambeau
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-01 00:00:00.000000000 Z
11
+ date: 2022-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: predicate