Guest User

Untitled

a guest
Nov 22nd, 2017
391
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. new function()
  2. {
  3.  
  4. /**
  5. * Execute Macro
  6. *
  7. * @returns {void}
  8. */
  9. this.exec = function()
  10. {
  11. // Ensure we're set up correcly
  12. komodo.assertMacroVersion(3);
  13. if (komodo.view) { komodo.view.setFocus() };
  14.  
  15. // Get text to execute
  16. var ke = komodo.editor;
  17. if(!ke.selText)
  18. {
  19. // Use all text in file
  20. var text = ko.views.manager.currentView.scimoz.text.trim()
  21. }
  22. else
  23. {
  24. // Use selected text
  25. var text = komodo.interpolate('%s').trim();
  26. }
  27.  
  28. // Prepend php opening tag if necessary
  29. if (text.substr(0,2) != '<?')
  30. {
  31. text = '<?php ' + text;
  32. }
  33.  
  34. // Write temporary file
  35. var file = this.writeFile(text);
  36.  
  37. // get PHP binary path
  38. var phpBinary = Components.classes['@activestate.com/koPrefService;1']
  39. .getService(Components.interfaces.koIPrefService)
  40. .prefs.getStringPref('phpDefaultInterpreter');
  41.  
  42. // Run php
  43. ko.run.runEncodedCommand(window, phpBinary + ' -d display_errors=true ' + file);
  44. };
  45.  
  46. /**
  47. * Write data to file
  48. *
  49. * @param {string} data Data to write to file
  50. *
  51. * @returns {string} File path
  52. */
  53. this.writeFile = function(data)
  54. {
  55. // Get temp file path
  56. var tmpFile = Components.classes["@mozilla.org/file/directory_service;1"].
  57. getService(Components.interfaces.nsIProperties).
  58. get("TmpD", Components.interfaces.nsIFile);
  59. tmpFile.append("krsp.php");
  60.  
  61. // Initialize (create) file
  62. var file = Components.classes["@mozilla.org/file/local;1"].
  63. createInstance(Components.interfaces.nsILocalFile);
  64. file.initWithPath(tmpFile.path);
  65.  
  66. // Open stream to file
  67. var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].
  68. createInstance(Components.interfaces.nsIFileOutputStream);
  69. foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0);
  70.  
  71. // Use converter to ensure UTF-8 encoding
  72. var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].
  73. createInstance(Components.interfaces.nsIConverterOutputStream);
  74.  
  75. // Write to file
  76. converter.init(foStream, "UTF-8", 0, 0);
  77. converter.writeString(data);
  78. converter.close();
  79.  
  80. return tmpFile.path;
  81. };
  82.  
  83. this.exec();
  84.  
  85. }
Add Comment
Please, Sign In to add comment