From d127557dd0678482e1f91618842f15315f843d5b Mon Sep 17 00:00:00 2001 From: Li Jin Date: Wed, 4 Jun 2025 16:53:57 +0800 Subject: Updated docs. [skip CI] --- doc/docs/doc/README.md | 4 +- doc/docs/zh/doc/README.md | 4 +- spec/outputs/codes_from_doc.lua | 246 +++++++++++++++++++++++++++++++++++++ spec/outputs/codes_from_doc_zh.lua | 246 +++++++++++++++++++++++++++++++++++++ 4 files changed, 496 insertions(+), 4 deletions(-) diff --git a/doc/docs/doc/README.md b/doc/docs/doc/README.md index 9f7d969..a607036 100755 --- a/doc/docs/doc/README.md +++ b/doc/docs/doc/README.md @@ -1333,7 +1333,7 @@ The spread operator can be used in different positions to capture different rang [...start, last] = orders -- Capture things except the middle elements -[first, _..., last] = orders +[first, ..._, last] = orders ```
@@ -1344,7 +1344,7 @@ The spread operator can be used in different positions to capture different rang
 [...start, last] = orders
 
 -- Capture things except the middle elements
-[first, _..., last] = orders
+[first, ..._, last] = orders
 
diff --git a/doc/docs/zh/doc/README.md b/doc/docs/zh/doc/README.md index 4152591..7ff205c 100755 --- a/doc/docs/zh/doc/README.md +++ b/doc/docs/zh/doc/README.md @@ -1331,7 +1331,7 @@ print last -- 打印: last [...start, last] = orders -- 跳过中间的元素,只捕获第一个和最后一个元素 -[first, _..., last] = orders +[first, ..._, last] = orders ```
@@ -1342,7 +1342,7 @@ print last   -- 打印: last
 [...start, last] = orders
 
 -- 跳过中间的元素,只捕获第一个和最后一个元素
-[first, _..., last] = orders
+[first, ..._, last] = orders
 
