Skip to content

Commit 424110a

Browse files
authored
Merge pull request #1 from Perryvw/master
Update from upstream
2 parents bf91b1b + d4baae5 commit 424110a

39 files changed

Lines changed: 2534 additions & 1509 deletions

CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Changelog
2+
3+
## 0.5.0
4+
* Added support for `**` operator.
5+
* Added support for `~` operator.
6+
* Improved handling of assignment binary operators (`+=`,`*=`,`&=`, etc).
7+
* Rewrote `Map` and `Set` to implement the ES6 specification for [Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) and [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set).
8+
* Added support for `baseUrl` in [tsconfig](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html).
9+
* Added `bit32` bit operations for Lua 5.2.
10+
* Fixed various little bugs.
11+
* Added tslint rule to enforce use of `/** @override */` decorator.
12+
* Improved tests.
13+
14+
## 0.4.0
15+
* Added support for `typeof`
16+
* Added support for `instanceof`
17+
* Added support for [TypeScript overloads](https://www.typescriptlang.org/docs/handbook/functions.html#overloads)

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ Large projects written in lua can become hard to maintain and make it easy to ma
1111
## Documentation
1212
More detailed documentation and info on writing declarations can be found [on the wiki](https://github.com/Perryvw/TypescriptToLua/wiki).
1313

14+
Changelog can be found in [CHANGELOG.md](https://github.com/Perryvw/TypescriptToLua/blob/master/CHANGELOG.md)
15+
1416
## Usage Guide
1517

1618
**Install**

dist/lualib/typescript.lua

Lines changed: 68 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,16 @@ function TS_push(list, ...)
126126
end
127127
end
128128

129+
function TS_instanceof(obj, class)
130+
while obj ~= nil do
131+
if obj.__index == class then
132+
return true
133+
end
134+
obj = obj.__base
135+
end
136+
return false
137+
end
138+
129139
-- Set data structure implementation
130140
Set = Set or {}
131141
Set.__index = Set
@@ -136,32 +146,50 @@ function Set.new(construct, ...)
136146
end
137147
function Set.constructor(self, other)
138148
self._items = {}
149+
self.size = 0
139150
if other then
140-
for a, _ in pairs(other) do
151+
self.size = #other
152+
for _, a in pairs(other) do
141153
self._items[a] = true
142154
end
143155
end
144156
end
145-
function Set.add(self, item) self._items[item] = true end
146-
function Set.contains(self, item) return self._items[item] ~= nil end
147-
function Set.remove(self, item)
148-
local contains = Set.contains(self, item)
157+
function Set.add(self, item)
158+
self._items[item] = true
159+
self.size = self.size + 1
160+
end
161+
function Set.clear(self)
162+
self._items = {}
163+
self.size = 0
164+
end
165+
function Set.delete(self, item)
166+
local contains = Set.has(self, item)
149167
self._items[item] = nil
168+
self.size = self.size - 1
150169
return contains
151170
end
152-
function Set.items(self)
171+
function Set.entries(self)
153172
local out = {}
154173
for item, _ in pairs(self._items) do
155-
table.insert(out, item)
174+
table.insert(out, {item, item})
156175
end
157176
return out
158177
end
159-
function Set.count(self)
160-
local count = 0
161-
for item, _ in pairs(self._items) do
162-
count = count + 1
178+
function Set.forEach(self, callbackFn)
179+
for k, v in pairs(self._items) do
180+
callbackFn(k, k, self)
181+
end
182+
end
183+
function Set.has(self, item) return self._items[item] ~= nil end
184+
function Set.keys(self)
185+
return Set.values(self)
186+
end
187+
function Set.values(self)
188+
local out = {}
189+
for k, _ in pairs(self._items) do
190+
table.insert(out, k)
163191
end
164-
return count
192+
return out
165193
end
166194

167195
-- Set data structure implementation
@@ -174,45 +202,54 @@ function Map.new(construct, ...)
174202
end
175203
function Map.constructor(self, other)
176204
self._items = {}
205+
self.size = 0
177206
if other then
178-
for k, v in pairs(other) do
179-
self._items[k] = v
207+
self.size = #other
208+
for _, v in pairs(other) do
209+
self._items[v[1]] = v[2]
180210
end
181211
end
182212
end
183-
function Map.put(self, key, value) self._items[key] = value end
184-
function Map.containsKey(self, key) return self._items[key] ~= nil end
185-
function Map.remove(self, key)
186-
local contains = self.containsKey(self, key)
213+
function Map.clear(self)
214+
self._items = {}
215+
self.size = 0
216+
end
217+
function Map.delete(self, key)
218+
local contains = self.has(self, key)
187219
self._items[key] = nil
220+
self.size = self.size - 1
188221
return contains
189222
end
190-
function Map.get(self, key) return self._items[key] end
191-
function Map.keys(self)
223+
function Map.entries(self)
192224
local out = {}
193225
for k, v in pairs(self._items) do
194-
table.insert(out, k)
226+
table.insert(out, {k, v})
195227
end
196228
return out
197229
end
198-
function Map.values(self)
199-
local out = {}
230+
function Map.forEach(self, callbackFn)
200231
for k, v in pairs(self._items) do
201-
table.insert(out, v)
232+
callbackFn(v, k, self)
202233
end
203-
return out
204234
end
205-
function Map.items(self)
235+
function Map.get(self, key) return self._items[key] end
236+
function Map.has(self, key) return self._items[key] ~= nil end
237+
function Map.keys(self)
206238
local out = {}
207239
for k, v in pairs(self._items) do
208-
table.insert(out, {key=k, value=v})
240+
table.insert(out, k)
209241
end
210242
return out
211243
end
212-
function Map.count(self)
213-
local count = 0
244+
function Map.set(self, key, value)
245+
self._items[key] = value
246+
self.size = self.size + 1
247+
return self
248+
end
249+
function Map.values(self)
250+
local out = {}
214251
for k, v in pairs(self._items) do
215-
count = count + 1
252+
table.insert(out, v)
216253
end
217-
return count
254+
return out
218255
end

0 commit comments

Comments
 (0)