PageRenderTime 41ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/src/FluentDOM/Handler.php

http://github.com/ThomasWeinert/FluentDOM
PHP | 97 lines | 56 code | 5 blank | 36 comment | 6 complexity | b903ceb9910a17cd3857965cf71c58a8 MD5 | raw file
  1. <?php
  2. /**
  3. * FluentDOMHandler provides dom manipulation functions
  4. *
  5. * @version $Id$
  6. * @license http://www.opensource.org/licenses/mit-license.php The MIT License
  7. * @copyright Copyright (c) 2009-2010 Bastian Feder, Thomas Weinert
  8. *
  9. * @package FluentDOM
  10. */
  11. /**
  12. * FluentDOMHandler provides dom manipulation functions
  13. *
  14. * @package FluentDOM
  15. */
  16. class FluentDOMHandler {
  17. /**
  18. * Insert nodes after the target node.
  19. * @param DOMNode $targetNode
  20. * @param array|DOMNodeList|FluentDOM $contentNodes
  21. */
  22. public static function insertNodesAfter($targetNode, $contentNodes) {
  23. $result = array();
  24. if (isset($targetNode->parentNode) &&
  25. !empty($contentNodes)) {
  26. $beforeNode = $targetNode->nextSibling;
  27. foreach ($contentNodes as $contentNode) {
  28. $result[] = $targetNode->parentNode->insertBefore(
  29. $contentNode->cloneNode(TRUE), $beforeNode
  30. );
  31. }
  32. }
  33. return $result;
  34. }
  35. /**
  36. * Insert nodes before the target node.
  37. * @param DOMNode $targetNode
  38. * @param array|DOMNodeList|FluentDOM $contentNodes
  39. */
  40. public static function insertNodesBefore($targetNode, $contentNodes) {
  41. $result = array();
  42. if (isset($targetNode->parentNode) &&
  43. !empty($contentNodes)) {
  44. foreach ($contentNodes as $contentNode) {
  45. $result[] = $targetNode->parentNode->insertBefore(
  46. $contentNode->cloneNode(TRUE), $targetNode
  47. );
  48. }
  49. }
  50. return $result;
  51. }
  52. /**
  53. * Append nodes into target.
  54. *
  55. * @param DOMNode $targetNode
  56. * @param array|DOMNodeList|FluentDOM $contentNodes
  57. */
  58. public static function appendChildren($targetNode, $contentNodes) {
  59. $result = array();
  60. if ($targetNode instanceof DOMElement) {
  61. foreach ($contentNodes as $contentNode) {
  62. if ($contentNode instanceof DOMElement ||
  63. $contentNode instanceof DOMText) {
  64. $result[] = $targetNode->appendChild($contentNode->cloneNode(TRUE));
  65. }
  66. }
  67. }
  68. return $result;
  69. }
  70. /**
  71. * Insert nodes into target as first childs.
  72. *
  73. * @param DOMNode $targetNode
  74. * @param array|DOMNodeList|FluentDOM $contentNodes
  75. */
  76. public static function insertChildrenBefore($targetNode, $contentNodes) {
  77. $result = array();
  78. if ($targetNode instanceof DOMElement) {
  79. $firstChild = $targetNode->hasChildNodes() ? $targetNode->childNodes->item(0) : NULL;
  80. foreach ($contentNodes as $contentNode) {
  81. if ($contentNode instanceof DOMElement ||
  82. $contentNode instanceof DOMText) {
  83. $result[] = $targetNode->insertBefore(
  84. $contentNode->cloneNode(TRUE),
  85. $firstChild
  86. );
  87. }
  88. }
  89. }
  90. return $result;
  91. }
  92. }