flor 1.6.3 → 1.6.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 +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/flor/core/procedure.rb +13 -3
- data/lib/flor/pcore/break.rb +3 -3
- data/lib/flor/pcore/cursor.rb +11 -1
- data/lib/flor/pcore/del.rb +81 -0
- data/lib/flor.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 726f12169dd650e862f4fdcf7f08da2e08f9a06ccf9f9125b2ad0340b4003b1f
|
4
|
+
data.tar.gz: 4864b67e47ee79e8a9b220e2465d23343e554102fd8a8fbdac6dad16eef9327c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82a526fd4cd0c6185e3778e4b1421c6f120fa3b0a3c3591a54fb7ddb2ddae7943302409a5b1fe1bec118882ebaf125cdd6b35895f442d58b32068c80e17497b4
|
7
|
+
data.tar.gz: 80ab4a60ca328565ce463459ee610face1f9d513da541392c1d6c7b8bf0906c9271120dd1dbd94ea66589eda8c3112233f817d1ef6a38eb931bece7eda1cac7a
|
data/CHANGELOG.md
CHANGED
data/lib/flor/core/procedure.rb
CHANGED
@@ -737,23 +737,28 @@ class Flor::Procedure < Flor::Node
|
|
737
737
|
node = lookup_var_node(@node, mode, path)
|
738
738
|
node = lookup_var_node(@node, 'l', path) if node.nil? && mode == ''
|
739
739
|
|
740
|
-
|
740
|
+
if node
|
741
|
+
return Dense.unset(node['vars'], path) if v == :UNSET
|
742
|
+
return Dense.set(node['vars'], path, v)
|
743
|
+
end
|
741
744
|
|
742
745
|
rescue IndexError
|
743
746
|
end
|
744
747
|
|
745
748
|
fail IndexError.new(
|
746
|
-
"couldn't
|
749
|
+
"couldn't #{v == :UNSET ? 'un' : ''}set var " +
|
750
|
+
"#{Flor.path_to_s([ "#{mode}v" ] + path)}")
|
747
751
|
end
|
748
752
|
|
749
753
|
def set_field(path, v)
|
750
754
|
|
755
|
+
return Dense.unset(payload.copy, path) if v == :UNSET
|
751
756
|
Dense.set(payload.copy, path, v)
|
752
757
|
|
753
758
|
rescue IndexError
|
754
759
|
|
755
760
|
fail IndexError.new(
|
756
|
-
"couldn't set field #{Flor.path_to_s(path)}")
|
761
|
+
"couldn't #{v == :UNSET ? 'un' : ''}set field #{Flor.path_to_s(path)}")
|
757
762
|
end
|
758
763
|
|
759
764
|
def set_value(path, value)
|
@@ -775,6 +780,11 @@ class Flor::Procedure < Flor::Node
|
|
775
780
|
end
|
776
781
|
end
|
777
782
|
|
783
|
+
def unset_value(path)
|
784
|
+
|
785
|
+
set_value(path, :UNSET)
|
786
|
+
end
|
787
|
+
|
778
788
|
def splat_value(paths, value)
|
779
789
|
|
780
790
|
val = value.dup
|
data/lib/flor/pcore/break.rb
CHANGED
@@ -7,8 +7,8 @@ class Flor::Pro::Break < Flor::Procedure
|
|
7
7
|
# ```
|
8
8
|
# until false
|
9
9
|
# # do something
|
10
|
-
# continue if f.x == 0
|
11
|
-
# break if f.x == 1
|
10
|
+
# continue _ if f.x == 0
|
11
|
+
# break _ if f.x == 1
|
12
12
|
# # do something more
|
13
13
|
# ```
|
14
14
|
#
|
@@ -50,7 +50,7 @@ class Flor::Pro::Break < Flor::Procedure
|
|
50
50
|
#
|
51
51
|
# While, until, loop and cursor.
|
52
52
|
|
53
|
-
|
53
|
+
names %w[ break continue ]
|
54
54
|
|
55
55
|
def pre_execute
|
56
56
|
|
data/lib/flor/pcore/cursor.rb
CHANGED
@@ -191,6 +191,7 @@ class Flor::Pro::Cursor < Flor::Procedure
|
|
191
191
|
find_string_target(to) ||
|
192
192
|
find_name_target(to) ||
|
193
193
|
find_att_target(to) ||
|
194
|
+
#find_att_value_target(to) ||
|
194
195
|
fail(Flor::FlorError.new("move target #{to.inspect} not found", self))
|
195
196
|
end
|
196
197
|
|
@@ -246,7 +247,16 @@ class Flor::Pro::Cursor < Flor::Procedure
|
|
246
247
|
c[1].find { |cc|
|
247
248
|
cc[0] == '_att' &&
|
248
249
|
cc[1].is_a?(Array) &&
|
249
|
-
cc[1][0][0, 2] == [
|
250
|
+
cc[1][0][0, 2] == [ to, [] ] } }
|
250
251
|
end
|
252
|
+
|
253
|
+
#def find_att_value_target(to)
|
254
|
+
# tree[1]
|
255
|
+
# .index { |c|
|
256
|
+
# c[1].find { |cc|
|
257
|
+
# cc[1].length == 2 &&
|
258
|
+
# cc[1][0][0] != 'to' &&
|
259
|
+
# Flor.is_string_tree?(cc[1][1], to) } }
|
260
|
+
#end
|
251
261
|
end
|
252
262
|
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
|
4
|
+
class Flor::Pro::Del < Flor::Procedure
|
5
|
+
#
|
6
|
+
# Removes a field or a variable.
|
7
|
+
#
|
8
|
+
# ```
|
9
|
+
# sequence
|
10
|
+
# del f.a # blanks field 'a' from the payload
|
11
|
+
# del a # blanks variable 'a'
|
12
|
+
# ```
|
13
|
+
#
|
14
|
+
# Returns the value held in the field or variable or `null` else.
|
15
|
+
#
|
16
|
+
# `del` will raise an error if the target field cannot be reached,
|
17
|
+
# but `delf` will not raise and simply return `null`.
|
18
|
+
|
19
|
+
names %w[ del delf ]
|
20
|
+
|
21
|
+
def pre_execute
|
22
|
+
|
23
|
+
unatt_unkeyed_children
|
24
|
+
rerep_children
|
25
|
+
|
26
|
+
@node['refs'] = []
|
27
|
+
end
|
28
|
+
|
29
|
+
def receive_non_att
|
30
|
+
|
31
|
+
ft = tree[1][@fcid] || []
|
32
|
+
|
33
|
+
if ft[0] == '_rep'
|
34
|
+
@node['refs'] << payload['ret']
|
35
|
+
else
|
36
|
+
payload['ret'] = node_payload_ret
|
37
|
+
end
|
38
|
+
|
39
|
+
super
|
40
|
+
end
|
41
|
+
|
42
|
+
def receive_last
|
43
|
+
|
44
|
+
ret = nil
|
45
|
+
|
46
|
+
@node['refs'].each do |ref|
|
47
|
+
|
48
|
+
ret = (lookup_value(ref) rescue nil)
|
49
|
+
begin
|
50
|
+
unset_value(ref)
|
51
|
+
rescue
|
52
|
+
raise unless tree[0] == 'delf'
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
wrap('ret' => ret)
|
57
|
+
end
|
58
|
+
|
59
|
+
protected
|
60
|
+
|
61
|
+
def rerep_children
|
62
|
+
|
63
|
+
t = tree
|
64
|
+
|
65
|
+
cn = t[1]
|
66
|
+
.collect { |ct|
|
67
|
+
hd, cn, ln = ct
|
68
|
+
if hd == '_ref'
|
69
|
+
[ '_rep', cn, ln ]
|
70
|
+
elsif hd == '_dqs'
|
71
|
+
[ '_rep', [ ct ], ln ]
|
72
|
+
elsif Flor.is_single_ref_tree?(ct)
|
73
|
+
[ '_rep', [ [ '_sqs', hd, ln ] ], ln ]
|
74
|
+
else
|
75
|
+
ct
|
76
|
+
end }
|
77
|
+
|
78
|
+
@node['tree'] = [ t[0], cn, t[2] ] if cn != t[1]
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
data/lib/flor.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Mettraux
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-09-18 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: munemo
|
@@ -180,6 +180,7 @@ files:
|
|
180
180
|
- lib/flor/pcore/cond.rb
|
181
181
|
- lib/flor/pcore/cursor.rb
|
182
182
|
- lib/flor/pcore/define.rb
|
183
|
+
- lib/flor/pcore/del.rb
|
183
184
|
- lib/flor/pcore/detect.rb
|
184
185
|
- lib/flor/pcore/do_return.rb
|
185
186
|
- lib/flor/pcore/each.rb
|