diff options
Diffstat (limited to 'spec/inputs/lists.yue')
| -rw-r--r-- | spec/inputs/lists.yue | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/spec/inputs/lists.yue b/spec/inputs/lists.yue index 921cae0..dd951a5 100644 --- a/spec/inputs/lists.yue +++ b/spec/inputs/lists.yue | |||
| @@ -87,4 +87,194 @@ do | |||
| 87 | [a, b] = hello | 87 | [a, b] = hello |
| 88 | [name = "nameless", job = "jobless"] = person | 88 | [name = "nameless", job = "jobless"] = person |
| 89 | 89 | ||
| 90 | do | ||
| 91 | transactions = ["T001", "T002", "T003", "T004", "T005"] | ||
| 92 | middleTransactions = transactions[2, -2] | ||
| 93 | print middleTransactions -- => {"T002", "T003", "T004"} | ||
| 94 | |||
| 95 | do | ||
| 96 | logs = | ||
| 97 | - start: 0, end: 100 | ||
| 98 | - start: 100, end: 200 | ||
| 99 | - start: 200, end: 123 | ||
| 100 | print logs[#].end -- => 123 | ||
| 101 | |||
| 102 | do | ||
| 103 | pendingOrders = ["O001", "O002", "O003", "O004"] | ||
| 104 | print pendingOrders[# - 1] -- => "O003" | ||
| 105 | |||
| 106 | do | ||
| 107 | getOrders = -> | ||
| 108 | { | ||
| 109 | { id: "O1001", status: "pending" } | ||
| 110 | { id: "O1002", status: "processing" } | ||
| 111 | { id: "O1003", status: "done" } | ||
| 112 | } | ||
| 113 | |||
| 114 | lastStatus = getOrders()[#].status | ||
| 115 | assert lastStatus == "done" | ||
| 116 | |||
| 117 | do | ||
| 118 | cloneList1 = (list) -> list[,] | ||
| 119 | cloneList2 = (list) -> [...list,] | ||
| 120 | cloneTable = (tb) -> {...tb} | ||
| 121 | |||
| 122 | do | ||
| 123 | print( | ||
| 124 | globalTB[#] | ||
| 125 | a.b.c[# - 2] | ||
| 126 | x?\y?!.z?[# - 3] | ||
| 127 | ) | ||
| 128 | |||
| 129 | do | ||
| 130 | f = -> | ||
| 131 | print( | ||
| 132 | globalTB[#]\end 123 | ||
| 133 | a.b.c[5,-5][# - 2] | ||
| 134 | x?\y?!.z?[# - 3]?[, -3] | ||
| 135 | ) | ||
| 136 | |||
| 137 | do | ||
| 138 | tb = [1, 2, 3] | ||
| 139 | tb[#] = 40 | ||
| 140 | tb[# - 1] = 20 | ||
| 141 | |||
| 142 | do | ||
| 143 | a = b = c = "x" | ||
| 144 | lst = [] | ||
| 145 | lst[#] = a | ||
| 146 | lst[# - 1] = b | ||
| 147 | |||
| 148 | do | ||
| 149 | x, y, z = 1, 2, 3 | ||
| 150 | arr = [] | ||
| 151 | arr[#], head = x, y | ||
| 152 | arr[#] = z | ||
| 153 | |||
| 154 | do | ||
| 155 | triple = ["keep", "skip", "tail"] | ||
| 156 | [head, _, tailv] = triple | ||
| 157 | buf = [] | ||
| 158 | buf[#] = head | ||
| 159 | buf[#] = tailv | ||
| 160 | |||
| 161 | do | ||
| 162 | src = ["a", "", "c", nil, "d"] | ||
| 163 | collected = [] | ||
| 164 | for item in *src | ||
| 165 | if item and #item > 0 | ||
| 166 | collected[#] = item | ||
| 167 | |||
| 168 | do | ||
| 169 | nums = [1, 2, 3, 4, 5] | ||
| 170 | last_two = [v for v in *nums when v > 3] | ||
| 171 | nums[#] = last_two[1] | ||
| 172 | nums[#] = last_two[2] | ||
| 173 | |||
| 174 | do | ||
| 175 | store = [] | ||
| 176 | store[#] = { meta: { id: 1, ok: true }, payload: [10, 20] } | ||
| 177 | store[#] = { meta: { id: 1, ok: false }, payload: [10, 20, 30] } | ||
| 178 | |||
| 179 | do | ||
| 180 | f = -> | ||
| 181 | q = [] | ||
| 182 | tb.tmp = [n for n = 1, 4] | ||
| 183 | if #tb.tmp >= 3 | ||
| 184 | q[#] = {head: tb.tmp[1], tail: tb.tmp[#]} | ||
| 185 | |||
| 186 | do | ||
| 187 | make_pair = (a, b) -> [a, b] | ||
| 188 | pairs = [] | ||
| 189 | p1 = make_pair 7, 8 | ||
| 190 | pairs[#] = p1 | ||
| 191 | k, v = "key", 42 | ||
| 192 | pairs[#] = {k: k, v: v} | ||
| 193 | |||
| 194 | do | ||
| 195 | cfg = {mode: "safe", tags: []} | ||
| 196 | if cfg.mode == "safe" | ||
| 197 | cfg.mode = "fast" | ||
| 198 | cfg.tags[#] = "newbie" | ||
| 199 | |||
| 200 | do | ||
| 201 | mat = [ [1,2], [3,4], [5,6]] | ||
| 202 | last_row = mat[#] | ||
| 203 | rows = [] | ||
| 204 | rows[#] = last_row[1] | ||
| 205 | |||
| 206 | do | ||
| 207 | kv = [] | ||
| 208 | kv[#] = {k: "a", v: 1} | ||
| 209 | kv[#] = {k: "b", v: 2} | ||
| 210 | pair_last = kv[#] | ||
| 211 | dict = {} | ||
| 212 | dict[pair_last.k] = pair_last.v | ||
| 213 | dict[pair_last.k] = 3 | ||
| 214 | |||
| 215 | do | ||
| 216 | base = [ i for i = 1, 4 ] | ||
| 217 | pack = [] | ||
| 218 | pack[#] = [ base[1], base[#] ] | ||
| 219 | pack[#] = { first: base[1], last: base[#] } | ||
| 220 | |||
| 221 | do | ||
| 222 | opts = {limit: 10} | ||
| 223 | {:limit, :offset = 0} = opts | ||
| 224 | pages = [] | ||
| 225 | pages[#] = {limit: limit, offset: offset} | ||
| 226 | |||
| 227 | do | ||
| 228 | chain = { a: { b: { c: 0 } }, list: [ {x:0}, {x:0} ] } | ||
| 229 | chain.a.b.c = 1 | ||
| 230 | chain.list[1].x = 10 | ||
| 231 | chain.list[#].x = 20 | ||
| 232 | chain.list[# - 1] = { x: 30 } | ||
| 233 | |||
| 234 | do | ||
| 235 | node = {left: {v:0}, right: {v:0}} | ||
| 236 | bag = [] | ||
| 237 | { :left, :right } = node | ||
| 238 | bag[#], left.v, right.v = "k", 1, 2 | ||
| 239 | |||
| 240 | do | ||
| 241 | a1, a2, a3 = 100, 200, 300 | ||
| 242 | mix = [] | ||
| 243 | mix[#], mix[#], meta = a1, a2, {tag: "ok"} | ||
| 244 | |||
| 245 | do | ||
| 246 | cfg2 = {limit: 5, opts: {flag: false}} | ||
| 247 | {limit: lim, opts: opt2} = cfg2 | ||
| 248 | bucket = {xs: []} | ||
| 249 | bucket.xs[#], bucket.flag, opt2.flags[] = lim, true, 123 | ||
| 250 | |||
| 251 | do | ||
| 252 | ret2 = ()-> 7, 8 | ||
| 253 | box = [] | ||
| 254 | box[#], x1 = ret2! | ||
| 255 | |||
| 256 | do | ||
| 257 | q = [1, 2] | ||
| 258 | lastq = q[#] | ||
| 259 | q[# - 1] = lastq * 10 | ||
| 260 | |||
| 261 | do | ||
| 262 | mat2 = [[9,8], [7,6]] | ||
| 263 | t = { hold: nil } | ||
| 264 | t.hold = mat2[#][1] | ||
| 265 | |||
| 266 | do | ||
| 267 | f = -> globalTB[#][#] = 1 | ||
| 268 | f1 = -> globalTB[#][# - 1] | ||
| 269 | |||
| 270 | do | ||
| 271 | tbA[] = ...tbB | ||
| 272 | a, tb[], b[], c = 1, ...x, 3, 4 | ||
| 273 | |||
| 274 | data = | ||
| 275 | a: {1,2,3} | ||
| 276 | b: {4,5,6} | ||
| 277 | |||
| 278 | flat = [...v for k,v in pairs data] | ||
| 279 | |||
| 90 | nil | 280 | nil |
