aboutsummaryrefslogtreecommitdiff
path: root/spec/inputs/class.moon
diff options
context:
space:
mode:
Diffstat (limited to 'spec/inputs/class.moon')
-rw-r--r--spec/inputs/class.moon213
1 files changed, 213 insertions, 0 deletions
diff --git a/spec/inputs/class.moon b/spec/inputs/class.moon
new file mode 100644
index 0000000..9a98055
--- /dev/null
+++ b/spec/inputs/class.moon
@@ -0,0 +1,213 @@
1
2class Hello
3 new: (@test, @world) =>
4 print "creating object.."
5 hello: =>
6 print @test, @world
7 __tostring: => "hello world"
8
9x = Hello 1,2
10x\hello()
11
12print x
13
14class Simple
15 cool: => print "cool"
16
17class Yikes extends Simple
18 new: => print "created hello"
19
20x = Yikes()
21x\cool()
22
23
24class Hi
25 new: (arg) =>
26 print "init arg", arg
27
28 cool: (num) =>
29 print "num", num
30
31
32class Simple extends Hi
33 new: => super "man"
34 cool: => super 120302
35
36x = Simple()
37x\cool()
38
39print x.__class == Simple
40
41
42class Okay
43 -- what is going on
44 something: 20323
45 -- yeaha
46
47
48class Biggie extends Okay
49 something: =>
50 super 1,2,3,4
51 super.something another_self, 1,2,3,4
52 assert super == Okay
53
54
55class Yeah
56 okay: =>
57 super\something 1,2,3,4
58
59
60class What
61 something: => print "val:", @val
62
63class Hello extends What
64 val: 2323
65 something: => super\something
66
67with Hello!
68 x = \something!
69 print x
70 x!
71
72class CoolSuper
73 hi: =>
74 super(1,2,3,4) 1,2,3,4
75 super.something 1,2,3,4
76 super.something(1,2,3,4).world
77 super\yeah"world".okay hi, hi, hi
78 something.super
79 super.super.super.super
80 super\hello
81 nil
82
83
84-- selfing
85x = @hello
86x = @@hello
87
88@hello "world"
89@@hello "world"
90
91@@one @@two(4,5) @three, @four
92
93xx = (@hello, @@world, cool) ->
94
95
96-- class properties
97class ClassMan
98 @yeah: 343
99 blue: =>
100 @hello: 3434, @world: 23423
101 green: =>
102 @red: =>
103
104
105x = @
106y = @@
107
108@ something
109
110@@ something
111
112@ = @ + @ / @
113
114@ = 343
115@.hello 2,3,4
116
117hello[@].world
118
119
120class Whacko
121 @hello
122 if something
123 print "hello world"
124
125 hello = "world"
126 @another = "day"
127
128 print "yeah" if something -- this is briken
129
130
131print "hello"
132
133yyy = ->
134 class Cool
135 nil
136
137
138--
139
140class a.b.c.D
141 nil
142
143
144class a.b["hello"]
145 nil
146
147class (-> require "moon")!.Something extends Hello.World
148 nil
149
150--
151
152a = class
153b = class Something
154c = class Something extends Hello
155d = class extends World
156
157print (class WhatsUp).__name
158
159--
160
161export ^
162class Something
163 nil
164
165
166--
167
168-- hoisting
169class Something
170 val = 23
171 {:insert} = table
172 new: => print insert, val -- prints nil 23
173
174--
175
176class X
177 new: hi
178
179
180--
181
182class Cool extends Thing
183 dang: =>
184 {
185 hello: -> super!
186 world: -> super.one
187 }
188
189--
190
191class Whack extends Thing
192 dang: do_something =>
193 super!
194
195---
196
197class Wowha extends Thing
198 @butt: ->
199 super!
200 super.hello
201 super\hello!
202 super\hello
203
204
205 @zone: cool {
206 ->
207 super!
208 super.hello
209 super\hello!
210 super\hello
211 }
212
213nil