not really known
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
6.5 KiB

  1. //* comment *//
  2. // Copyright (c) 2015 Walter Bender, Ignacio Rodriguez, Sam Parkinson
  3. //
  4. // This program is free software; you can redistribute it and/or modify
  5. // it under the terms of the GNU General Public License as published by
  6. // the Free Software Foundation; either version 3 of the License, or
  7. // (at your option) any later version.
  8. //
  9. // You should have received a copy of the GNU General Public License
  10. // along with this library; if not, write to the Free Software
  11. // Foundation, 51 Franklin Street, Suite 500 Boston, MA 02110-1335 USA
  12. // Plugins are a dictionary of json-encoded components: a flow-block
  13. // dictionary, an arg-block dictionary, a block dictionary, and a
  14. // palette dictionary. The flow-block dictionary is a set of commands
  15. // that are evaluated when a flow block is run; the arg-block
  16. // dictionary is a set of commands that are evaluated when an arg
  17. // block is run; the block dictionary defines the new blocks in the
  18. // plugin; and the palette dictionary defines icons (svg) associated
  19. // with the palettes populated by the blocks found in the plugin.
  20. // The Mashape plugin provides blocks that use the mashape.com APIs.
  21. // Included here are blocks to translate strings and to poll
  22. // international weather forecasts.
  23. //* globals *//
  24. var translateMashapeKey = '3Rfxc7fwp2mshJxgtDxKSueYna8Ap1qZfAcjsn2hjpuWPuBCrI';
  25. var translatePublicKey = 'nGhwbdV7TrtzC9qLp3DZ';
  26. var translateSecretKey = '3b68e1d00446eed728cdda66280a8312';
  27. //* flow:setlang *//
  28. fromLang = logo.parseArg(logo, turtle, logo.blocks.blockList[blk].connections[1]);
  29. toLang = logo.parseArg(logo, turtle, logo.blocks.blockList[blk].connections[2]);
  30. //* arg:translate *//
  31. var apiURL = 'https://community-onehourtranslation.p.mashape.com/mt/';
  32. var key = 'TranslatedText';
  33. var text = logo.parseArg(logo, turtle, logo.blocks.blockList[blk].connections[1]);
  34. var targetLang = 'Spanish';
  35. var args = 'translate/text?public_key=' + translatePublicKey + '&secret_key=' + translateSecretKey + '&source_content=' + text + '&source_language=' + fromLang + '&target_language=' + toLang;
  36. var request = new XMLHttpRequest();
  37. request.open('GET', apiURL + args, false);
  38. request.setRequestHeader('X-Mashape-Authorization', translateMashapeKey);
  39. request.send(null);
  40. var value = JSON.parse(request.responseText)['results'][key];
  41. if (!value) {
  42. logo.errorMsg('Problem with the language setting.', blk);
  43. value = '';
  44. }
  45. logo.blocks.blockList[blk].value = value;
  46. //* arg:detectlang *//
  47. var apiURL = 'https://community-onehourtranslation.p.mashape.com/mt/';
  48. var key = 'language';
  49. var text = logo.parseArg(logo, turtle, logo.blocks.blockList[blk].connections[1]);
  50. var args = 'detect/text?public_key=' + translatePublicKey + '&secret_key=' + translateSecretKey + '&source_content=' + text;
  51. var request = new XMLHttpRequest();
  52. request.open('GET', apiURL + args, false);
  53. request.setRequestHeader('X-Mashape-Authorization', translateMashapeKey);
  54. request.send(null);
  55. var value = JSON.parse(request.responseText)['results'][key];
  56. if (!value) {
  57. logo.errorMsg('Problem with the language setting.', blk);
  58. value = '';
  59. }
  60. logo.blocks.blockList[blk].value = value;
  61. //* block:translate *//
  62. var translateBlock = new ProtoBlock('translate');
  63. translateBlock.palette = palettes.dict['external'];
  64. blocks.protoBlockDict['translate'] = translateBlock;
  65. translateBlock.staticLabels.push(_('translate'));
  66. translateBlock.adjustWidthToLabel();
  67. translateBlock.oneArgMathBlock();
  68. translateBlock.dockTypes[0] = 'textout';
  69. translateBlock.dockTypes[1] = 'textin';
  70. translateBlock.defaults.push(_('hello'));
  71. //* block:detectlang *//
  72. var detectLangBlock = new ProtoBlock('detectlang');
  73. detectLangBlock.palette = palettes.dict['external'];
  74. blocks.protoBlockDict['detectlang'] = detectLangBlock;
  75. detectLangBlock.staticLabels.push(_('detect lang'));
  76. detectLangBlock.adjustWidthToLabel();
  77. detectLangBlock.oneArgMathBlock();
  78. detectLangBlock.dockTypes[0] = 'textout';
  79. detectLangBlock.dockTypes[1] = 'anyin';
  80. detectLangBlock.defaults.push(_('hello'));
  81. //* block:setlang *//
  82. var setLangBlock = new ProtoBlock('setlang');
  83. setLangBlock.palette = palettes.dict['external'];
  84. blocks.protoBlockDict['setlang'] = setLangBlock;
  85. setLangBlock.staticLabels.push(_('set lang'), _('source'), _('target'));
  86. setLangBlock.adjustWidthToLabel();
  87. setLangBlock.twoArgBlock();
  88. setLangBlock.dockTypes[1] = 'anyin';
  89. setLangBlock.dockTypes[2] = 'anyin';
  90. setLangBlock.defaults.push('English', 'Spanish');
  91. //* palette-icon:external *//
  92. <svg height="55" viewBox="0 0 55 55" width="55" xmlns="http://www.w3.org/2000/svg"><g fill="#59f" stroke="#3771c8" stroke-width="1.5" transform="matrix(.46522973 0 0 .46522973 4.261775 4.215252)"><path d="m86.2 50v0 0c0-9.7-3.8-18.8-10.7-25.7-6.8-6.8-15.9-10.5-25.5-10.5h-.1c-9.7 0-18.8 3.8-25.7 10.7-.4.4-.8.8-1.1 1.2v0c-6.1 6.7-9.4 15.3-9.4 24.4 0 9.2 3.5 17.7 9.2 24.1v0c .1.2.3.4.6.6 6.6 7.1 16 11.5 26.5 11.5v0 0 0 0 0 0c5.5 0 10.9-1.2 15.8-3.6 1-.5 1.4-1.7.9-2.7-.5-1-1.7-1.4-2.7-.9-3.3 1.6-6.8 2.6-10.4 3l2.9-4.8c4.7-7.8 7.3-16.5 7.6-25.2h18l-.3 3.3c-.2 1.1-.4 2.1-.7 3.2-.3 1.1.3 2.2 1.4 2.5 1.1.3 2.2-.3 2.5-1.4.3-1.2.6-2.4.8-3.6.3-2.1.4-4.1.4-6.1zm-39.3 25.1c-1.3-2.1-2.3-4.2-3.3-6.5 4.3-.6 8.6-.6 12.7 0-.9 2.2-2 4.4-3.3 6.5l-3 5.2zm-3.4 2.1l2.9 4.8c-7-.8-13.4-3.9-18.3-8.5 3.6-1.9 7.6-3.2 11.5-4.1 1.1 2.7 2.4 5.3 3.9 7.8zm-18.3-6.7c-4.2-5.1-6.9-11.5-7.4-18.5h18.1c.2 4.6 1 9.2 2.4 13.6-4.6 1.1-9 2.7-13.1 4.9zm-.1-41c4.2 2.2 8.6 3.9 13.1 4.9-1.4 4.5-2.2 9.1-2.4 13.7h-18c .4-6.9 3-13.4 7.3-18.6zm24.9-9.8l3.1 5.2c1.3 2.1 2.3 4.2 3.3 6.4-4.2.5-8.5.5-12.7 0 .9-2.2 2-4.4 3.3-6.4zm6.5 3.1l-2.9-4.8c6.9.8 13.3 3.7 18.4 8.5-3.7 1.9-7.6 3.3-11.6 4.1-1.1-2.7-2.4-5.3-3.9-7.8zm-13 0c-1.5 2.5-2.8 5.1-3.9 7.8-4-.9-7.9-2.2-11.6-4.1 5.1-4.8 11.5-7.7 18.4-8.5zm-1.3 12.3c2.6.4 5.2.6 7.8.6 2.6 0 5.2-.2 7.7-.6 1.4 4.2 2.1 8.5 2.3 12.9h-20.1c.2-4.3 1-8.7 2.3-12.9zm19.5-.7c4.5-1 8.9-2.7 13.1-4.9 4.4 5.3 6.9 11.7 7.3 18.5h-18c-.2-4.6-1-9.2-2.4-13.6zm-3.9 30.4c-5-.8-10.3-.8-15.5 0-1.4-4.2-2.1-8.5-2.3-12.8h20.1c-.2 4.3-1 8.7-2.3 12.8z"/><g transform="translate(-.125 .125)"><path d="m67.8 66.2h10.2l-1.6-1.6c-.4-.4-.6-.9-.6-1.4 0-.5.2-1 .6-1.4.8-.8 2-.8 2.8 0l5 5v0 0 0 0 0 0c .3.4.5.8.6 1.3v.4c0 .4-.2.7-.5 1l-.2.2c-.4.3-.8.5-1.2.5v0h-.1-15c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2z"/><path d="m84.7 74.239601c0 1.1-.9 2-2 2h-10.1l1.6 1.6c.4.4.6.9.6 1.4 0 .5-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.5 0-1-.2-1.4-.6l-5-5v0 0 0 0 0 0c-.3-.4-.5-.8-.6-1.3v-.4c0-.4.2-.7.5-1l .2-.2c.4-.3.8-.5 1.2-.5v0h .1 15c1 0 1.9.9 1.9 2z"/></g></g></svg>
  93. //* palette-fill:external *// #59f
  94. //* palette-stroke:external *// #3771c8
  95. //* palette-highlight:external *// #9DC4FF
  96. //* palette-stroke-highlight:external *// #000000