Rosetta Code/Find unimplemented tasks: Difference between revisions
Content added Content deleted
m (→{{header|Wren}}: Updated site URL and reran.) |
|||
Line 932: | Line 932: | ||
Find limit of recursion |
Find limit of recursion |
||
...</pre> |
...</pre> |
||
=={{header|hq}}== |
|||
This script illustrates how jq interoperates with other command-line tools. It was tested in October, 2022 |
|||
using both the C and Go implementations of jq. |
|||
The only pre-requisites other than bash are curl and jq, which is called at least four times. |
|||
<syntaxhighlight lang="bash"> |
|||
#!/bin/bash |
|||
# October 8, 2022 |
|||
# https://rosettacode.org/w/index.php?title=Rosetta_Code/Find_unimplemented_tasks |
|||
# Syntax: $0 [--markdown] CATEGORY |
|||
# Fetch the Category:Programming_Tasks and Category:$category pages, |
|||
# then compute the differences in the lists of titles. |
|||
# If --markdown is specified, then some markdown suitable for RosettaCode.org is added. |
|||
BN=$(basename "$0") |
|||
JQ=jq |
|||
function die { echo "$BN: $@" >&2 ; exit 1 ; } |
|||
baseuri="https://rosettacode.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:" |
|||
if [ "$1" = "--markdown" ] ; then |
|||
markdown="--argjson markdown true" |
|||
shift |
|||
else |
|||
markdown="--arg markdown false" |
|||
fi |
|||
category="$1" |
|||
test -z "$category" && die "Syntax: $0 [--markdown] CATEGORY" |
|||
for id in $category Programming_Tasks; do |
|||
id=/tmp/rosettacode.$id.titles.json |
|||
test -s "$id" && rm "$id" |
|||
done |
|||
function getall { |
|||
local cat="$1" |
|||
local cmcontinue="$2" |
|||
local tmpfile="/tmp/rosettacode.$cat.json.tmp" |
|||
local continue=true |
|||
# cmlimit=500 is the max allowed so use paging |
|||
curl -Ss "${baseuri}${cat}&format=json&cmlimit=500${cmcontinue}" > "$tmpfile" |
|||
if [ ! -s "$tmpfile" ] ; then return ; fi |
|||
$JQ '.query.categorymembers[].title' "$tmpfile" >> /tmp/rosettacode.$cat.titles.json |
|||
cmcontinue=$($JQ -r '.continue | if . then .cmcontinue else null end' "$tmpfile" ) |
|||
if [ -z "$cmcontinue" -o "$cmcontinue" = "null" ] ; then return ; fi |
|||
echo $BN: fetching continuation page for $cat ... |
|||
getall "$cat" "&cmcontinue=$cmcontinue" |
|||
} |
|||
getall $category |
|||
getall Programming_Tasks |
|||
for id in $category Programming_Tasks; do |
|||
id=/tmp/rosettacode.$id.titles.json |
|||
test -s "$id" || die "unable to find $id" |
|||
done |
|||
$JQ -r -n $markdown --slurpfile tasks /tmp/rosettacode.Programming_Tasks.titles.json \ |
|||
--slurpfile cat /tmp/rosettacode.$category.titles.json ' |
|||
def mark: if $markdown then "* [[\(gsub(" ";"_"))|\(.)]]" else . end; |
|||
($tasks - $cat)[] | mark ' |
|||
</syntaxhighlight> |
|||
=={{header|Julia}}== |
=={{header|Julia}}== |