IPA

text to ipa

  1. // ==UserScript==
  2. // @name IPA
  3. // @namespace http://www.olivetti.info
  4. // @description text to ipa
  5. // @include *
  6. // @version 1
  7. // @grant GM_xmlhttpRequest
  8. // @grant GM_registerMenuCommand
  9. // ==/UserScript==
  10.  
  11. function doMonkey(){
  12. work(false,"words.json");
  13. }
  14. function doMonkey2(){
  15. work(true,"words.json");
  16. }
  17.  
  18. function doMonkey3(){
  19. work(false,"wordsAmE.json");
  20. }
  21. function doMonkey4(){
  22. work(true,"wordsAmE.json");
  23. }
  24. function work(remove,dict){
  25. GM_xmlhttpRequest({
  26. method: 'GET',
  27. url: 'http://www.olivetti.info/'+dict,
  28. onload: function (response) {
  29. dataReady(response.responseText, remove);
  30. }
  31. });
  32. }
  33. function dataReady(text,remove) {
  34. words = JSON.parse(text);
  35. function replaceIpaString(s) {
  36. if (s.length == 0) return '';
  37. var delim = ' ,.;:<>()\n!\"—'.split('');
  38. var p = - 1;
  39. for (var i = 0; i < delim.length; i++) {
  40. var p2 = s.indexOf(delim[i]);
  41. if (p2 != - 1 && (p == - 1 || p2 < p)) p = p2;
  42. }
  43. if (p == 0) return s.charAt(0) + replaceIpaString(s.substring(1));
  44. var word = s;
  45. if (p != - 1) word = s.substring(0, p);
  46. var ipaword = words[word];
  47. var skip = word.length;
  48. if (ipaword !== undefined){
  49. if(remove)ipaword = ipaword.replace(/[.ˈ]/g,'').replace(/[(]r[)]/g,'').replace(/[ˌ]/g,'');
  50. word = ipaword;
  51. }
  52. return word + replaceIpaString(s.substring(skip));
  53. }
  54. function replaceIpa(n) {
  55. var m;
  56. if (n.nodeType == 3) { // TEXT_NODE
  57. var sp = n.parentNode.nodeName.toLowerCase();
  58. if( sp != "style" && sp != "script" ){
  59. ns = replaceIpaString(n.data.toLowerCase());
  60. n.data = ns;
  61. }
  62. }
  63. else if (n.nodeType == 1) { // ELEMENT_NODE
  64. for (m = n.firstChild; null != m; m = m.nextSibling) {
  65. replaceIpa(m);
  66. }
  67. }
  68. }
  69. replaceIpa(document.body);
  70. }
  71.  
  72. GM_registerMenuCommand( "Convert EN", doMonkey);
  73. GM_registerMenuCommand( "Convert EN clean", doMonkey2);
  74. GM_registerMenuCommand( "Convert US", doMonkey3);
  75. GM_registerMenuCommand( "Convert US clean", doMonkey4);
  76.  

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址