1
0
Fork 0
mirror of https://github.com/jashkenas/coffeescript.git synced 2022-11-09 12:23:24 -05:00

for whatever reason, don't need to force else-bodies to compile as statements anymore ... let them do what they want

This commit is contained in:
Jeremy Ashkenas 2009-12-22 12:18:27 -05:00
parent e916d4648d
commit 6555473788
6 changed files with 24 additions and 12 deletions

View file

@ -2,7 +2,7 @@ grade: student =>
if student.excellent_work if student.excellent_work
"A+" "A+"
else if student.okay_stuff else if student.okay_stuff
"B" if student.tried_hard then "B" else "B-".
else else
"C".. "C"..

View file

@ -1,7 +1,7 @@
body { body {
font-size: 14px; font-size: 14px;
line-height: 20px; line-height: 20px;
background: #efefef; background: #efeff9;
color: #191933; color: #191933;
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
} }

View file

@ -39,7 +39,7 @@
<!-- <%# code_for('intro') %>--> <!-- <%# code_for('intro') %>-->
<p> <p>
<b>Disclaimer:</b><br /> <b>Disclaimer:</b>
CoffeeScript is just for fun and seriously alpha. <i>There is no guarantee, CoffeeScript is just for fun and seriously alpha. <i>There is no guarantee,
explicit or implied, of its suitability for any purpose.</i> That said, it explicit or implied, of its suitability for any purpose.</i> That said, it
compiles into pretty-printed JavaScript (the good parts) that can pass through compiles into pretty-printed JavaScript (the good parts) that can pass through

View file

@ -3,7 +3,11 @@
if (student.excellent_work) { if (student.excellent_work) {
return "A+"; return "A+";
} else if (student.okay_stuff) { } else if (student.okay_stuff) {
return "B"; return if (student.tried_hard) {
return "B";
} else {
return "B-";
};
} else { } else {
return "C"; return "C";
} }

View file

