diff --git a/share/adapters/oeis.sh b/share/adapters/oeis.sh index 570acb8..7f64509 100755 --- a/share/adapters/oeis.sh +++ b/share/adapters/oeis.sh @@ -75,36 +75,51 @@ oeis() ( get_seq ${MAX_TERMS} printf "\n" # Print Code Sample - if [[ ${LANGUAGE^^} == 'MAPLE' ]] && grep -q 'MAPLE' $DOC + if [[ ${LANGUAGE^^} == ':LIST' ]] then - GREP_REGEX='MAPLE.*CROSSREFS' - grep -q 'PROG' $DOC && GREP_REGEX='MAPLE.*PROG' - grep -q 'MATHEMATICA' $DOC && GREP_REGEX='MAPLE.*MATHEMATICA' - parse_code "${GREP_REGEX}" \ - | sed 's/MAPLE/(MAPLE)/; /MATHEMATICA/d; /PROG/d; /CROSSREFS/d' + parse_code "PROG.*CROSSREFS" \ + | grep -o '^(.*)' \ + | sed 's/ .*//g' \ + | tr -d '()' \ + | sort -u + else + if [[ ${LANGUAGE^^} == 'MAPLE' ]] && grep -q 'MAPLE' $DOC + then + GREP_REGEX='MAPLE.*CROSSREFS' + grep -q 'PROG' $DOC && GREP_REGEX='MAPLE.*PROG' + grep -q 'MATHEMATICA' $DOC && GREP_REGEX='MAPLE.*MATHEMATICA' + parse_code "${GREP_REGEX}" \ + | sed 's/MAPLE/(MAPLE)/; /MATHEMATICA/d; /PROG/d; /CROSSREFS/d' + fi + if [[ ${LANGUAGE^^} == 'MATHEMATICA' ]] && grep -q 'MATHEMATICA' $DOC + then + GREP_REGEX='MATHEMATICA.*CROSSREFS' + grep -q 'PROG' $DOC && GREP_REGEX='MATHEMATICA.*PROG' + parse_code "${GREP_REGEX}" \ + | sed 's/MATHEMATICA/(MATHEMATICA)/; /PROG/d; /CROSSREFS/d' + fi + # PROG section contains more code samples (Non Mathematica or Maple) + parse_code "PROG.*CROSSREFS" \ + | sed '/PROG/d; /CROSSREFS/d' > ${TMP}/prog + # Print out code sample for specified language + rm -f ${TMP}/code_snippet + awk -v tgt="${LANGUAGE^^}" -F'[()]' '/^\(/{f=(tgt==$2)} f' ${TMP}/prog > ${TMP}/code_snippet + L="${LANGUAGE:0:1}" + LANGUAGE="${LANGUAGE:1}" + LANGUAGE="${L^^}${LANGUAGE,,}" + [ $(wc -c < $TMP/code_snippet) -eq 0 ] && awk -v tgt="${LANGUAGE}" -F'[()]' '/^\(/{f=(tgt==$2)} f' ${TMP}/prog > ${TMP}/code_snippet + # Print code snippet with 4-space indent to enable colorization + if [ $(wc -c < $TMP/code_snippet) -ne 0 ] + then + printf "${LANGUAGE^^}" + cat ${TMP}/code_snippet \ + | sed "0,/(${LANGUAGE^^})/{s/(${LANGUAGE^^})/\n/}; 0,/(${LANGUAGE})/{s/(${LANGUAGE})/\n/};" \ + | sed "s/(${LANGUAGE^^})/--\n/; s/(${LANGUAGE})/--\n/;" \ + | sed 's/^/ /' + else + printf "${LANGUAGE^^} unavailable. Use :list to view available languages.\n" + fi fi - if [[ ${LANGUAGE^^} == 'MATHEMATICA' ]] && grep -q 'MATHEMATICA' $DOC - then - GREP_REGEX='MATHEMATICA.*CROSSREFS' - grep -q 'PROG' $DOC && GREP_REGEX='MATHEMATICA.*PROG' - parse_code "${GREP_REGEX}" \ - | sed 's/MATHEMATICA/(MATHEMATICA)/; /PROG/d; /CROSSREFS/d' - fi - # PROG section contains more code samples (Non Mathematica or Maple) - parse_code "PROG.*CROSSREFS" \ - | sed '/PROG/d; /CROSSREFS/d' > ${TMP}/prog - # Print out code sample for specified language - rm -f ${TMP}/code_snippet - awk -v tgt="${LANGUAGE^^}" -F'[()]' '/^\(/{f=(tgt==$2)} f' ${TMP}/prog > ${TMP}/code_snippet - L="${LANGUAGE:0:1}" - LANGUAGE="${LANGUAGE:1}" - LANGUAGE="${L^^}${LANGUAGE,,}" - [ $(wc -c < $TMP/code_snippet) -eq 0 ] && awk -v tgt="${LANGUAGE}" -F'[()]' '/^\(/{f=(tgt==$2)} f' ${TMP}/prog > ${TMP}/code_snippet - # Print code snippet with 4-space indent to enable colorization - printf "${LANGUAGE^^}\n" - cat ${TMP}/code_snippet \ - | sed "s/(${LANGUAGE^^})/--\n/;" \ - | sed 's/^/ /' # Search unknown sequence else # Build URL