atcoder-traffics

beta.atcoder.jpとatcoder.jpのコンテストサイトを行き来する

2018-08-06 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

  1. // ==UserScript==
  2. // @name atcoder-traffics
  3. // @namespace
  4. // @description beta.atcoder.jpとatcoder.jpのコンテストサイトを行き来する
  5. // @version 0.3
  6. // @author euglenese
  7. // @match https://beta.atcoder.jp/contests/*
  8. // @match https://*.contest.atcoder.jp/*
  9. // @namespace https://greatest.deepsurf.us/users/201019
  10. // ==/UserScript==
  11.  
  12. function location_match(regex){
  13. return location.href.match(new RegExp(regex));
  14. }
  15.  
  16. function erase(text, regex){
  17. return text.replace(new RegExp(regex), "");
  18. }
  19.  
  20. var contest_name, position_name;
  21.  
  22. function position_name_change(before, after){
  23. if(position_name == before){
  24. position_name = after;
  25. }
  26. }
  27.  
  28. var beta_contest_URL = "https\:\/\/beta\.atcoder\.jp\/contests\/";
  29. var https = "https\:\/\/";
  30. var contest_URL = "\.contest\.atcoder\.jp\/";
  31. var any_string = "[0-9a-z-_#]+";
  32. var any_string2 = "[0-9a-z-_#]*";
  33. var any_slash = "[0-9a-z-_#/]+";
  34.  
  35. if(location_match(beta_contest_URL)){
  36. if(location_match(beta_contest_URL + any_string + "\/" + any_slash)){
  37. contest_name = erase(location.href, beta_contest_URL).split("/")[0];
  38. position_name = erase(location.href, beta_contest_URL + contest_name + "/");
  39. position_name_change("tasks", "assignments");
  40. position_name_change("submissions", "submissions/all");
  41. $(".contest-title").attr("href", "https://" + contest_name + ".contest.atcoder.jp/" + position_name);
  42. }else{
  43. contest_name = erase(location.href, beta_contest_URL).split("/")[0];
  44. $(".contest-title").attr("href", "https://" + contest_name + ".contest.atcoder.jp/");
  45. }
  46. }else{
  47. if(location_match(https + any_string + contest_URL + any_slash)){
  48. contest_name = erase(erase(location.href, https), contest_URL + any_slash);
  49. position_name = erase(location.href, https + contest_name + contest_URL);
  50. position_name_change("submissions/all", "submissions");
  51. $(".brand").attr("href", "https://beta.atcoder.jp/contests/" + contest_name + "/" + position_name);
  52. }else{
  53. contest_name = erase(erase(location.href, https), contest_URL);
  54. $(".brand").attr("href", "https://beta.atcoder.jp/contests/" + contest_name);
  55. }
  56. }