PageRenderTime 40ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/vendor/phpspec/phpspec/src/PhpSpec/Locator/PSR0/PSR0Resource.php

https://gitlab.com/Pasantias/pasantiasASLG
PHP | 126 lines | 78 code | 13 blank | 35 comment | 1 complexity | 02f1e00dc1f6ca7d089a34a68744ed63 MD5 | raw file
  1. <?php
  2. /*
  3. * This file is part of PhpSpec, A php toolset to drive emergent
  4. * design by specification.
  5. *
  6. * (c) Marcello Duarte <marcello.duarte@gmail.com>
  7. * (c) Konstantin Kudryashov <ever.zet@gmail.com>
  8. *
  9. * For the full copyright and license information, please view the LICENSE
  10. * file that was distributed with this source code.
  11. */
  12. namespace PhpSpec\Locator\PSR0;
  13. use PhpSpec\Locator\ResourceInterface;
  14. class PSR0Resource implements ResourceInterface
  15. {
  16. /**
  17. * @var array
  18. */
  19. private $parts;
  20. /**
  21. * @var PSR0Locator
  22. */
  23. private $locator;
  24. /**
  25. * @param array $parts
  26. * @param PSR0Locator $locator
  27. */
  28. public function __construct(array $parts, PSR0Locator $locator)
  29. {
  30. $this->parts = $parts;
  31. $this->locator = $locator;
  32. }
  33. /**
  34. * @return mixed
  35. */
  36. public function getName()
  37. {
  38. return end($this->parts);
  39. }
  40. /**
  41. * @return string
  42. */
  43. public function getSpecName()
  44. {
  45. return $this->getName().'Spec';
  46. }
  47. /**
  48. * @return string
  49. */
  50. public function getSrcFilename()
  51. {
  52. if ($this->locator->isPSR4()) {
  53. return $this->locator->getFullSrcPath().implode(DIRECTORY_SEPARATOR, $this->parts).'.php';
  54. }
  55. $nsParts = $this->parts;
  56. $classname = array_pop($nsParts);
  57. $parts = array_merge($nsParts, explode('_', $classname));
  58. return $this->locator->getFullSrcPath().implode(DIRECTORY_SEPARATOR, $parts).'.php';
  59. }
  60. /**
  61. * @return string
  62. */
  63. public function getSrcNamespace()
  64. {
  65. $nsParts = $this->parts;
  66. array_pop($nsParts);
  67. return rtrim($this->locator->getSrcNamespace().implode('\\', $nsParts), '\\');
  68. }
  69. /**
  70. * @return string
  71. */
  72. public function getSrcClassname()
  73. {
  74. return $this->locator->getSrcNamespace().implode('\\', $this->parts);
  75. }
  76. /**
  77. * @return string
  78. */
  79. public function getSpecFilename()
  80. {
  81. if ($this->locator->isPSR4()) {
  82. return $this->locator->getFullSpecPath().
  83. implode(DIRECTORY_SEPARATOR, $this->parts).'Spec.php';
  84. }
  85. $nsParts = $this->parts;
  86. $classname = array_pop($nsParts);
  87. $parts = array_merge($nsParts, explode('_', $classname));
  88. return $this->locator->getFullSpecPath().
  89. implode(DIRECTORY_SEPARATOR, $parts).'Spec.php';
  90. }
  91. /**
  92. * @return string
  93. */
  94. public function getSpecNamespace()
  95. {
  96. $nsParts = $this->parts;
  97. array_pop($nsParts);
  98. return rtrim($this->locator->getSpecNamespace().implode('\\', $nsParts), '\\');
  99. }
  100. /**
  101. * @return string
  102. */
  103. public function getSpecClassname()
  104. {
  105. return $this->locator->getSpecNamespace().implode('\\', $this->parts).'Spec';
  106. }
  107. }