diff --git a/spec/outputs/codes_from_doc.lua b/spec/outputs/codes_from_doc.lua index e137823..085179c 100644 --- a/spec/outputs/codes_from_doc.lua +++ b/spec/outputs/codes_from_doc.lua @@ -209,6 +209,14 @@ for _key_0, _value_0 in pairs(b) do end end merge = _tab_0 +print((function() + local _item_0 = data.items + return _item_0[#_item_0] +end)()) +print((function() + local _item_0 = data.items + return _item_0[#_item_0 - 1] +end)()) local mt = { } local add add = function(self, right) @@ -587,6 +595,59 @@ end local two, four local _obj_0 = items two, four = _obj_0[2], _obj_0[4] +local orders = { + "first", + "second", + "third", + "fourth", + "last" +} +local first, bulk, last = orders[1], (function() + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #orders + -2 + 1 + for _index_0 = 2, _max_0 do + local _item_0 = orders[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + return _accum_0 +end)(), orders[#orders] +print(first) +print(bulk) +print(last) +local first, rest +do + local _obj_0 = orders + first, rest = _obj_0[1], (function() + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #_obj_0 + for _index_0 = 2, _max_0 do + local _item_0 = _obj_0[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + return _accum_0 + end)() +end +local start, last +do + local _obj_0 = orders + start, last = (function() + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #_obj_0 + -2 + 1 + for _index_0 = 1, _max_0 do + local _item_0 = _obj_0[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + return _accum_0 + end)(), _obj_0[#_obj_0] +end +local _obj_0 = orders +first, last = _obj_0[1], _obj_0[#_obj_0] local tuples = { { "hello", @@ -1090,6 +1151,39 @@ for _index_0 = 1, _max_0, 2 do _len_0 = _len_0 + 1 end slice = _accum_0 +local slice +local _accum_0 = { } +local _len_0 = 1 +local _list_0 = items +local _min_0 = #_list_0 + -4 + 1 +local _max_0 = #_list_0 + -1 + 1 +for _index_0 = _min_0, _max_0 do + local item = _list_0[_index_0] + _accum_0[_len_0] = item + _len_0 = _len_0 + 1 +end +slice = _accum_0 +local reverse_slice +local _accum_0 = { } +local _len_0 = 1 +local _list_0 = items +local _min_0 = #_list_0 + -1 + 1 +for _index_0 = _min_0, 1, -1 do + local item = _list_0[_index_0] + _accum_0[_len_0] = item + _len_0 = _len_0 + 1 +end +reverse_slice = _accum_0 +local sub_list +local _accum_0 = { } +local _len_0 = 1 +local _list_0 = items +for _index_0 = 2, 4 do + local _item_0 = _list_0[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 +end +sub_list = _accum_0 for i = 10, 20 do print(i) end @@ -1541,6 +1635,35 @@ if _tab_0 then print("matched", fourth) end end +local segments = { + "admin", + "users", + "logs", + "view" +} +local _type_0 = type(segments) +local _tab_0 = "table" == _type_0 or "userdata" == _type_0 +if _tab_0 then + local groups + do + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #segments + -3 + 1 + for _index_0 = 1, _max_0 do + local _item_0 = segments[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + groups = _accum_0 + end + local resource = segments[#segments - 1] + local action = segments[#segments] + if resource ~= nil and action ~= nil then + print("Group:", groups) + print("Resource:", resource) + print("Action:", action) + end +end local Inventory local _class_0 local _base_0 = { @@ -2480,6 +2603,14 @@ for _key_0, _value_0 in pairs(b) do end end merge = _tab_0 +print((function() + local _item_0 = data.items + return _item_0[#_item_0] +end)()) +print((function() + local _item_0 = data.items + return _item_0[#_item_0 - 1] +end)()) local mt = { } local add add = function(self, right) @@ -2858,6 +2989,59 @@ end local two, four local _obj_0 = items two, four = _obj_0[2], _obj_0[4] +local orders = { + "first", + "second", + "third", + "fourth", + "last" +} +local first, bulk, last = orders[1], (function() + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #orders + -2 + 1 + for _index_0 = 2, _max_0 do + local _item_0 = orders[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + return _accum_0 +end)(), orders[#orders] +print(first) +print(bulk) +print(last) +local first, rest +do + local _obj_0 = orders + first, rest = _obj_0[1], (function() + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #_obj_0 + for _index_0 = 2, _max_0 do + local _item_0 = _obj_0[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + return _accum_0 + end)() +end +local start, last +do + local _obj_0 = orders + start, last = (function() + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #_obj_0 + -2 + 1 + for _index_0 = 1, _max_0 do + local _item_0 = _obj_0[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + return _accum_0 + end)(), _obj_0[#_obj_0] +end +local _obj_0 = orders +first, last = _obj_0[1], _obj_0[#_obj_0] local tuples = { { "hello", @@ -3360,6 +3544,39 @@ for _index_0 = 1, _max_0, 2 do _len_0 = _len_0 + 1 end slice = _accum_0 +local slice +local _accum_0 = { } +local _len_0 = 1 +local _list_0 = items +local _min_0 = #_list_0 + -4 + 1 +local _max_0 = #_list_0 + -1 + 1 +for _index_0 = _min_0, _max_0 do + local item = _list_0[_index_0] + _accum_0[_len_0] = item + _len_0 = _len_0 + 1 +end +slice = _accum_0 +local reverse_slice +local _accum_0 = { } +local _len_0 = 1 +local _list_0 = items +local _min_0 = #_list_0 + -1 + 1 +for _index_0 = _min_0, 1, -1 do + local item = _list_0[_index_0] + _accum_0[_len_0] = item + _len_0 = _len_0 + 1 +end +reverse_slice = _accum_0 +local sub_list +local _accum_0 = { } +local _len_0 = 1 +local _list_0 = items +for _index_0 = 2, 4 do + local _item_0 = _list_0[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 +end +sub_list = _accum_0 for i = 10, 20 do print(i) end @@ -3811,6 +4028,35 @@ if _tab_0 then print("matched", fourth) end end +local segments = { + "admin", + "users", + "logs", + "view" +} +local _type_0 = type(segments) +local _tab_0 = "table" == _type_0 or "userdata" == _type_0 +if _tab_0 then + local groups + do + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #segments + -3 + 1 + for _index_0 = 1, _max_0 do + local _item_0 = segments[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + groups = _accum_0 + end + local resource = segments[#segments - 1] + local action = segments[#segments] + if resource ~= nil and action ~= nil then + print("Group:", groups) + print("Resource:", resource) + print("Action:", action) + end +end local Inventory local _class_0 local _base_0 = { diff --git a/spec/outputs/codes_from_doc_zh.lua b/spec/outputs/codes_from_doc_zh.lua index c6ba43d..bb9af58 100644 --- a/spec/outputs/codes_from_doc_zh.lua +++ b/spec/outputs/codes_from_doc_zh.lua @@ -209,6 +209,14 @@ for _key_0, _value_0 in pairs(b) do end end merge = _tab_0 +print((function() + local _item_0 = data.items + return _item_0[#_item_0] +end)()) +print((function() + local _item_0 = data.items + return _item_0[#_item_0 - 1] +end)()) local mt = { } local add add = function(self, right) @@ -587,6 +595,59 @@ end local two, four local _obj_0 = items two, four = _obj_0[2], _obj_0[4] +local orders = { + "first", + "second", + "third", + "fourth", + "last" +} +local first, bulk, last = orders[1], (function() + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #orders + -2 + 1 + for _index_0 = 2, _max_0 do + local _item_0 = orders[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + return _accum_0 +end)(), orders[#orders] +print(first) +print(bulk) +print(last) +local first, rest +do + local _obj_0 = orders + first, rest = _obj_0[1], (function() + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #_obj_0 + for _index_0 = 2, _max_0 do + local _item_0 = _obj_0[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + return _accum_0 + end)() +end +local start, last +do + local _obj_0 = orders + start, last = (function() + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #_obj_0 + -2 + 1 + for _index_0 = 1, _max_0 do + local _item_0 = _obj_0[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + return _accum_0 + end)(), _obj_0[#_obj_0] +end +local _obj_0 = orders +first, last = _obj_0[1], _obj_0[#_obj_0] local tuples = { { "hello", @@ -1084,6 +1145,39 @@ for _index_0 = 1, _max_0, 2 do _len_0 = _len_0 + 1 end slice = _accum_0 +local slice +local _accum_0 = { } +local _len_0 = 1 +local _list_0 = items +local _min_0 = #_list_0 + -4 + 1 +local _max_0 = #_list_0 + -1 + 1 +for _index_0 = _min_0, _max_0 do + local item = _list_0[_index_0] + _accum_0[_len_0] = item + _len_0 = _len_0 + 1 +end +slice = _accum_0 +local reverse_slice +local _accum_0 = { } +local _len_0 = 1 +local _list_0 = items +local _min_0 = #_list_0 + -1 + 1 +for _index_0 = _min_0, 1, -1 do + local item = _list_0[_index_0] + _accum_0[_len_0] = item + _len_0 = _len_0 + 1 +end +reverse_slice = _accum_0 +local sub_list +local _accum_0 = { } +local _len_0 = 1 +local _list_0 = items +for _index_0 = 2, 4 do + local _item_0 = _list_0[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 +end +sub_list = _accum_0 for i = 10, 20 do print(i) end @@ -1535,6 +1629,35 @@ if _tab_0 then print("匹配成功", fourth) end end +local segments = { + "admin", + "users", + "logs", + "view" +} +local _type_0 = type(segments) +local _tab_0 = "table" == _type_0 or "userdata" == _type_0 +if _tab_0 then + local groups + do + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #segments + -3 + 1 + for _index_0 = 1, _max_0 do + local _item_0 = segments[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + groups = _accum_0 + end + local resource = segments[#segments - 1] + local action = segments[#segments] + if resource ~= nil and action ~= nil then + print("Group:", groups) + print("Resource:", resource) + print("Action:", action) + end +end local Inventory local _class_0 local _base_0 = { @@ -2474,6 +2597,14 @@ for _key_0, _value_0 in pairs(b) do end end merge = _tab_0 +print((function() + local _item_0 = data.items + return _item_0[#_item_0] +end)()) +print((function() + local _item_0 = data.items + return _item_0[#_item_0 - 1] +end)()) local mt = { } local add add = function(self, right) @@ -2852,6 +2983,59 @@ end local two, four local _obj_0 = items two, four = _obj_0[2], _obj_0[4] +local orders = { + "first", + "second", + "third", + "fourth", + "last" +} +local first, bulk, last = orders[1], (function() + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #orders + -2 + 1 + for _index_0 = 2, _max_0 do + local _item_0 = orders[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + return _accum_0 +end)(), orders[#orders] +print(first) +print(bulk) +print(last) +local first, rest +do + local _obj_0 = orders + first, rest = _obj_0[1], (function() + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #_obj_0 + for _index_0 = 2, _max_0 do + local _item_0 = _obj_0[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + return _accum_0 + end)() +end +local start, last +do + local _obj_0 = orders + start, last = (function() + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #_obj_0 + -2 + 1 + for _index_0 = 1, _max_0 do + local _item_0 = _obj_0[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + return _accum_0 + end)(), _obj_0[#_obj_0] +end +local _obj_0 = orders +first, last = _obj_0[1], _obj_0[#_obj_0] local tuples = { { "hello", @@ -3348,6 +3532,39 @@ for _index_0 = 1, _max_0, 2 do _len_0 = _len_0 + 1 end slice = _accum_0 +local slice +local _accum_0 = { } +local _len_0 = 1 +local _list_0 = items +local _min_0 = #_list_0 + -4 + 1 +local _max_0 = #_list_0 + -1 + 1 +for _index_0 = _min_0, _max_0 do + local item = _list_0[_index_0] + _accum_0[_len_0] = item + _len_0 = _len_0 + 1 +end +slice = _accum_0 +local reverse_slice +local _accum_0 = { } +local _len_0 = 1 +local _list_0 = items +local _min_0 = #_list_0 + -1 + 1 +for _index_0 = _min_0, 1, -1 do + local item = _list_0[_index_0] + _accum_0[_len_0] = item + _len_0 = _len_0 + 1 +end +reverse_slice = _accum_0 +local sub_list +local _accum_0 = { } +local _len_0 = 1 +local _list_0 = items +for _index_0 = 2, 4 do + local _item_0 = _list_0[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 +end +sub_list = _accum_0 for i = 10, 20 do print(i) end @@ -3799,6 +4016,35 @@ if _tab_0 then print("匹配成功", fourth) end end +local segments = { + "admin", + "users", + "logs", + "view" +} +local _type_0 = type(segments) +local _tab_0 = "table" == _type_0 or "userdata" == _type_0 +if _tab_0 then + local groups + do + local _accum_0 = { } + local _len_0 = 1 + local _max_0 = #segments + -3 + 1 + for _index_0 = 1, _max_0 do + local _item_0 = segments[_index_0] + _accum_0[_len_0] = _item_0 + _len_0 = _len_0 + 1 + end + groups = _accum_0 + end + local resource = segments[#segments - 1] + local action = segments[#segments] + if resource ~= nil and action ~= nil then + print("Group:", groups) + print("Resource:", resource) + print("Action:", action) + end +end local Inventory local _class_0 local _base_0 = { -- cgit v1.2.3-55-g6feb