@ -26,7 +26,7 @@
<!-- --> <!-- -->
<p> <p>
<b>Disclaimer:</b><br /> <b>Disclaimer:</b>
CoffeeScript is just for fun and seriously alpha. <i>There is no guarantee, CoffeeScript is just for fun and seriously alpha. <i>There is no guarantee,
explicit or implied, of its suitability for any purpose.</i> That said, it explicit or implied, of its suitability for any purpose.</i> That said, it
compiles into pretty-printed JavaScript (the good parts) that can pass through compiles into pretty-printed JavaScript (the good parts) that can pass through
@ -210,7 +210,7 @@ expensive <span class="Keyword">=</span> expensive <span class="Keyword">||</spa
<span class="Keyword">if</span> student.excellent_work <span class="Keyword">if</span> student.excellent_work
<span class="String"><span class="String">&quot;</span>A+<span class="String">&quot;</span></span> <span class="String"><span class="String">&quot;</span>A+<span class="String">&quot;</span></span>
<span class="Keyword">else</span> <span class="Keyword">if</span> student.okay_stuff <span class="Keyword">else</span> <span class="Keyword">if</span> student.okay_stuff
<span class="String"><span class="String">&quot;</span>B<span class="String">&quot;</span></span> <span class="Keyword">if</span> student.tried_hard <span class="Keyword">then</span> <span class="String"><span class="String">&quot;</span>B<span class="String">&quot;</span></span> <span class="Keyword">else</span> <span class="String"><span class="String">&quot;</span>B-<span class="String">&quot;</span></span>.
<span class="Keyword">else</span> <span class="Keyword">else</span>
<span class="String"><span class="String">&quot;</span>C<span class="String">&quot;</span></span>.. <span class="String"><span class="String">&quot;</span>C<span class="String">&quot;</span></span>..
@ -219,7 +219,11 @@ eldest<span class="Keyword">:</span> <span class="Keyword">if</span> <span class
<span class="Keyword">if</span> (student.excellent_work) { <span class="Keyword">if</span> (student.excellent_work) {
<span class="Keyword">return</span> <span class="String"><span class="String">&quot;</span>A+<span class="String">&quot;</span></span>; <span class="Keyword">return</span> <span class="String"><span class="String">&quot;</span>A+<span class="String">&quot;</span></span>;
} <span class="Keyword">else</span> <span class="Keyword">if</span> (student.okay_stuff) { } <span class="Keyword">else</span> <span class="Keyword">if</span> (student.okay_stuff) {
<span class="Keyword">return</span> <span class="String"><span class="String">&quot;</span>B<span class="String">&quot;</span></span>; <span class="Keyword">return</span> <span class="Keyword">if</span> (student.tried_hard) {
<span class="Keyword">return</span> <span class="String"><span class="String">&quot;</span>B<span class="String">&quot;</span></span>;
} <span class="Keyword">else</span> {
<span class="Keyword">return</span> <span class="String"><span class="String">&quot;</span>B-<span class="String">&quot;</span></span>;
};
} <span class="Keyword">else</span> { } <span class="Keyword">else</span> {
<span class="Keyword">return</span> <span class="String"><span class="String">&quot;</span>C<span class="String">&quot;</span></span>; <span class="Keyword">return</span> <span class="String"><span class="String">&quot;</span>C<span class="String">&quot;</span></span>;
} }
@ -229,7 +233,11 @@ eldest<span class="Keyword">:</span> <span class="Keyword">if</span> <span class
if (student.excellent_work) { if (student.excellent_work) {
return "A+"; return "A+";
} else if (student.okay_stuff) { } else if (student.okay_stuff) {
return "B"; return if (student.tried_hard) {
return "B";
} else {
return "B-";
};
} else { } else {
return "C"; return "C";
} }
@ -319,13 +327,13 @@ var three_to_six = nums.slice(3, 6 + 1);
alert(<span class="Variable">this</span>.name <span class="Keyword">+</span> <span class="String"><span class="String">&quot;</span> moved <span class="String">&quot;</span></span> <span class="Keyword">+</span> meters <span class="Keyword">+</span> <span class="String"><span class="String">&quot;</span>m.<span class="String">&quot;</span></span>). alert(<span class="Variable">this</span>.name <span class="Keyword">+</span> <span class="String"><span class="String">&quot;</span> moved <span class="String">&quot;</span></span> <span class="Keyword">+</span> meters <span class="Keyword">+</span> <span class="String"><span class="String">&quot;</span>m.<span class="String">&quot;</span></span>).
<span class="FunctionName">Snake</span><span class="Keyword">:</span> <span class="FunctionArgument">name</span> <span class="Storage">=&gt;</span> <span class="Variable">this</span>.name<span class="Keyword">:</span> name. <span class="FunctionName">Snake</span><span class="Keyword">:</span> <span class="FunctionArgument">name</span> <span class="Storage">=&gt;</span> <span class="Variable">this</span>.name<span class="Keyword">:</span> name.
Snake <span class="Variable">extends</span> <span class="Keyword">new</span> <span class="TypeName">Animal</span>() Snake.prototype<span class="Keyword">:</span> <span class="Keyword">new</span> <span class="TypeName">Animal</span>()
<span class="FunctionName">Snake.prototype.move</span><span class="Keyword">:</span> <span class="Storage">=&gt;</span> <span class="FunctionName">Snake.prototype.move</span><span class="Keyword">:</span> <span class="Storage">=&gt;</span>
alert(<span class="String"><span class="String">&quot;</span>Slithering...<span class="String">&quot;</span></span>) alert(<span class="String"><span class="String">&quot;</span>Slithering...<span class="String">&quot;</span></span>)
<span class="Variable">super</span>(<span class="Number">5</span>). <span class="Variable">super</span>(<span class="Number">5</span>).
<span class="FunctionName">Horse</span><span class="Keyword">:</span> <span class="FunctionArgument">name</span> <span class="Storage">=&gt;</span> <span class="Variable">this</span>.name<span class="Keyword">:</span> name. <span class="FunctionName">Horse</span><span class="Keyword">:</span> <span class="FunctionArgument">name</span> <span class="Storage">=&gt;</span> <span class="Variable">this</span>.name<span class="Keyword">:</span> name.
Horse <span class="Variable">extends</span> <span class="Keyword">new</span> <span class="TypeName">Animal</span>() Horse.prototype<span class="Keyword">:</span> <span class="Keyword">new</span> <span class="TypeName">Animal</span>()
<span class="FunctionName">Horse.prototype.move</span><span class="Keyword">:</span> <span class="Storage">=&gt;</span> <span class="FunctionName">Horse.prototype.move</span><span class="Keyword">:</span> <span class="Storage">=&gt;</span>
alert(<span class="String"><span class="String">&quot;</span>Galloping...<span class="String">&quot;</span></span>) alert(<span class="String"><span class="String">&quot;</span>Galloping...<span class="String">&quot;</span></span>)
<span class="Variable">super</span>(<span class="Number">45</span>). <span class="Variable">super</span>(<span class="Number">45</span>).

View file

@ -648,7 +648,7 @@ module CoffeeScript
def compile(o={}) def compile(o={})
o = super(o) o = super(o)
write(o[:statement] || statement? ? compile_statement(o) : compile_ternary(o)) write(statement? ? compile_statement(o) : compile_ternary(o))
end end
# Compile the IfNode as a regular if-else statement. Flattened chains # Compile the IfNode as a regular if-else statement. Flattened chains
@ -659,7 +659,7 @@ module CoffeeScript
if_part = "if (#{@condition.compile(o.merge(:no_paren => true))}) {\n#{Expressions.wrap(@body).compile(o)}\n#{indent}}" if_part = "if (#{@condition.compile(o.merge(:no_paren => true))}) {\n#{Expressions.wrap(@body).compile(o)}\n#{indent}}"
return if_part unless @else_body return if_part unless @else_body
else_part = chain? ? else_part = chain? ?
" else #{@else_body.compile(o.merge(:statement => true, :indent => indent))}" : " else #{@else_body.compile(o.merge(:indent => indent))}" :
" else {\n#{Expressions.wrap(@else_body).compile(o)}\n#{indent}}" " else {\n#{Expressions.wrap(@else_body).compile(o)}\n#{indent}}"
if_part + else_part if_part + else_part
end end