squared 0.4.36 → 0.5.0

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.
@@ -1,186 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'set'
4
- require 'forwardable'
5
-
6
- module Squared
7
- module Common
8
- class SymSet
9
- extend Forwardable
10
-
11
- def self.to_s
12
- super[/[^:]+\z/, 0]
13
- end
14
-
15
- def_delegators :@data, :+, :each, :each_with_index, :entries, :merge, :include?
16
-
17
- def initialize(data = [])
18
- @data = Set.new(data)
19
- end
20
-
21
- def add(val)
22
- @data.add(val.to_sym)
23
- end
24
-
25
- def to_a
26
- @data.to_a.freeze
27
- end
28
-
29
- def to_s
30
- @data.to_s.sub('Set', SymSet.to_s)
31
- end
32
-
33
- alias inspect to_s
34
- end
35
-
36
- class JoinSet < Set
37
- def self.to_s
38
- super[/[^:]+\z/, 0]
39
- end
40
-
41
- alias to_ary to_a
42
-
43
- attr_reader :delim, :extras
44
-
45
- def initialize(data = [], delim: ' ', partition: '--', uniq: /\A--?[^=\s-][^=\s]*(?:=|\s+)\S/)
46
- @delim = delim
47
- @partition = partition
48
- @uniq = uniq
49
- @extras = []
50
- super(data.compact)
51
- end
52
-
53
- def compact
54
- to_ary.map!(&:to_s).reject(&:empty?)
55
- end
56
-
57
- def last(val, pat)
58
- (@last ||= []).push([val, pat, $1]) if val =~ pat
59
- self << val
60
- end
61
-
62
- def pass(&blk)
63
- ret = compact
64
- @last&.each do |val, pat, key|
65
- i = []
66
- j = nil
67
- ret.each_with_index do |opt, index|
68
- if opt == val
69
- j = index
70
- elsif j && opt[pat, 1] == key
71
- i << index
72
- end
73
- end
74
- next unless j && !i.empty?
75
-
76
- val = ret[j]
77
- cur = j
78
- i.each do |k|
79
- ret[cur] = ret[k]
80
- cur = k
81
- end
82
- ret[i.last] = val
83
- end
84
- ret.concat(extras.map(&:to_s).reject(&:empty?)) unless extras.empty?
85
- block_given? ? ret.reject(&blk) : ret
86
- end
87
-
88
- def and(*args)
89
- self << '&&'
90
- merge(args)
91
- end
92
-
93
- def or(*args)
94
- self << '||'
95
- merge(args)
96
- end
97
-
98
- def with(*args, &blk)
99
- temp('&&', *args, &blk)
100
- end
101
-
102
- def temp(*args, &blk)
103
- args.compact!
104
- pass(&blk)
105
- .concat(args)
106
- .join(@delim)
107
- end
108
-
109
- def done
110
- ret = to_s
111
- clear
112
- ret
113
- end
114
-
115
- def merge(enum)
116
- if !extras.empty?
117
- extras.concat(enum.to_a)
118
- self
119
- elsif (n = enum.find_index { |val| extras?(val) })
120
- data = enum.to_a
121
- @extras = if n == 0
122
- data
123
- else
124
- super(data[0...n])
125
- data[n..-1]
126
- end
127
- self
128
- else
129
- super
130
- end
131
- end
132
-
133
- def <<(obj)
134
- extras!(obj) || super
135
- end
136
-
137
- def size
138
- super + extras.size
139
- end
140
-
141
- def include?(obj)
142
- return true if super
143
- return extras.include?(obj) unless (n = extras.index(@partition))
144
-
145
- extras[0..n].include?(obj)
146
- end
147
-
148
- def to_a
149
- pass
150
- end
151
-
152
- def to_s
153
- to_a.join(@delim)
154
- end
155
-
156
- def to_enum(*args)
157
- to_a.to_enum(*args)
158
- end
159
-
160
- def to_json(*args)
161
- to_a.to_json(*args)
162
- end
163
-
164
- def to_yaml(*args)
165
- to_a.to_yaml(*args)
166
- end
167
-
168
- alias add :<<
169
- alias add? :<<
170
- alias member? include?
171
-
172
- private
173
-
174
- def extras!(obj)
175
- return if extras.empty? && !extras?(obj)
176
-
177
- extras << obj unless !extras.include?(@partition) && include?(obj) && @uniq.match?(obj.to_s)
178
- self
179
- end
180
-
181
- def extras?(obj)
182
- obj == @partition || (include?(obj) && !@uniq.match?(obj.to_s))
183
- end
184
- end
185
- end
186
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Squared
4
- module Workspace
5
- module Support
6
- class << self
7
- def hashobj
8
- Hash.new { |data, key| data[key] = {} }
9
- end
10
-
11
- def hashlist
12
- Hash.new { |data, key| data[key] = [] }
13
- end
14
-
15
- def hashdup(data, pass: {})
16
- ret = {}
17
- data.each do |key, val|
18
- ret[key] = case val
19
- when Hash
20
- pass[val] ||= hashdup(val, pass: pass)
21
- when Proc, Method
22
- val
23
- else
24
- val.dup
25
- end
26
- end
27
- ret
28
- end
29
- end
30
- end
31
- end
32
- end