1
0

convertcase.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /**
  2. * 大小写转换
  3. * @file
  4. * @since 1.2.6.1
  5. */
  6. /**
  7. * 把选区内文本变大写,与“tolowercase”命令互斥
  8. * @command touppercase
  9. * @method execCommand
  10. * @param { String } cmd 命令字符串
  11. * @example
  12. * ```javascript
  13. * editor.execCommand( 'touppercase' );
  14. * ```
  15. */
  16. /**
  17. * 把选区内文本变小写,与“touppercase”命令互斥
  18. * @command tolowercase
  19. * @method execCommand
  20. * @param { String } cmd 命令字符串
  21. * @example
  22. * ```javascript
  23. * editor.execCommand( 'tolowercase' );
  24. * ```
  25. */
  26. UE.commands["touppercase"] = UE.commands["tolowercase"] = {
  27. execCommand: function(cmd) {
  28. var me = this;
  29. var rng = me.selection.getRange();
  30. if (rng.collapsed) {
  31. return rng;
  32. }
  33. var bk = rng.createBookmark(),
  34. bkEnd = bk.end,
  35. filterFn = function(node) {
  36. return !domUtils.isBr(node) && !domUtils.isWhitespace(node);
  37. },
  38. curNode = domUtils.getNextDomNode(bk.start, false, filterFn);
  39. while (
  40. curNode &&
  41. domUtils.getPosition(curNode, bkEnd) & domUtils.POSITION_PRECEDING
  42. ) {
  43. if (curNode.nodeType == 3) {
  44. curNode.nodeValue = curNode.nodeValue[
  45. cmd == "touppercase" ? "toUpperCase" : "toLowerCase"
  46. ]();
  47. }
  48. curNode = domUtils.getNextDomNode(curNode, true, filterFn);
  49. if (curNode === bkEnd) {
  50. break;
  51. }
  52. }
  53. rng.moveToBookmark(bk).select();
  54. }
  55. };