381 lines
11 KiB
Text
Generated
381 lines
11 KiB
Text
Generated
'#!/usr/bin/env kal' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'\n' Text.Whitespace
|
|
|
|
'# This demo executes GET requests in parallel and in series' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'# using `for` loops and `wait for` statements.' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'\n' Text.Whitespace
|
|
|
|
'# Notice how the serial GET requests always return in order' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'# and take longer in total. Parallel requests come back in' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'# order of receipt.' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'\n' Text.Whitespace
|
|
|
|
'http' Name.Variable
|
|
' ' Text.Whitespace
|
|
'=' Operator
|
|
' ' Text.Whitespace
|
|
'require' Name.Variable
|
|
' ' Text.Whitespace
|
|
"'" Literal.String
|
|
'http' Literal.String
|
|
"'" Literal.String
|
|
'\n\n' Text.Whitespace
|
|
|
|
'urls' Name.Variable
|
|
' ' Text.Whitespace
|
|
'=' Operator
|
|
' ' Text.Whitespace
|
|
'[' Punctuation
|
|
"'" Literal.String
|
|
'http://www.google.com' Literal.String
|
|
"'" Literal.String
|
|
'\n ' Text.Whitespace
|
|
"'" Literal.String
|
|
'http://www.apple.com' Literal.String
|
|
"'" Literal.String
|
|
'\n ' Text.Whitespace
|
|
"'" Literal.String
|
|
'http://www.microsoft.com' Literal.String
|
|
"'" Literal.String
|
|
'\n ' Text.Whitespace
|
|
"'" Literal.String
|
|
'http://www.nodejs.org' Literal.String
|
|
"'" Literal.String
|
|
'\n ' Text.Whitespace
|
|
"'" Literal.String
|
|
'http://www.yahoo.com' Literal.String
|
|
"'" Literal.String
|
|
']' Punctuation
|
|
'\n\n' Text.Whitespace
|
|
|
|
'# This function does a GET request for each URL in series' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'# It will wait for a response from each request before moving on' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'# to the next request. Notice the output will be in the same order as the' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'# urls variable every time regardless of response time.' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'# It is a task rather than a function because it is called asynchronously' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'# This allows us to use `return` to implicitly call back' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'task' Keyword.Declaration
|
|
' ' Text.Whitespace
|
|
'series_demo' Name.Function
|
|
'(' Punctuation
|
|
')' Punctuation
|
|
'\n ' Text.Whitespace
|
|
'# The `series` keyword is optional here (for loops are serial by default)' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
' ' Text.Whitespace
|
|
'total_time' Name.Variable
|
|
' ' Text.Whitespace
|
|
'=' Operator
|
|
' ' Text.Whitespace
|
|
'0' Literal.Number.Integer
|
|
'\n\n ' Text.Whitespace
|
|
'for' Keyword
|
|
' ' Text.Whitespace
|
|
'series' Keyword
|
|
' ' Text.Whitespace
|
|
'url' Name.Variable
|
|
' ' Text.Whitespace
|
|
'in' Keyword
|
|
' ' Text.Whitespace
|
|
'urls' Name.Variable
|
|
'\n ' Text.Whitespace
|
|
'timer' Name.Variable
|
|
' ' Text.Whitespace
|
|
'=' Operator
|
|
' ' Text.Whitespace
|
|
'new' Keyword
|
|
' ' Text.Whitespace
|
|
'Date' Name.Builtin
|
|
'\n\n ' Text.Whitespace
|
|
'# we use the `safe` keyword because get is a "nonstandard" task' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
' ' Text.Whitespace
|
|
'# that does not call back with an error argument' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
' ' Text.Whitespace
|
|
'safe' Keyword
|
|
' ' Text.Whitespace
|
|
'wait' Keyword
|
|
' ' Text.Whitespace
|
|
'for' Keyword
|
|
' ' Text.Whitespace
|
|
'response' Name.Variable
|
|
' ' Text.Whitespace
|
|
'from' Keyword
|
|
' ' Text.Whitespace
|
|
'http.get' Name.Variable
|
|
' ' Text.Whitespace
|
|
'url' Name.Variable
|
|
'\n\n ' Text.Whitespace
|
|
'delay' Name.Variable
|
|
' ' Text.Whitespace
|
|
'=' Operator
|
|
' ' Text.Whitespace
|
|
'new' Keyword
|
|
' ' Text.Whitespace
|
|
'Date' Name.Builtin
|
|
'(' Punctuation
|
|
')' Punctuation
|
|
' ' Text.Whitespace
|
|
'-' Operator
|
|
' ' Text.Whitespace
|
|
'timer' Name.Variable
|
|
'\n ' Text.Whitespace
|
|
'total_time' Name.Variable
|
|
' ' Text.Whitespace
|
|
'+=' Operator
|
|
' ' Text.Whitespace
|
|
'delay' Name.Variable
|
|
'\n\n ' Text.Whitespace
|
|
'print' Name.Builtin
|
|
' ' Text.Whitespace
|
|
'"' Literal.String
|
|
'GET ' Literal.String
|
|
'#{' Literal.String.Interpol
|
|
'url' Name.Variable
|
|
'}' Literal.String.Interpol
|
|
' - ' Literal.String
|
|
'#{' Literal.String.Interpol
|
|
'response.statusCode' Name.Variable
|
|
'}' Literal.String.Interpol
|
|
' - ' Literal.String
|
|
'#{' Literal.String.Interpol
|
|
'response.connection.bytesRead' Name.Variable
|
|
'}' Literal.String.Interpol
|
|
' bytes - ' Literal.String
|
|
'#{' Literal.String.Interpol
|
|
'delay' Name.Variable
|
|
'}' Literal.String.Interpol
|
|
' ms' Literal.String
|
|
'"' Literal.String
|
|
'\n' Text.Whitespace
|
|
|
|
'\n ' Text.Whitespace
|
|
'# because we are in a task rather than a function, this actually exectutes a callback' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
' ' Text.Whitespace
|
|
'return' Keyword
|
|
' ' Text.Whitespace
|
|
'total_time' Name.Variable
|
|
'\n\n' Text.Whitespace
|
|
|
|
'# This function does a GET request for each URL in parallel' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'# It will NOT wait for a response from each request before moving on' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'# to the next request. Notice the output will be determined by the order in which' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'# the requests complete!' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
'task' Keyword.Declaration
|
|
' ' Text.Whitespace
|
|
'parallel_demo' Name.Function
|
|
'(' Punctuation
|
|
')' Punctuation
|
|
'\n ' Text.Whitespace
|
|
'total_time' Name.Variable
|
|
' ' Text.Whitespace
|
|
'=' Operator
|
|
' ' Text.Whitespace
|
|
'0' Literal.Number.Integer
|
|
'\n\n ' Text.Whitespace
|
|
'# The `parallel` keyword is only meaningful here because the loop contains' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
' ' Text.Whitespace
|
|
'# a `wait for` statement (meaning callbacks are used)' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
' ' Text.Whitespace
|
|
'for' Keyword
|
|
' ' Text.Whitespace
|
|
'parallel' Keyword
|
|
' ' Text.Whitespace
|
|
'url' Name.Variable
|
|
' ' Text.Whitespace
|
|
'in' Keyword
|
|
' ' Text.Whitespace
|
|
'urls' Name.Variable
|
|
'\n ' Text.Whitespace
|
|
'timer' Name.Variable
|
|
' ' Text.Whitespace
|
|
'=' Operator
|
|
' ' Text.Whitespace
|
|
'new' Keyword
|
|
' ' Text.Whitespace
|
|
'Date' Name.Builtin
|
|
'\n\n ' Text.Whitespace
|
|
'# we use the `safe` keyword because get is a "nonstandard" task' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
' ' Text.Whitespace
|
|
'# that does not call back with an error argument' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
' ' Text.Whitespace
|
|
'safe' Keyword
|
|
' ' Text.Whitespace
|
|
'wait' Keyword
|
|
' ' Text.Whitespace
|
|
'for' Keyword
|
|
' ' Text.Whitespace
|
|
'response' Name.Variable
|
|
' ' Text.Whitespace
|
|
'from' Keyword
|
|
' ' Text.Whitespace
|
|
'http.get' Name.Variable
|
|
' ' Text.Whitespace
|
|
'url' Name.Variable
|
|
'\n\n ' Text.Whitespace
|
|
'delay' Name.Variable
|
|
' ' Text.Whitespace
|
|
'=' Operator
|
|
' ' Text.Whitespace
|
|
'new' Keyword
|
|
' ' Text.Whitespace
|
|
'Date' Name.Builtin
|
|
'(' Punctuation
|
|
')' Punctuation
|
|
' ' Text.Whitespace
|
|
'-' Operator
|
|
' ' Text.Whitespace
|
|
'timer' Name.Variable
|
|
'\n ' Text.Whitespace
|
|
'total_time' Name.Variable
|
|
' ' Text.Whitespace
|
|
'+=' Operator
|
|
' ' Text.Whitespace
|
|
'delay' Name.Variable
|
|
'\n\n ' Text.Whitespace
|
|
'print' Name.Builtin
|
|
' ' Text.Whitespace
|
|
'"' Literal.String
|
|
'GET ' Literal.String
|
|
'#{' Literal.String.Interpol
|
|
'url' Name.Variable
|
|
'}' Literal.String.Interpol
|
|
' - ' Literal.String
|
|
'#{' Literal.String.Interpol
|
|
'response.statusCode' Name.Variable
|
|
'}' Literal.String.Interpol
|
|
' - ' Literal.String
|
|
'#{' Literal.String.Interpol
|
|
'response.connection.bytesRead' Name.Variable
|
|
'}' Literal.String.Interpol
|
|
' bytes - ' Literal.String
|
|
'#{' Literal.String.Interpol
|
|
'delay' Name.Variable
|
|
'}' Literal.String.Interpol
|
|
'ms' Literal.String
|
|
'"' Literal.String
|
|
'\n' Text.Whitespace
|
|
|
|
'\n ' Text.Whitespace
|
|
'# because we are in a task rather than a function, this actually exectutes a callback' Comment.Single
|
|
'\n' Text.Whitespace
|
|
|
|
' ' Text.Whitespace
|
|
'return' Keyword
|
|
' ' Text.Whitespace
|
|
'total_time' Name.Variable
|
|
'\n\n' Text.Whitespace
|
|
|
|
'print' Name.Builtin
|
|
' ' Text.Whitespace
|
|
"'" Literal.String
|
|
'Series Requests...' Literal.String
|
|
"'" Literal.String
|
|
'\n' Text.Whitespace
|
|
|
|
'wait' Keyword
|
|
' ' Text.Whitespace
|
|
'for' Keyword
|
|
' ' Text.Whitespace
|
|
'time1' Name.Variable
|
|
' ' Text.Whitespace
|
|
'from' Keyword
|
|
' ' Text.Whitespace
|
|
'series_demo' Name.Variable
|
|
'(' Punctuation
|
|
')' Punctuation
|
|
'\n' Text.Whitespace
|
|
|
|
'print' Name.Builtin
|
|
' ' Text.Whitespace
|
|
'"' Literal.String
|
|
'Total duration ' Literal.String
|
|
'#{' Literal.String.Interpol
|
|
'time1' Name.Variable
|
|
'}' Literal.String.Interpol
|
|
'ms' Literal.String
|
|
'"' Literal.String
|
|
'\n\n' Text.Whitespace
|
|
|
|
'print' Name.Builtin
|
|
' ' Text.Whitespace
|
|
"'" Literal.String
|
|
"'" Literal.String
|
|
'\n\n' Text.Whitespace
|
|
|
|
'print' Name.Builtin
|
|
' ' Text.Whitespace
|
|
"'" Literal.String
|
|
'Parallel Requests...' Literal.String
|
|
"'" Literal.String
|
|
'\n' Text.Whitespace
|
|
|
|
'wait' Keyword
|
|
' ' Text.Whitespace
|
|
'for' Keyword
|
|
' ' Text.Whitespace
|
|
'time2' Name.Variable
|
|
' ' Text.Whitespace
|
|
'from' Keyword
|
|
' ' Text.Whitespace
|
|
'parallel_demo' Name.Variable
|
|
'(' Punctuation
|
|
')' Punctuation
|
|
'\n' Text.Whitespace
|
|
|
|
'print' Name.Builtin
|
|
' ' Text.Whitespace
|
|
'"' Literal.String
|
|
'Total duration ' Literal.String
|
|
'#{' Literal.String.Interpol
|
|
'time2' Name.Variable
|
|
'}' Literal.String.Interpol
|
|
'ms' Literal.String
|
|
'"' Literal.String
|
|
'\n' Text.Whitespace
|