Rebol3 Code Examplex


Find unimplemented tasks

Identify Rosetta Code tasks lacking implementations.

Rebol [
    title: "Rosetta code: Find unimplemented tasks"
    file:  %Rosetta_Code-Find_unimplemented_tasks.r3
    url:   https://rosettacode.org/wiki/Rosetta_Code/Find_unimplemented_tasks
    needs: 3.10.0 ; or something like that
]

API-URL: https://rosettacode.org/w/api.php
do-query: function[query cont][
    try/with [
        if cont [query: ajoin [query "&cmcontinue=" cont] ]
        url: join API-URL query
        decode 'json read url
    ][
        print ["Failed to read URL:" url]
        none
    ]
]
fetch-category: function [category][
    members: copy []
    query: ajoin [
        "?action=query&list=categorymembers&format=json"
        "&cmlimit=500&cmtitle=Category:" enhex :category
    ]
    cmcontinue: none
    forever [
        all [
            data: do-query :query :cmcontinue
            append members data/query/categorymembers
        ]
        either data/continue [
            cmcontinue: data/continue/cmcontinue
        ][  break ]
    ]
    members
]
tasks: function [language [any-string! none!]][
    ;; Keep only task titles; ignore category pages
    data: fetch-category any [language "Programming_Tasks"]
    forall data [
        title: data/1/title
        either find/match title "Category:" [
            data: back remove data
        ][  change data title ]
    ]
    data
]
num: func[blk][as-green pad length? blk 4]

system/options/quiet: true
print ["A this moment" as-yellow now ]

all-tasks: tasks none ;= all tasks
print ["There is" num all-tasks "Rosetta code tasks"]
reb-tasks: tasks "Rebol"
reb-drafts: exclude reb-tasks all-tasks
print ["There is" num reb-tasks "Rebol solutions including drafts:" num reb-drafts]
unimplemented: difference all-tasks reb-tasks
print ["There is" num unimplemented "unimplemented tasks in Rebol language"]

;; Compare with another language:
red-tasks: tasks "Red"
print ["There is" num red-tasks "Red solutions"]
print ["There is" num exclude red-tasks reb-tasks "tasks implemented in Red but not in Rebol language"]
print ["There is" num exclude reb-tasks red-tasks "tasks implemented in Rebol but not in Red language"]

;foreach task unimplemented [ print task ]

Output:

A this moment 1-Jun-2026/13:35:53+2:00
There is 1350 Rosetta code tasks
There is 413  Rebol solutions including drafts: 30  
There is 997  unimplemented tasks in Rebol language
There is 242  Red solutions
There is 61   tasks implemented in Red but not in Rebol language
There is 232  tasks implemented in Rebol but not in Red language