Can you just do

funcname = (:get_help_configuration, :get_help_languages,
:get_help_privacy, :get_help_tos, :get_application_rate_limit_status)
endpoint = ("help/configuration.json", "help/languages.json",
"help/privacy.json",  "help/tos.json", "application/rate_limit_status.json")

for (func, endp) in Dict(funcname, endpoint)
@eval begin function ($func)(; options=Dict{String, String}())

        r = get_oauth(string("https://api.twitter.com/1.1/";, $endp),
options)

        return r.status == 200 ? JSON.parse(r.data) : r

        end
    end
end


?

On Mon, Nov 17, 2014 at 9:35 PM, Randy Zwitch <randy.zwi...@fuqua.duke.edu>
wrote:

> I've seen this type of function generation in other packages, and wanted
> to try it for myself. This file in Twitter.jl has 5 functions with the same
> overall structure:
>
> https://github.com/randyzwitch/Twitter.jl/blob/master/src/help.jl
>
>
> Here's what I ended up doing, which works, but I've got no idea why I had
> to write the string interpolation the way I did. I went through many
> permutations here, so if someone could explain why the `:($(string("
> https://api.twitter.com/1.1/";, $endp))` line needs to be written that way
> for string interpolation, it would be appreciated. And any improvements in
> general are welcome.
>
>
>
> funcname = (:get_help_configuration, :get_help_languages,
> :get_help_privacy, :get_help_tos, :get_application_rate_limit_status)
> endpoint = ("help/configuration.json", "help/languages.json",
> "help/privacy.json",  "help/tos.json", "application/rate_limit_status.json")
>
> for (func, endp) in Dict(funcname, endpoint)
> @eval begin function ($func)(; options=Dict{String, String}())
>
>         r = get_oauth(:($(string("https://api.twitter.com/1.1/";,
> $endp))), options)
>
>         return r.status == 200 ? JSON.parse(r.data) : r
>
>         end
>     end
> end
>
> Thanks!
>

Reply via email to