mirror of
https://github.com/jashkenas/coffeescript.git
synced 2026-02-18 11:31:20 -05:00
CoffeeScript 0.2.3, with 'of', not 'ino'
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
Gem::Specification.new do |s|
|
Gem::Specification.new do |s|
|
||||||
s.name = 'coffee-script'
|
s.name = 'coffee-script'
|
||||||
s.version = '0.2.2' # Keep version in sync with coffee-script.rb
|
s.version = '0.2.3' # Keep version in sync with coffee-script.rb
|
||||||
s.date = '2010-1-10'
|
s.date = '2010-1-10'
|
||||||
|
|
||||||
s.homepage = "http://jashkenas.github.com/coffee-script/"
|
s.homepage = "http://jashkenas.github.com/coffee-script/"
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
# The first ten global properties.
|
# The first ten global properties.
|
||||||
|
|
||||||
globals: (name for name ino window)[0...10]
|
globals: (name for name of window)[0...10]
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
years_old: {max: 10, ida: 9, tim: 11}
|
years_old: {max: 10, ida: 9, tim: 11}
|
||||||
|
|
||||||
ages: for child, age ino years_old
|
ages: for child, age of years_old
|
||||||
child + " is " + age
|
child + " is " + age
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
<b>Latest Version:</b>
|
<b>Latest Version:</b>
|
||||||
<a href="http://gemcutter.org/gems/coffee-script">0.2.2</a>
|
<a href="http://gemcutter.org/gems/coffee-script">0.2.3</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
@@ -415,8 +415,8 @@ coffee --print app/scripts/*.coffee > concatenation.js</pre>
|
|||||||
<%= code_for('range_comprehensions', 'countdown') %>
|
<%= code_for('range_comprehensions', 'countdown') %>
|
||||||
<p>
|
<p>
|
||||||
Comprehensions can also be used to iterate over the keys and values in
|
Comprehensions can also be used to iterate over the keys and values in
|
||||||
an object. Use <tt>ino</tt> to signal comprehension over an object instead
|
an object. Use <tt>of</tt> to signal comprehension over the properties of
|
||||||
of an array.
|
an object instead of the values in an array.
|
||||||
</p>
|
</p>
|
||||||
<%= code_for('object_comprehensions', 'ages.join(", ")') %>
|
<%= code_for('object_comprehensions', 'ages.join(", ")') %>
|
||||||
|
|
||||||
@@ -588,6 +588,12 @@ coffee --print app/scripts/*.coffee > concatenation.js</pre>
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2 id="change_log">Change Log</h2>
|
<h2 id="change_log">Change Log</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<b class="header" style="margin-top: 20px;">0.2.3</b>
|
||||||
|
Axed the unsatisfactory <tt>ino</tt> keyword, replacing it with <tt>of</tt> for
|
||||||
|
object comprehensions. They now look like: <tt>for key, value of object</tt>.
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<b class="header" style="margin-top: 20px;">0.2.2</b>
|
<b class="header" style="margin-top: 20px;">0.2.2</b>
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
<span class="line-numbers"> 22 </span> <span class="Comment"><span class="Comment">#</span> can be used OO-style. This wrapper holds altered versions of all the</span>
|
<span class="line-numbers"> 22 </span> <span class="Comment"><span class="Comment">#</span> can be used OO-style. This wrapper holds altered versions of all the</span>
|
||||||
<span class="line-numbers"> 23 </span> <span class="Comment"><span class="Comment">#</span> underscore functions. Wrapped objects may be chained.</span>
|
<span class="line-numbers"> 23 </span> <span class="Comment"><span class="Comment">#</span> underscore functions. Wrapped objects may be chained.</span>
|
||||||
<span class="line-numbers"> 24 </span> <span class="FunctionArgument"> wrapper: obj </span><span class="Storage">=></span>
|
<span class="line-numbers"> 24 </span> <span class="FunctionArgument"> wrapper: obj </span><span class="Storage">=></span>
|
||||||
<span class="line-numbers"> 25 </span> <span class="Variable">this</span>.<span class="FunctionName">_wrapped</span><span class="Keyword">:</span> obj
|
<span class="line-numbers"> 25 </span> <span class="FunctionName">this._wrapped</span><span class="Keyword">:</span> obj
|
||||||
<span class="line-numbers"> 26 </span> <span class="Variable">this</span>
|
<span class="line-numbers"> 26 </span> <span class="Variable">this</span>
|
||||||
<span class="line-numbers"> 27 </span>
|
<span class="line-numbers"> 27 </span>
|
||||||
<span class="line-numbers"> 28 </span>
|
<span class="line-numbers"> 28 </span>
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
<span class="line-numbers"> 35 </span>
|
<span class="line-numbers"> 35 </span>
|
||||||
<span class="line-numbers"> 36 </span>
|
<span class="line-numbers"> 36 </span>
|
||||||
<span class="line-numbers"> 37 </span> <span class="Comment"><span class="Comment">#</span> Export the Underscore object for CommonJS.</span>
|
<span class="line-numbers"> 37 </span> <span class="Comment"><span class="Comment">#</span> Export the Underscore object for CommonJS.</span>
|
||||||
<span class="line-numbers"> 38 </span> <span class="Keyword">if</span> <span class="Keyword">typeof</span>(exports) <span class="Keyword">!</span><span class="Keyword">=</span> <span class="String"><span class="String">'</span>undefined<span class="String">'</span></span> <span class="Keyword">then</span> exports.<span class="FunctionName">_</span><span class="Keyword">:</span> _
|
<span class="line-numbers"> 38 </span> <span class="Keyword">if</span> <span class="Keyword">typeof</span>(exports) <span class="Keyword">!</span><span class="Keyword">=</span> <span class="String"><span class="String">'</span>undefined<span class="String">'</span></span> <span class="Keyword">then</span> <span class="FunctionName">exports._</span><span class="Keyword">:</span> _
|
||||||
<span class="line-numbers"> 39 </span>
|
<span class="line-numbers"> 39 </span>
|
||||||
<span class="line-numbers"> 40 </span>
|
<span class="line-numbers"> 40 </span>
|
||||||
<span class="line-numbers"> 41 </span> <span class="Comment"><span class="Comment">#</span> Create quick reference variables for speed access to core prototypes.</span>
|
<span class="line-numbers"> 41 </span> <span class="Comment"><span class="Comment">#</span> Create quick reference variables for speed access to core prototypes.</span>
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
<span class="line-numbers"> 47 </span>
|
<span class="line-numbers"> 47 </span>
|
||||||
<span class="line-numbers"> 48 </span>
|
<span class="line-numbers"> 48 </span>
|
||||||
<span class="line-numbers"> 49 </span> <span class="Comment"><span class="Comment">#</span> Current version.</span>
|
<span class="line-numbers"> 49 </span> <span class="Comment"><span class="Comment">#</span> Current version.</span>
|
||||||
<span class="line-numbers"> 50 </span> _.<span class="FunctionName">VERSION</span><span class="Keyword">:</span> <span class="String"><span class="String">'</span>0.5.5<span class="String">'</span></span>
|
<span class="line-numbers"> 50 </span> <span class="FunctionName">_.VERSION</span><span class="Keyword">:</span> <span class="String"><span class="String">'</span>0.5.5<span class="String">'</span></span>
|
||||||
<span class="line-numbers"> 51 </span>
|
<span class="line-numbers"> 51 </span>
|
||||||
<span class="line-numbers"> 52 </span>
|
<span class="line-numbers"> 52 </span>
|
||||||
<span class="line-numbers"> 53 </span> <span class="Comment"><span class="Comment">#</span> ------------------------ Collection Functions: ---------------------------</span>
|
<span class="line-numbers"> 53 </span> <span class="Comment"><span class="Comment">#</span> ------------------------ Collection Functions: ---------------------------</span>
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
<span class="line-numbers"> 60 </span> <span class="Keyword">return</span> obj.forEach(iterator, context) <span class="Keyword">if</span> obj.forEach
|
<span class="line-numbers"> 60 </span> <span class="Keyword">return</span> obj.forEach(iterator, context) <span class="Keyword">if</span> obj.forEach
|
||||||
<span class="line-numbers"> 61 </span> <span class="Keyword">if</span> _.isArray(obj) <span class="Keyword">or</span> _.isArguments(obj)
|
<span class="line-numbers"> 61 </span> <span class="Keyword">if</span> _.isArray(obj) <span class="Keyword">or</span> _.isArguments(obj)
|
||||||
<span class="line-numbers"> 62 </span> <span class="Keyword">return</span> iterator.call(context, obj[i], i, obj) <span class="Keyword">for</span> i <span class="Keyword">in</span> [<span class="Number">0</span>...obj.length]
|
<span class="line-numbers"> 62 </span> <span class="Keyword">return</span> iterator.call(context, obj[i], i, obj) <span class="Keyword">for</span> i <span class="Keyword">in</span> [<span class="Number">0</span>...obj.length]
|
||||||
<span class="line-numbers"> 63 </span> iterator.call(context, val, key, obj) <span class="Keyword">for</span> key, val <span class="Keyword">ino</span> obj
|
<span class="line-numbers"> 63 </span> iterator.call(context, val, key, obj) <span class="Keyword">for</span> key, val <span class="Keyword">of</span> obj
|
||||||
<span class="line-numbers"> 64 </span> <span class="Keyword">catch</span> e
|
<span class="line-numbers"> 64 </span> <span class="Keyword">catch</span> e
|
||||||
<span class="line-numbers"> 65 </span> <span class="Keyword">throw</span> e <span class="Keyword">if</span> e <span class="Keyword">isnt</span> breaker
|
<span class="line-numbers"> 65 </span> <span class="Keyword">throw</span> e <span class="Keyword">if</span> e <span class="Keyword">isnt</span> breaker
|
||||||
<span class="line-numbers"> 66 </span> obj
|
<span class="line-numbers"> 66 </span> obj
|
||||||
@@ -167,7 +167,7 @@
|
|||||||
<span class="line-numbers"> 148 </span> <span class="Comment"><span class="Comment">#</span> based on '==='.</span>
|
<span class="line-numbers"> 148 </span> <span class="Comment"><span class="Comment">#</span> based on '==='.</span>
|
||||||
<span class="line-numbers"> 149 </span> <span class="FunctionArgument"> _.include: obj, target </span><span class="Storage">=></span>
|
<span class="line-numbers"> 149 </span> <span class="FunctionArgument"> _.include: obj, target </span><span class="Storage">=></span>
|
||||||
<span class="line-numbers"> 150 </span> <span class="Keyword">return</span> _.indexOf(obj, target) <span class="Keyword">isnt</span> <span class="Keyword">-</span><span class="Number">1</span> <span class="Keyword">if</span> _.isArray(obj)
|
<span class="line-numbers"> 150 </span> <span class="Keyword">return</span> _.indexOf(obj, target) <span class="Keyword">isnt</span> <span class="Keyword">-</span><span class="Number">1</span> <span class="Keyword">if</span> _.isArray(obj)
|
||||||
<span class="line-numbers"> 151 </span> <span class="Keyword">for</span> key, val <span class="Keyword">ino</span> obj
|
<span class="line-numbers"> 151 </span> <span class="Keyword">for</span> key, val <span class="Keyword">of</span> obj
|
||||||
<span class="line-numbers"> 152 </span> <span class="Keyword">return</span> <span class="BuiltInConstant">true</span> <span class="Keyword">if</span> val <span class="Keyword">is</span> target
|
<span class="line-numbers"> 152 </span> <span class="Keyword">return</span> <span class="BuiltInConstant">true</span> <span class="Keyword">if</span> val <span class="Keyword">is</span> target
|
||||||
<span class="line-numbers"> 153 </span> <span class="BuiltInConstant">false</span>
|
<span class="line-numbers"> 153 </span> <span class="BuiltInConstant">false</span>
|
||||||
<span class="line-numbers"> 154 </span>
|
<span class="line-numbers"> 154 </span>
|
||||||
@@ -399,7 +399,7 @@
|
|||||||
<span class="line-numbers"> 380 </span> <span class="Comment"><span class="Comment">#</span> Retrieve the names of an object's properties.</span>
|
<span class="line-numbers"> 380 </span> <span class="Comment"><span class="Comment">#</span> Retrieve the names of an object's properties.</span>
|
||||||
<span class="line-numbers"> 381 </span> <span class="FunctionArgument"> _.keys: obj </span><span class="Storage">=></span>
|
<span class="line-numbers"> 381 </span> <span class="FunctionArgument"> _.keys: obj </span><span class="Storage">=></span>
|
||||||
<span class="line-numbers"> 382 </span> <span class="Keyword">return</span> _.range(<span class="Number">0</span>, obj.length) <span class="Keyword">if</span> _.isArray(obj)
|
<span class="line-numbers"> 382 </span> <span class="Keyword">return</span> _.range(<span class="Number">0</span>, obj.length) <span class="Keyword">if</span> _.isArray(obj)
|
||||||
<span class="line-numbers"> 383 </span> key <span class="Keyword">for</span> key, val <span class="Keyword">ino</span> obj
|
<span class="line-numbers"> 383 </span> key <span class="Keyword">for</span> key, val <span class="Keyword">of</span> obj
|
||||||
<span class="line-numbers"> 384 </span>
|
<span class="line-numbers"> 384 </span>
|
||||||
<span class="line-numbers"> 385 </span>
|
<span class="line-numbers"> 385 </span>
|
||||||
<span class="line-numbers"> 386 </span> <span class="Comment"><span class="Comment">#</span> Retrieve the values of an object's properties.</span>
|
<span class="line-numbers"> 386 </span> <span class="Comment"><span class="Comment">#</span> Retrieve the values of an object's properties.</span>
|
||||||
@@ -414,7 +414,7 @@
|
|||||||
<span class="line-numbers"> 395 </span>
|
<span class="line-numbers"> 395 </span>
|
||||||
<span class="line-numbers"> 396 </span> <span class="Comment"><span class="Comment">#</span> Extend a given object with all of the properties in a source object.</span>
|
<span class="line-numbers"> 396 </span> <span class="Comment"><span class="Comment">#</span> Extend a given object with all of the properties in a source object.</span>
|
||||||
<span class="line-numbers"> 397 </span> <span class="FunctionArgument"> _.extend: destination, source </span><span class="Storage">=></span>
|
<span class="line-numbers"> 397 </span> <span class="FunctionArgument"> _.extend: destination, source </span><span class="Storage">=></span>
|
||||||
<span class="line-numbers"> 398 </span> <span class="Keyword">for</span> key, val <span class="Keyword">ino</span> source
|
<span class="line-numbers"> 398 </span> <span class="Keyword">for</span> key, val <span class="Keyword">of</span> source
|
||||||
<span class="line-numbers"> 399 </span> destination[key]<span class="Keyword">:</span> val
|
<span class="line-numbers"> 399 </span> destination[key]<span class="Keyword">:</span> val
|
||||||
<span class="line-numbers"> 400 </span> destination
|
<span class="line-numbers"> 400 </span> destination
|
||||||
<span class="line-numbers"> 401 </span>
|
<span class="line-numbers"> 401 </span>
|
||||||
@@ -522,7 +522,7 @@
|
|||||||
<span class="line-numbers"> 503 </span> <span class="Comment"><span class="Comment">#</span> Run Underscore.js in noConflict mode, returning the '_' variable to its</span>
|
<span class="line-numbers"> 503 </span> <span class="Comment"><span class="Comment">#</span> Run Underscore.js in noConflict mode, returning the '_' variable to its</span>
|
||||||
<span class="line-numbers"> 504 </span> <span class="Comment"><span class="Comment">#</span> previous owner. Returns a reference to the Underscore object.</span>
|
<span class="line-numbers"> 504 </span> <span class="Comment"><span class="Comment">#</span> previous owner. Returns a reference to the Underscore object.</span>
|
||||||
<span class="line-numbers"> 505 </span> <span class="FunctionArgument"> _.noConflict: </span><span class="Storage">=></span>
|
<span class="line-numbers"> 505 </span> <span class="FunctionArgument"> _.noConflict: </span><span class="Storage">=></span>
|
||||||
<span class="line-numbers"> 506 </span> root.<span class="FunctionName">_</span><span class="Keyword">:</span> previousUnderscore
|
<span class="line-numbers"> 506 </span> <span class="FunctionName">root._</span><span class="Keyword">:</span> previousUnderscore
|
||||||
<span class="line-numbers"> 507 </span> <span class="Variable">this</span>
|
<span class="line-numbers"> 507 </span> <span class="Variable">this</span>
|
||||||
<span class="line-numbers"> 508 </span>
|
<span class="line-numbers"> 508 </span>
|
||||||
<span class="line-numbers"> 509 </span>
|
<span class="line-numbers"> 509 </span>
|
||||||
@@ -561,15 +561,15 @@
|
|||||||
<span class="line-numbers"> 542 </span>
|
<span class="line-numbers"> 542 </span>
|
||||||
<span class="line-numbers"> 543 </span> <span class="Comment"><span class="Comment">#</span> ------------------------------- Aliases ----------------------------------</span>
|
<span class="line-numbers"> 543 </span> <span class="Comment"><span class="Comment">#</span> ------------------------------- Aliases ----------------------------------</span>
|
||||||
<span class="line-numbers"> 544 </span>
|
<span class="line-numbers"> 544 </span>
|
||||||
<span class="line-numbers"> 545 </span> _.<span class="FunctionName">forEach</span><span class="Keyword">:</span> _.each
|
<span class="line-numbers"> 545 </span> <span class="FunctionName">_.forEach</span><span class="Keyword">:</span> _.each
|
||||||
<span class="line-numbers"> 546 </span> _.<span class="FunctionName">foldl</span><span class="Keyword">:</span> _.<span class="FunctionName">inject</span><span class="Keyword">:</span> _.reduce
|
<span class="line-numbers"> 546 </span> <span class="FunctionName">_.foldl</span><span class="Keyword">:</span> <span class="FunctionName">_.inject</span><span class="Keyword">:</span> _.reduce
|
||||||
<span class="line-numbers"> 547 </span> _.<span class="FunctionName">foldr</span><span class="Keyword">:</span> _.reduceRight
|
<span class="line-numbers"> 547 </span> <span class="FunctionName">_.foldr</span><span class="Keyword">:</span> _.reduceRight
|
||||||
<span class="line-numbers"> 548 </span> _.<span class="FunctionName">filter</span><span class="Keyword">:</span> _.select
|
<span class="line-numbers"> 548 </span> <span class="FunctionName">_.filter</span><span class="Keyword">:</span> _.select
|
||||||
<span class="line-numbers"> 549 </span> _.<span class="FunctionName">every</span><span class="Keyword">:</span> _.all
|
<span class="line-numbers"> 549 </span> <span class="FunctionName">_.every</span><span class="Keyword">:</span> _.all
|
||||||
<span class="line-numbers"> 550 </span> _.<span class="FunctionName">some</span><span class="Keyword">:</span> _.any
|
<span class="line-numbers"> 550 </span> <span class="FunctionName">_.some</span><span class="Keyword">:</span> _.any
|
||||||
<span class="line-numbers"> 551 </span> _.<span class="FunctionName">head</span><span class="Keyword">:</span> _.first
|
<span class="line-numbers"> 551 </span> <span class="FunctionName">_.head</span><span class="Keyword">:</span> _.first
|
||||||
<span class="line-numbers"> 552 </span> _.<span class="FunctionName">tail</span><span class="Keyword">:</span> _.rest
|
<span class="line-numbers"> 552 </span> <span class="FunctionName">_.tail</span><span class="Keyword">:</span> _.rest
|
||||||
<span class="line-numbers"> 553 </span> _.<span class="FunctionName">methods</span><span class="Keyword">:</span> _.functions
|
<span class="line-numbers"> 553 </span> <span class="FunctionName">_.methods</span><span class="Keyword">:</span> _.functions
|
||||||
<span class="line-numbers"> 554 </span>
|
<span class="line-numbers"> 554 </span>
|
||||||
<span class="line-numbers"> 555 </span>
|
<span class="line-numbers"> 555 </span>
|
||||||
<span class="line-numbers"> 556 </span> <span class="Comment"><span class="Comment">#</span> /*------------------------ Setup the OOP Wrapper: --------------------------*/</span>
|
<span class="line-numbers"> 556 </span> <span class="Comment"><span class="Comment">#</span> /*------------------------ Setup the OOP Wrapper: --------------------------*/</span>
|
||||||
@@ -605,7 +605,7 @@
|
|||||||
<span class="line-numbers"> 586 </span>
|
<span class="line-numbers"> 586 </span>
|
||||||
<span class="line-numbers"> 587 </span> <span class="Comment"><span class="Comment">#</span> Start chaining a wrapped Underscore object.</span>
|
<span class="line-numbers"> 587 </span> <span class="Comment"><span class="Comment">#</span> Start chaining a wrapped Underscore object.</span>
|
||||||
<span class="line-numbers"> 588 </span> <span class="FunctionArgument"> wrapper::chain: </span><span class="Storage">=></span>
|
<span class="line-numbers"> 588 </span> <span class="FunctionArgument"> wrapper::chain: </span><span class="Storage">=></span>
|
||||||
<span class="line-numbers"> 589 </span> <span class="Variable">this</span>.<span class="FunctionName">_chain</span><span class="Keyword">:</span> <span class="BuiltInConstant">true</span>
|
<span class="line-numbers"> 589 </span> <span class="FunctionName">this._chain</span><span class="Keyword">:</span> <span class="BuiltInConstant">true</span>
|
||||||
<span class="line-numbers"> 590 </span> <span class="Variable">this</span>
|
<span class="line-numbers"> 590 </span> <span class="Variable">this</span>
|
||||||
<span class="line-numbers"> 591 </span>
|
<span class="line-numbers"> 591 </span>
|
||||||
<span class="line-numbers"> 592 </span>
|
<span class="line-numbers"> 592 </span>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ foods[2]
|
|||||||
# (dog='canine', cat='feline', fox='vulpine') each (key, val):
|
# (dog='canine', cat='feline', fox='vulpine') each (key, val):
|
||||||
# (key, ' is a ', val) join print.
|
# (key, ' is a ', val) join print.
|
||||||
|
|
||||||
for key, val ino {dog: 'canine', cat: 'feline', fox: 'vulpine'}
|
for key, val of {dog: 'canine', cat: 'feline', fox: 'vulpine'}
|
||||||
print(key + ' is a ' + val)
|
print(key + ' is a ' + val)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
return obj.forEach(iterator, context) if obj.forEach
|
return obj.forEach(iterator, context) if obj.forEach
|
||||||
if _.isArray(obj) or _.isArguments(obj)
|
if _.isArray(obj) or _.isArguments(obj)
|
||||||
return iterator.call(context, obj[i], i, obj) for i in [0...obj.length]
|
return iterator.call(context, obj[i], i, obj) for i in [0...obj.length]
|
||||||
iterator.call(context, val, key, obj) for key, val ino obj
|
iterator.call(context, val, key, obj) for key, val of obj
|
||||||
catch e
|
catch e
|
||||||
throw e if e isnt breaker
|
throw e if e isnt breaker
|
||||||
obj
|
obj
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
# based on '==='.
|
# based on '==='.
|
||||||
_.include: obj, target =>
|
_.include: obj, target =>
|
||||||
return _.indexOf(obj, target) isnt -1 if _.isArray(obj)
|
return _.indexOf(obj, target) isnt -1 if _.isArray(obj)
|
||||||
for key, val ino obj
|
for key, val of obj
|
||||||
return true if val is target
|
return true if val is target
|
||||||
false
|
false
|
||||||
|
|
||||||
@@ -380,7 +380,7 @@
|
|||||||
# Retrieve the names of an object's properties.
|
# Retrieve the names of an object's properties.
|
||||||
_.keys: obj =>
|
_.keys: obj =>
|
||||||
return _.range(0, obj.length) if _.isArray(obj)
|
return _.range(0, obj.length) if _.isArray(obj)
|
||||||
key for key, val ino obj
|
key for key, val of obj
|
||||||
|
|
||||||
|
|
||||||
# Retrieve the values of an object's properties.
|
# Retrieve the values of an object's properties.
|
||||||
@@ -395,7 +395,7 @@
|
|||||||
|
|
||||||
# Extend a given object with all of the properties in a source object.
|
# Extend a given object with all of the properties in a source object.
|
||||||
_.extend: destination, source =>
|
_.extend: destination, source =>
|
||||||
for key, val ino source
|
for key, val of source
|
||||||
destination[key]: val
|
destination[key]: val
|
||||||
destination
|
destination
|
||||||
|
|
||||||
|
|||||||
20
index.html
20
index.html
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
<b>Latest Version:</b>
|
<b>Latest Version:</b>
|
||||||
<a href="http://gemcutter.org/gems/coffee-script">0.2.2</a>
|
<a href="http://gemcutter.org/gems/coffee-script">0.2.3</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
@@ -782,12 +782,12 @@ egg_delivery = function egg_delivery() {
|
|||||||
;alert(countdown);'>run: countdown</button><br class='clear' /></div>
|
;alert(countdown);'>run: countdown</button><br class='clear' /></div>
|
||||||
<p>
|
<p>
|
||||||
Comprehensions can also be used to iterate over the keys and values in
|
Comprehensions can also be used to iterate over the keys and values in
|
||||||
an object. Use <tt>ino</tt> to signal comprehension over an object instead
|
an object. Use <tt>of</tt> to signal comprehension over the properties of
|
||||||
of an array.
|
an object instead of the values in an array.
|
||||||
</p>
|
</p>
|
||||||
<div class='code'><pre class="idle"><span class="FunctionName">years_old</span><span class="Keyword">:</span> {<span class="FunctionName">max</span><span class="Keyword">:</span> <span class="Number">10</span>, <span class="FunctionName">ida</span><span class="Keyword">:</span> <span class="Number">9</span>, <span class="FunctionName">tim</span><span class="Keyword">:</span> <span class="Number">11</span>}
|
<div class='code'><pre class="idle"><span class="FunctionName">years_old</span><span class="Keyword">:</span> {<span class="FunctionName">max</span><span class="Keyword">:</span> <span class="Number">10</span>, <span class="FunctionName">ida</span><span class="Keyword">:</span> <span class="Number">9</span>, <span class="FunctionName">tim</span><span class="Keyword">:</span> <span class="Number">11</span>}
|
||||||
|
|
||||||
<span class="FunctionName">ages</span><span class="Keyword">:</span> <span class="Keyword">for</span> child, age <span class="Keyword">ino</span> years_old
|
<span class="FunctionName">ages</span><span class="Keyword">:</span> <span class="Keyword">for</span> child, age <span class="Keyword">of</span> years_old
|
||||||
child <span class="Keyword">+</span> <span class="String"><span class="String">"</span> is <span class="String">"</span></span> <span class="Keyword">+</span> age
|
child <span class="Keyword">+</span> <span class="String"><span class="String">"</span> is <span class="String">"</span></span> <span class="Keyword">+</span> age
|
||||||
</pre><pre class="idle"><span class="Storage">var</span> __a, __b, age, ages, child, years_old;
|
</pre><pre class="idle"><span class="Storage">var</span> __a, __b, age, ages, child, years_old;
|
||||||
years_old <span class="Keyword">=</span> {
|
years_old <span class="Keyword">=</span> {
|
||||||
@@ -928,7 +928,7 @@ six = (one = 1) + (two = 2) + (three = 3);
|
|||||||
</p>
|
</p>
|
||||||
<div class='code'><pre class="idle"><span class="Comment"><span class="Comment">#</span> The first ten global properties.</span>
|
<div class='code'><pre class="idle"><span class="Comment"><span class="Comment">#</span> The first ten global properties.</span>
|
||||||
|
|
||||||
<span class="FunctionName">globals</span><span class="Keyword">:</span> (name <span class="Keyword">for</span> name <span class="Keyword">ino</span> window)[<span class="Number">0</span>...<span class="Number">10</span>]
|
<span class="FunctionName">globals</span><span class="Keyword">:</span> (name <span class="Keyword">for</span> name <span class="Keyword">of</span> window)[<span class="Number">0</span>...<span class="Number">10</span>]
|
||||||
</pre><pre class="idle"><span class="Storage">var</span> __a, __b, globals, name;
|
</pre><pre class="idle"><span class="Storage">var</span> __a, __b, globals, name;
|
||||||
<span class="Comment"><span class="Comment">//</span> The first ten global properties.</span>
|
<span class="Comment"><span class="Comment">//</span> The first ten global properties.</span>
|
||||||
globals <span class="Keyword">=</span> ((<span class="Storage">function</span>() {
|
globals <span class="Keyword">=</span> ((<span class="Storage">function</span>() {
|
||||||
@@ -1002,13 +1002,13 @@ globals = ((function() {
|
|||||||
<span class="FunctionName">Animal::move</span><span class="Keyword">:</span> <span class="FunctionArgument">meters</span> <span class="Storage">=></span>
|
<span class="FunctionName">Animal::move</span><span class="Keyword">:</span> <span class="FunctionArgument">meters</span> <span class="Storage">=></span>
|
||||||
alert(<span class="Variable">this</span>.name <span class="Keyword">+</span> <span class="String"><span class="String">"</span> moved <span class="String">"</span></span> <span class="Keyword">+</span> meters <span class="Keyword">+</span> <span class="String"><span class="String">"</span>m.<span class="String">"</span></span>)
|
alert(<span class="Variable">this</span>.name <span class="Keyword">+</span> <span class="String"><span class="String">"</span> moved <span class="String">"</span></span> <span class="Keyword">+</span> meters <span class="Keyword">+</span> <span class="String"><span class="String">"</span>m.<span class="String">"</span></span>)
|
||||||
|
|
||||||
<span class="FunctionName">Snake</span><span class="Keyword">:</span> <span class="FunctionArgument">name</span> <span class="Storage">=></span> <span class="Variable">this</span>.<span class="FunctionName">name</span><span class="Keyword">:</span> name
|
<span class="FunctionName">Snake</span><span class="Keyword">:</span> <span class="FunctionArgument">name</span> <span class="Storage">=></span> <span class="FunctionName">this.name</span><span class="Keyword">:</span> name
|
||||||
Snake <span class="Variable">extends</span> Animal
|
Snake <span class="Variable">extends</span> Animal
|
||||||
<span class="FunctionName">Snake::move</span><span class="Keyword">:</span> <span class="Storage">=></span>
|
<span class="FunctionName">Snake::move</span><span class="Keyword">:</span> <span class="Storage">=></span>
|
||||||
alert(<span class="String"><span class="String">"</span>Slithering...<span class="String">"</span></span>)
|
alert(<span class="String"><span class="String">"</span>Slithering...<span class="String">"</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">=></span> <span class="Variable">this</span>.<span class="FunctionName">name</span><span class="Keyword">:</span> name
|
<span class="FunctionName">Horse</span><span class="Keyword">:</span> <span class="FunctionArgument">name</span> <span class="Storage">=></span> <span class="FunctionName">this.name</span><span class="Keyword">:</span> name
|
||||||
Horse <span class="Variable">extends</span> Animal
|
Horse <span class="Variable">extends</span> Animal
|
||||||
<span class="FunctionName">Horse::move</span><span class="Keyword">:</span> <span class="Storage">=></span>
|
<span class="FunctionName">Horse::move</span><span class="Keyword">:</span> <span class="Storage">=></span>
|
||||||
alert(<span class="String"><span class="String">"</span>Galloping...<span class="String">"</span></span>)
|
alert(<span class="String"><span class="String">"</span>Galloping...<span class="String">"</span></span>)
|
||||||
@@ -1281,6 +1281,12 @@ world...";
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2 id="change_log">Change Log</h2>
|
<h2 id="change_log">Change Log</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<b class="header" style="margin-top: 20px;">0.2.3</b>
|
||||||
|
Axed the unsatisfactory <tt>ino</tt> keyword, replacing it with <tt>of</tt> for
|
||||||
|
object comprehensions. They now look like: <tt>for key, value of object</tt>.
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<b class="header" style="margin-top: 20px;">0.2.2</b>
|
<b class="header" style="margin-top: 20px;">0.2.2</b>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ require "coffee_script/parse_error"
|
|||||||
# Namespace for all CoffeeScript internal classes.
|
# Namespace for all CoffeeScript internal classes.
|
||||||
module CoffeeScript
|
module CoffeeScript
|
||||||
|
|
||||||
VERSION = '0.2.2' # Keep in sync with the gemspec.
|
VERSION = '0.2.3' # Keep in sync with the gemspec.
|
||||||
|
|
||||||
# Compile a script (String or IO) to JavaScript.
|
# Compile a script (String or IO) to JavaScript.
|
||||||
def self.compile(script, options={})
|
def self.compile(script, options={})
|
||||||
|
|||||||
@@ -208,7 +208,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>match</key>
|
<key>match</key>
|
||||||
<string>\b(break|by|catch|continue|else|finally|for|if|return|switch|then|throw|try|unless|when|while)\b</string>
|
<string>\b(break|by|catch|continue|else|finally|for|in|of|if|return|switch|then|throw|try|unless|when|while)\b</string>
|
||||||
<key>name</key>
|
<key>name</key>
|
||||||
<string>keyword.control.coffee</string>
|
<string>keyword.control.coffee</string>
|
||||||
</dict>
|
</dict>
|
||||||
@@ -263,7 +263,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>match</key>
|
<key>match</key>
|
||||||
<string>!|%|&|\*|\/|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\?|\|\||\:|\*=|(?<!\()/=|%=|\+=|\-=|&=|\^=|\b(in|ino|instanceof|new|delete|typeof|and|or|is|isnt|not)\b</string>
|
<string>!|%|&|\*|\/|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\?|\|\||\:|\*=|(?<!\()/=|%=|\+=|\-=|&=|\^=|\b(instanceof|new|delete|typeof|and|or|is|isnt|not)\b</string>
|
||||||
<key>name</key>
|
<key>name</key>
|
||||||
<string>keyword.operator.coffee</string>
|
<string>keyword.operator.coffee</string>
|
||||||
</dict>
|
</dict>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ token IDENTIFIER PROPERTY_ACCESS PROTOTYPE_ACCESS
|
|||||||
token CODE PARAM NEW RETURN
|
token CODE PARAM NEW RETURN
|
||||||
token TRY CATCH FINALLY THROW
|
token TRY CATCH FINALLY THROW
|
||||||
token BREAK CONTINUE
|
token BREAK CONTINUE
|
||||||
token FOR IN INO BY WHEN WHILE
|
token FOR IN OF BY WHEN WHILE
|
||||||
token SWITCH LEADING_WHEN
|
token SWITCH LEADING_WHEN
|
||||||
token DELETE INSTANCEOF TYPEOF
|
token DELETE INSTANCEOF TYPEOF
|
||||||
token SUPER EXTENDS
|
token SUPER EXTENDS
|
||||||
@@ -34,7 +34,7 @@ prechigh
|
|||||||
left '.'
|
left '.'
|
||||||
right INDENT
|
right INDENT
|
||||||
left OUTDENT
|
left OUTDENT
|
||||||
right WHEN LEADING_WHEN IN INO BY
|
right WHEN LEADING_WHEN IN OF BY
|
||||||
right THROW FOR NEW SUPER
|
right THROW FOR NEW SUPER
|
||||||
left EXTENDS
|
left EXTENDS
|
||||||
left ASSIGN '||=' '&&='
|
left ASSIGN '||=' '&&='
|
||||||
@@ -361,7 +361,7 @@ rule
|
|||||||
# The source of the array comprehension can optionally be filtered.
|
# The source of the array comprehension can optionally be filtered.
|
||||||
ForSource:
|
ForSource:
|
||||||
IN Expression { result = {:source => val[1]} }
|
IN Expression { result = {:source => val[1]} }
|
||||||
| INO Expression { result = {:source => val[1], :object => true} }
|
| OF Expression { result = {:source => val[1], :object => true} }
|
||||||
| ForSource
|
| ForSource
|
||||||
WHEN Expression { result = val[0].merge(:filter => val[2]) }
|
WHEN Expression { result = val[0].merge(:filter => val[2]) }
|
||||||
| ForSource
|
| ForSource
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ module CoffeeScript
|
|||||||
"new", "return",
|
"new", "return",
|
||||||
"try", "catch", "finally", "throw",
|
"try", "catch", "finally", "throw",
|
||||||
"break", "continue",
|
"break", "continue",
|
||||||
"for", "in", "ino", "by", "where", "while",
|
"for", "in", "of", "by", "where", "while",
|
||||||
"switch", "when",
|
"switch", "when",
|
||||||
"super", "extends",
|
"super", "extends",
|
||||||
"arguments",
|
"arguments",
|
||||||
|
|||||||
@@ -5,5 +5,5 @@
|
|||||||
"description": "Unfancy JavaScript",
|
"description": "Unfancy JavaScript",
|
||||||
"keywords": ["javascript", "language"],
|
"keywords": ["javascript", "language"],
|
||||||
"author": "Jeremy Ashkenas",
|
"author": "Jeremy Ashkenas",
|
||||||
"version": "0.2.2"
|
"version": "0.2.3"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ print(results.join(',') is '2,18')
|
|||||||
|
|
||||||
|
|
||||||
obj: {one: 1, two: 2, three: 3}
|
obj: {one: 1, two: 2, three: 3}
|
||||||
names: key + '!' for key ino obj
|
names: key + '!' for key of obj
|
||||||
odds: key + '!' for key, value ino obj when value % 2 isnt 0
|
odds: key + '!' for key, value of obj when value % 2 isnt 0
|
||||||
|
|
||||||
print(names.join(' ') is "one! two! three!")
|
print(names.join(' ') is "one! two! three!")
|
||||||
print(odds.join(' ') is "one! three!")
|
print(odds.join(' ') is "one! three!")
|
||||||
|
|||||||
Reference in New Issue
Block a user