Created
May 7, 2021 14:35
-
-
Save mvanholsteijn/0e6258c6b6ba112f7ce22bc71aa3a128 to your computer and use it in GitHub Desktop.
generates the PHP prism variable definitions for the WP githuber MD plugin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e -u -o pipefail | |
download_components_json() { | |
curl -sS -L -o $2 $1 | |
} | |
generate_prism_codes() { | |
local components jq_program | |
components=$1 | |
set +e | |
read -u 0 -r -d '' jq_program <<! | |
.languages | | |
to_entries | | |
sort_by(.key) | | |
map(select(.key != "meta") | | |
("'" + .key + "' => '" + .value.title + "',")) | | |
.[] | . | |
! | |
set -e | |
echo 'public static $prism_codes = array(' | |
jq -r "$jq_program" $components | \ | |
sed -e 's/^/ /' | |
echo ');' | |
} | |
generate_prism_parents() { | |
local components jq_program | |
components=$1 | |
jq_program='' | |
set +e ## not quite sure why the read exits with 1 | |
read -u 0 -r -d '' jq_program <<! | |
.languages | | |
to_entries | | |
sort_by(.key) | | |
map(select(.value|has("require")) | | |
( | |
("'" + .key + "'") + | |
" => array(" + | |
( | |
(if ((.value.require|type) == "string") then | |
([.value.require]) | |
else | |
.value.require | |
end) | | |
map("'" + . + "'") | | |
join (", ") + "), " | |
) | |
) | |
)| .[] | . | |
! | |
set -e | |
echo 'public static $prism_component_parent = array(' | |
jq -r "$jq_program" $components | sed -e 's/^/ /' | |
echo ');' | |
} | |
main() { | |
local url components version | |
version=${1:-} | |
[[ ! $version =~ v[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,} ]] && echo "ERROR: invalid version definition" >&2 && exit 1 | |
url=https://github.com/PrismJS/prism/raw/v1.23.0/components.json | |
components=$(mktemp) | |
download_components_json $url $components | |
generate_prism_codes $components | |
generate_prism_parents $components | |
rm $components | |
} | |
main $1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment