| | 1 | #include "tads.h" |
| | 2 | #include "t3.h" |
| | 3 | |
| | 4 | preinit() { } |
| | 5 | |
| | 6 | main(argc) |
| | 7 | { |
| | 8 | local x; |
| | 9 | local y; |
| | 10 | local lst, str; |
| | 11 | |
| | 12 | x = [1, 2, 3].length(); |
| | 13 | |
| | 14 | lst = [4, 5, 6]; |
| | 15 | x = lst.length(); |
| | 16 | |
| | 17 | lst += [7, 8]; |
| | 18 | x = lst.length(); |
| | 19 | |
| | 20 | "[1, 2, 3, 4, 5, 6], keep>3 = |
| | 21 | <<sayList([1,2,3,4,5,6].subset({x: x > 3}))>>\n"; |
| | 22 | |
| | 23 | lst = [6, 5, 4, 3, 2, 1]; |
| | 24 | "lst = <<sayList(lst)>>, keep>3 = |
| | 25 | <<sayList(lst.subset({x: x > 3}))>>\n"; |
| | 26 | |
| | 27 | lst += [9, 0, 10, -1, 11, -2]; |
| | 28 | "lst = <<sayList(lst)>>, keep>3 = |
| | 29 | <<sayList(lst.subset({x: x > 3}))>>\n"; |
| | 30 | |
| | 31 | "lst = <<sayList(lst)>>, *100 = |
| | 32 | <<sayList(lst.mapAll({x: x*100}))>>\n"; |
| | 33 | |
| | 34 | lst += lst; |
| | 35 | "\bConcatenating list to itself: <<sayList(lst)>>\n"; |
| | 36 | "\b"; |
| | 37 | |
| | 38 | "forEach: "; lst.forEach(new function(x) { "<<x>>; "; }); "\n"; |
| | 39 | "\b"; |
| | 40 | |
| | 41 | "indexOf 6: <<lst.indexOf(6)>>\n"; |
| | 42 | "indexOf -2: <<lst.indexOf(-2)>>\n"; |
| | 43 | "indexOf 9: <<lst.indexOf(9)>>\n"; |
| | 44 | "indexOf 123: <<lst.indexOf(123)>>\n"; |
| | 45 | "\b"; |
| | 46 | |
| | 47 | "indexWhich x > 0: <<lst.indexWhich({x: x > 0})>>\n"; |
| | 48 | "indexWhich x > 7: <<lst.indexWhich({x: x > 7})>>\n"; |
| | 49 | "indexWhich x < 0: <<lst.indexWhich({x: x < 0})>>\n"; |
| | 50 | "indexWhich x > 1000: <<lst.indexWhich({x: x > 1000})>>\n"; |
| | 51 | "\b"; |
| | 52 | |
| | 53 | "valWhich x > 0: <<lst.valWhich({x: x > 0})>>\n"; |
| | 54 | "valWhich x > 7: <<lst.valWhich({x: x > 7})>>\n"; |
| | 55 | "valWhich x < 0: <<lst.valWhich({x: x < 0})>>\n"; |
| | 56 | "valWhich x < 4: <<lst.valWhich({x: x < 4})>>\n"; |
| | 57 | "valWhich x > 2000: <<lst.valWhich({x: x > 2000})>>\n"; |
| | 58 | "\b"; |
| | 59 | |
| | 60 | "lastIndexOf 6: <<lst.lastIndexOf(6)>>\n"; |
| | 61 | "lastIndexOf -2: <<lst.lastIndexOf(-2)>>\n"; |
| | 62 | "lastIndexOf 9: <<lst.lastIndexOf(9)>>\n"; |
| | 63 | "lastIndexOf 123: <<lst.lastIndexOf(123)>>\n"; |
| | 64 | "\b"; |
| | 65 | |
| | 66 | "lastIndexWhich x > 0: <<lst.lastIndexWhich({x: x > 0})>>\n"; |
| | 67 | "lastIndexWhich x < 0: <<lst.lastIndexWhich({x: x < 0})>>\n"; |
| | 68 | "lastIndexWhich x > 10: <<lst.lastIndexWhich({x: x > 10})>>\n"; |
| | 69 | "lastIndexWhich x > 2000: <<lst.lastIndexWhich({x: x > 2000})>>\n"; |
| | 70 | "\b"; |
| | 71 | |
| | 72 | "lastValWhich x > 0: <<lst.lastValWhich({x: x > 0})>>\n"; |
| | 73 | "lastValWhich x < 0: <<lst.lastValWhich({x: x < 0})>>\n"; |
| | 74 | "lastValWhich x > 500: <<lst.lastValWhich({x: x > 500})>>\n"; |
| | 75 | "lastValWhich x > 2000: <<lst.lastValWhich({x: x > 2000})>>\n"; |
| | 76 | "\b"; |
| | 77 | |
| | 78 | "countOf 6: <<lst.countOf(6)>>\n"; |
| | 79 | "countOf 5: <<lst.countOf(5)>>\n"; |
| | 80 | "countOf -2: <<lst.countOf(-2)>>\n"; |
| | 81 | "countOf 123: <<lst.countOf(123)>>\n"; |
| | 82 | "\b"; |
| | 83 | |
| | 84 | "countWhich x > 0: <<lst.countWhich({x: x > 0})>>\n"; |
| | 85 | "countWhich x > 2000: <<lst.countWhich({x: x > 2000})>>\n"; |
| | 86 | "countWhich x < 2000: <<lst.countWhich({x: x < 2000})>>\n"; |
| | 87 | "\b"; |
| | 88 | |
| | 89 | "getUnique: <<sayList(lst.getUnique())>>\n"; |
| | 90 | "getUnique [5, 1, 5, 2, 5, 5, 2, 7]: |
| | 91 | <<sayList([5, 1, 5, 2, 5, 5, 2, 7].getUnique())>>\n"; |
| | 92 | "\b"; |
| | 93 | |
| | 94 | lst = [1, 2, 3, 4, 5]; |
| | 95 | "appendUnique: <<sayList(lst.appendUnique([2, 4, 6, 8, 10, 12]))>>\n"; |
| | 96 | |
| | 97 | lst += 6; |
| | 98 | "appendUnique: <<sayList(lst.appendUnique([3, 4, 5, 6, 7]))>>\n"; |
| | 99 | |
| | 100 | y = [1, 3, 5]; |
| | 101 | y += [3, 5]; |
| | 102 | "appendUnique: <<sayList(lst.appendUnique(y))>>\n"; |
| | 103 | |
| | 104 | y += [9, 11]; |
| | 105 | "appendUnique: <<sayList(lst.appendUnique(y))>>\n"; |
| | 106 | |
| | 107 | "\b"; |
| | 108 | "append 77: <<sayList(lst.append(77))>>\n"; |
| | 109 | "append [11,22,33]: <<sayList(lst.append([11,22,33]))>>\n"; |
| | 110 | |
| | 111 | "\b"; |
| | 112 | y = [11, 20, 1, 17, 5, 3]; |
| | 113 | y += [9, 8, 7, 6]; |
| | 114 | "sort: <<sayList(y.sort())>>\n"; |
| | 115 | "sort descending: <<sayList(y.sort(true))>>\n"; |
| | 116 | "sort in string ordering: |
| | 117 | <<sayList(y.sort(nil, |
| | 118 | {a, b: toString(a) > toString(b) |
| | 119 | ? 1 : toString(a) < toString(b) ? -1 : 0}))>>\n"; |
| | 120 | |
| | 121 | "\b"; |
| | 122 | |
| | 123 | y = [1, 2, 3, 4, 5]; |
| | 124 | y = y.prepend(77); |
| | 125 | y = y.prepend(88); |
| | 126 | y = y.prepend(99); |
| | 127 | "prepend: <<sayList(y)>>\n"; |
| | 128 | |
| | 129 | "\b"; |
| | 130 | |
| | 131 | y = [10, 20, 30, 40, 50]; |
| | 132 | y = y.insertAt(1, 1, 2, 3); |
| | 133 | "insert1: <<sayList(y)>>\n"; |
| | 134 | |
| | 135 | y = y.insertAt(9, 44, 55, 66); |
| | 136 | "insert2: <<sayList(y)>>\n"; |
| | 137 | |
| | 138 | y = y.insertAt(5, 777, 888, 999); |
| | 139 | "insert3: <<sayList(y)>>\n"; |
| | 140 | |
| | 141 | "\b"; |
| | 142 | |
| | 143 | y = y.removeElementAt(6); |
| | 144 | "removeAt(6): <<sayList(y)>>\n"; |
| | 145 | |
| | 146 | y = y.removeElementAt(1); |
| | 147 | "removeAt(1): <<sayList(y)>>\n"; |
| | 148 | |
| | 149 | y = y.removeElementAt(y.length()); |
| | 150 | "removeAt(length): <<sayList(y)>>\n"; |
| | 151 | |
| | 152 | "\b"; |
| | 153 | |
| | 154 | y = y.removeRange(3, 7); |
| | 155 | "removeRange(3, 7): <<sayList(y)>>\n"; |
| | 156 | |
| | 157 | y = y.removeRange(1, 2); |
| | 158 | "removeRange(1, 2): <<sayList(y)>>\n"; |
| | 159 | |
| | 160 | y = y.removeRange(y.length() - 1, y.length()); |
| | 161 | "removeRange(length-1, length): <<sayList(y)>>\n"; |
| | 162 | |
| | 163 | "\b"; |
| | 164 | |
| | 165 | "'goodbye', len = <<'goodbye'.length()>>\n"; |
| | 166 | |
| | 167 | str = 'hello'; |
| | 168 | "str = '<<str>>', len = <<str.length()>>\n"; |
| | 169 | |
| | 170 | str += '!!!'; |
| | 171 | "str = '<<str>>', len = <<str.length()>>\n"; |
| | 172 | |
| | 173 | "'goodbye', substr(5) = <<'goodbye'.substr(5)>>\n"; |
| | 174 | "'goodbye', substr(4, 2) = <<'goodbye'.substr(4, 2)>>\n"; |
| | 175 | |
| | 176 | str = 'hello there'; |
| | 177 | "str = '<<str>>', substr(5) = <<str.substr(5)>>\n"; |
| | 178 | "str = '<<str>>', substr(4, 2) = <<str.substr(4, 2)>>\n"; |
| | 179 | |
| | 180 | str += '!!!'; |
| | 181 | "str = '<<str>>', substr(5) = <<str.substr(5)>>\n"; |
| | 182 | "str = '<<str>>', substr(4, 2) = <<str.substr(4, 2)>>\n"; |
| | 183 | } |
| | 184 | |
| | 185 | sayList(lst) |
| | 186 | { |
| | 187 | if (lst == nil) |
| | 188 | "nil"; |
| | 189 | else |
| | 190 | { |
| | 191 | "["; |
| | 192 | for (local i = 1, local cnt = lst.length() ; i <= cnt ; ++i) |
| | 193 | { |
| | 194 | if (i != 1) |
| | 195 | ", "; |
| | 196 | if (dataType(lst[i]) == TypeList) |
| | 197 | sayList(lst[i]); |
| | 198 | else |
| | 199 | tadsSay(lst[i]); |
| | 200 | } |
| | 201 | "]"; |
| | 202 | } |
| | 203 | } |