   Returns:
     object with link and text keys, "Null" if not a valid GitHub link
   ###
+
   regex = ->
     ///
     https?:\/\/               # https or http
     (?:(?:www\.)?github\.com)\/ # www.github.com, www optional
     ([a-z0-9_-]{3,39})\/      # capture user name / org
-    ([a-z0-9_.-]+)            # user name
+    ([a-z0-9_.-]+)            # repo
     (?:\/)?                   # divider
     (?:tree|blob)?            # whether file or directory
     (?:\/)?                   # divider

  )(repo_slug)


get_github_repo_link = (repo) ->
  ### Give a repo object return a short text version of the form


    (.+)?                     # path
    $///i                     # case insensitive

  make_text = (x) ->
    "git:#{x.user}/#{x.repo}:/#{x.path}@#{repo.version.substring(0, 8)}"

  make_url = (x) ->
    "https://www.github.com/#{x.user}/#{x.repo}/tree/#{repo.version}/#{x.path}"

  get_url_text(repo, make_url, make_text, regex)


repo_html = (x) ->
  if x?
    "<p><a href='#{x.link}' target='_blank'>#{x.text}</a></p>"
  else
    "<p>Null</p>"


get_link = sequence(
  (x) -> map(((f) -> f(x)), [get_github_repo_link, get_github_gist_link])
  filter((x) -> x?)
  get(0)
)


set_repo = sequence(
  (x) -> get_link(x.metadata.implementation.repo)
  (x) -> $('#repository').html(repo_html(x))
)


get_data = (data, name) ->
  ### Get the named data from the simulation data
