how do I test for a unique string with multiple possibilities?

I'm writing a macro that takes a string and it returns an href based on that string. The string could have 150 different values. My question is how to write this in an efficient way. Using pdflatex.

Here's what I've got right now, shortened to two conditions for explanation:

\documentclass{article}
\usepackage{hyperref}
\newcommand{\myref}[1]{%
\ifnum\pdfstrcmp{#1}{aaa}=0%
\fi
\ifnum\pdfstrcmp{#1}{bbb}=0%
\fi
}
\begin{document}
Here is \myref{aaa}.
\end{document}


But of course once I get a success (#1=aaa, say), I'm still testing the other 149 conditions for no reason. How to code this efficiently?

• Are all of the outcomes of the form \href{example.com/<string>}{my <string> link}? – Joseph Wright May 28 at 13:13
• Ah, I simplified too much. It will actually take two args. first arg goes in the link address, the second provides the link text. Like \href{example.com/aaa}{The Title of the AAA Document} (link text will have completely different text on each invocation of the macro. – Tim A May 28 at 13:16

I would e.g. create command names:

\documentclass{article}
\usepackage{hyperref}
\makeatletter

\newcommand{\myref}[1]{%

\begin{document}
Here is \myref{aaa}.
\end{document}


let biber do the searching for you:

assuming there is a file test.bib with

@online{tex,
note={my aaa text},
url={tex.stackexchange.com}
}

note={my bbb text},
}


then

\documentclass{article}
\usepackage{biblatex}

\DeclareFieldFormat{url}{\href{#1}{\printfield{note}}}
\DeclareCiteCommand{\myref}{}{\usebibmacro{url}}{}{}

\usepackage{hyperref}

\begin{document}
Here is \myref{tex}

\end{document}


You can use xparse:

\pdfcompresslevel=0
\documentclass{article}
\usepackage{xparse}
\usepackage{hyperref}

\ExplSyntaxOn

\NewDocumentCommand{\newref}{mmm}
{% #1 = key, #2 = URL, #3 = description, #4 = options for \href
\prop_gput:Nnx \g_tima_sites_prop { #1 @ url } { \tl_to_str:n { #2 } }
\prop_gput:Nnn \g_tima_sites_prop { #1 @ desc } { #3 }
}

\NewDocumentCommand{\myref}{m}
{% #1 = key
\tima_href:xx
{ \prop_item:Nn \g_tima_sites_prop {#1 @ url } }
{ \prop_item:Nn \g_tima_sites_prop {#1 @ desc } }
}

\prop_new:N \g_tima_sites_prop
\cs_new_protected:Nn \tima_href:nn { \href{#1}{#2} }
\cs_generate_variant:Nn \tima_href:nn { xx }

\ExplSyntaxOff

\newref{texworks}{http://profs.scienze.univr.it/~gregorio/introtexworks}{\TeX works intro}
\newref{arara}{http://profs.scienze.univr.it/~gregorio/introarara}{Arara intro}
\newref{tex.sx}{https://tex.stackexchange.com}{Nice site}

\begin{document}

\myref{texworks}

\myref{arara}

\myref{tex.sx}

\end{document}