index.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /**
  2. * FeHelper 代码美化工具
  3. */
  4. new Vue({
  5. el: '#pageContainer',
  6. data: {
  7. selectedType: 'Javascript',
  8. sourceContent: '',
  9. resultContent: ''
  10. },
  11. mounted: function () {
  12. // 在tab创建或者更新时候,监听事件,看看是否有参数传递过来
  13. chrome.runtime.onMessage.addListener((request, sender, callback) => {
  14. let MSG_TYPE = Tarp.require('../static/js/core/msg_type');
  15. if (request.type === MSG_TYPE.TAB_CREATED_OR_UPDATED && request.event === MSG_TYPE.CODE_BEAUTIFY) {
  16. if (request.content) {
  17. this.sourceContent = request.content;
  18. this.format();
  19. }
  20. }
  21. });
  22. //输入框聚焦
  23. this.$refs.codeSource.focus();
  24. },
  25. methods: {
  26. format: function () {
  27. let txtResult = '';
  28. let beautifierFunc = () => {
  29. };
  30. switch (this.selectedType) {
  31. case 'Javascript':
  32. let opts = {
  33. brace_style: "collapse",
  34. break_chained_methods: false,
  35. indent_char: " ",
  36. indent_scripts: "keep",
  37. indent_size: "4",
  38. keep_array_indentation: true,
  39. preserve_newlines: true,
  40. space_after_anon_function: true,
  41. space_before_conditional: true,
  42. unescape_strings: false,
  43. wrap_line_length: "120"
  44. };
  45. beautifierFunc = Tarp.require('./beautify.js').js_beautify;
  46. txtResult = beautifierFunc(this.sourceContent, opts);
  47. break;
  48. case 'CSS':
  49. beautifierFunc = Tarp.require('./beautify-css.js').css_beautify;
  50. txtResult = beautifierFunc(this.sourceContent);
  51. break;
  52. case 'HTML':
  53. beautifierFunc = Tarp.require('./beautify-html.js').html_beautify;
  54. txtResult = beautifierFunc(this.sourceContent);
  55. break;
  56. case 'SQL':
  57. Tarp.require('./vkbeautify.js');
  58. txtResult = vkbeautify.sql(this.sourceContent, 4);
  59. break;
  60. default:
  61. Tarp.require('./vkbeautify.js');
  62. txtResult = vkbeautify.xml(this.sourceContent);
  63. }
  64. txtResult = txtResult.replace(/>/g, '&gt;').replace(/</g, '&lt;');
  65. txtResult = '<pre class="brush: ' + this.selectedType.toLowerCase() + ';toolbar:false;">' + txtResult + '</pre>';
  66. this.resultContent = txtResult;
  67. // 代码高亮
  68. this.$nextTick(() => {
  69. SyntaxHighlighter.defaults['toolbar'] = false;
  70. SyntaxHighlighter.highlight();
  71. })
  72. }
  73. }
  74. });