Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CS2] Async/await documentation; fix for Underscore templating #4351

Merged
merged 8 commits into from
Dec 20, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Cakefile
Original file line number Diff line number Diff line change
Expand Up @@ -184,10 +184,10 @@ task 'doc:site', 'watch and continually rebuild the documentation for the websit

do renderIndex = ->
codeSnippetCounter = 0
rendered = _.template fs.readFileSync(source, 'utf-8'),
render = _.template fs.readFileSync(source, 'utf-8')
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What did you fix here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The newer Underscore has a different templating API.

fs.writeFileSync 'index.html', render
codeFor: codeFor()
releaseHeader: releaseHeader
fs.writeFileSync 'index.html', rendered
log "compiled", green, "#{source}"

fs.watchFile source, interval: 200, renderIndex
Expand Down
15 changes: 15 additions & 0 deletions documentation/coffee/async.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
sleep = (ms) ->
new Promise (resolve) ->
window.setTimeout resolve, ms

say = (text) ->
window.speechSynthesis.cancel() # cancel any prior utterances
window.speechSynthesis.speak new SpeechSynthesisUtterance text

countdown = (seconds) ->
for i in [seconds..1]
say "#{i}"
await sleep 1000 # wait one second
say "Blastoff!"

countdown(3)
16 changes: 11 additions & 5 deletions documentation/index.html.js
Original file line number Diff line number Diff line change
Expand Up @@ -829,7 +829,7 @@ Block

<p>
<span id="fat-arrow" class="bookmark"></span>
<b class="header">Bound Functions, Generator Functions</b>
<b class="header">Function Modifiers</b>
In JavaScript, the <code>this</code> keyword is dynamically scoped to mean the
object that the current function is attached to. If you pass a function as
a callback or attach it to a different object, the original value of <code>this</code>
Expand Down Expand Up @@ -857,17 +857,23 @@ Block
constructed.
</p>
<p>
CoffeeScript functions also support
<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*">ES6 generator functions</a>
through the <code>yield</code> keyword. There's no <code>function*(){}</code>
nonsense &mdash; a generator in CoffeeScript is simply a function that yields.
CoffeeScript also supports
<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*">generator functions</a> and <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function">async functions</a>
through the <code>yield</code> and <code>await</code> keywords respectively. There's no <code>function*(){}</code> or <code>async function(){}</code>
nonsense &mdash; a generator in CoffeeScript is simply a function that yields, and an async function in CoffeeScript is simply a function that awaits.
</p>
<%= codeFor('generators', 'ps.next().value') %>
<p>
<code>yield*</code> is called <code>yield from</code>, and <code>yield return</code>
may be used if you need to force a generator that doesn't yield.
</p>

<%= codeFor('async', true) %>
<p>
Similar to how <code>yield return</code> forces a generator, <code>await return</code>
may be used to force a function to be async.
</p>

<p>
<span id="embedded" class="bookmark"></span>
<b class="header">Embedded JavaScript</b>
Expand Down
23 changes: 23 additions & 0 deletions documentation/js/async.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.