%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : 49.231.201.246 / Your IP : 216.73.216.149 Web Server : Apache/2.4.18 (Ubuntu) System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : root ( 0) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/water/vendor/behat/gherkin/src/Behat/Gherkin/Keywords/ |
Upload File : |
<?php /* * This file is part of the Behat Gherkin. * (c) Konstantin Kudryashov <ever.zet@gmail.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Behat\Gherkin\Keywords; /** * Gherkin keywords dumper. * * @author Konstantin Kudryashov <ever.zet@gmail.com> */ class KeywordsDumper { private $keywords; private $keywordsDumper; /** * Initializes dumper. * * @param KeywordsInterface $keywords Keywords instance */ public function __construct(KeywordsInterface $keywords) { $this->keywords = $keywords; $this->keywordsDumper = array($this, 'dumpKeywords'); } /** * Sets keywords mapper function. * * Callable should accept 2 arguments (array $keywords and Boolean $isShort) * * @param callable $mapper Mapper function */ public function setKeywordsDumperFunction($mapper) { $this->keywordsDumper = $mapper; } /** * Defaults keywords dumper. * * @param array $keywords Keywords list * @param Boolean $isShort Is short version * * @return string */ public function dumpKeywords(array $keywords, $isShort) { if ($isShort) { return 1 < count($keywords) ? '(' . implode('|', $keywords) . ')' : $keywords[0]; } return $keywords[0]; } /** * Dumps keyworded feature into string. * * @param string $language Keywords language * @param Boolean $short Dump short version * @param bool $excludeAsterisk * * @return string|array String for short version and array of features for extended */ public function dump($language, $short = true, $excludeAsterisk = false) { $this->keywords->setLanguage($language); $languageComment = ''; if ('en' !== $language) { $languageComment = "# language: $language\n"; } $keywords = explode('|', $this->keywords->getFeatureKeywords()); if ($short) { $keywords = call_user_func($this->keywordsDumper, $keywords, $short); return trim($languageComment . $this->dumpFeature($keywords, $short, $excludeAsterisk)); } $features = array(); foreach ($keywords as $keyword) { $keyword = call_user_func($this->keywordsDumper, array($keyword), $short); $features[] = trim($languageComment . $this->dumpFeature($keyword, $short, $excludeAsterisk)); } return $features; } /** * Dumps feature example. * * @param string $keyword Item keyword * @param Boolean $short Dump short version? * * @return string */ protected function dumpFeature($keyword, $short = true, $excludeAsterisk = false) { $dump = <<<GHERKIN {$keyword}: Internal operations In order to stay secret As a secret organization We need to be able to erase past agents' memory GHERKIN; // Background $keywords = explode('|', $this->keywords->getBackgroundKeywords()); if ($short) { $keywords = call_user_func($this->keywordsDumper, $keywords, $short); $dump .= $this->dumpBackground($keywords, $short, $excludeAsterisk); } else { $keyword = call_user_func($this->keywordsDumper, array($keywords[0]), $short); $dump .= $this->dumpBackground($keyword, $short, $excludeAsterisk); } // Scenario $keywords = explode('|', $this->keywords->getScenarioKeywords()); if ($short) { $keywords = call_user_func($this->keywordsDumper, $keywords, $short); $dump .= $this->dumpScenario($keywords, $short, $excludeAsterisk); } else { foreach ($keywords as $keyword) { $keyword = call_user_func($this->keywordsDumper, array($keyword), $short); $dump .= $this->dumpScenario($keyword, $short, $excludeAsterisk); } } // Outline $keywords = explode('|', $this->keywords->getOutlineKeywords()); if ($short) { $keywords = call_user_func($this->keywordsDumper, $keywords, $short); $dump .= $this->dumpOutline($keywords, $short, $excludeAsterisk); } else { foreach ($keywords as $keyword) { $keyword = call_user_func($this->keywordsDumper, array($keyword), $short); $dump .= $this->dumpOutline($keyword, $short, $excludeAsterisk); } } return $dump; } /** * Dumps background example. * * @param string $keyword Item keyword * @param Boolean $short Dump short version? * * @return string */ protected function dumpBackground($keyword, $short = true, $excludeAsterisk = false) { $dump = <<<GHERKIN {$keyword}: GHERKIN; // Given $dump .= $this->dumpStep( $this->keywords->getGivenKeywords(), 'there is agent A', $short, $excludeAsterisk ); // And $dump .= $this->dumpStep( $this->keywords->getAndKeywords(), 'there is agent B', $short, $excludeAsterisk ); return $dump . "\n"; } /** * Dumps scenario example. * * @param string $keyword Item keyword * @param Boolean $short Dump short version? * * @return string */ protected function dumpScenario($keyword, $short = true, $excludeAsterisk = false) { $dump = <<<GHERKIN {$keyword}: Erasing agent memory GHERKIN; // Given $dump .= $this->dumpStep( $this->keywords->getGivenKeywords(), 'there is agent J', $short, $excludeAsterisk ); // And $dump .= $this->dumpStep( $this->keywords->getAndKeywords(), 'there is agent K', $short, $excludeAsterisk ); // When $dump .= $this->dumpStep( $this->keywords->getWhenKeywords(), 'I erase agent K\'s memory', $short, $excludeAsterisk ); // Then $dump .= $this->dumpStep( $this->keywords->getThenKeywords(), 'there should be agent J', $short, $excludeAsterisk ); // But $dump .= $this->dumpStep( $this->keywords->getButKeywords(), 'there should not be agent K', $short, $excludeAsterisk ); return $dump . "\n"; } /** * Dumps outline example. * * @param string $keyword Item keyword * @param Boolean $short Dump short version? * * @return string */ protected function dumpOutline($keyword, $short = true, $excludeAsterisk = false) { $dump = <<<GHERKIN {$keyword}: Erasing other agents' memory GHERKIN; // Given $dump .= $this->dumpStep( $this->keywords->getGivenKeywords(), 'there is agent <agent1>', $short, $excludeAsterisk ); // And $dump .= $this->dumpStep( $this->keywords->getAndKeywords(), 'there is agent <agent2>', $short, $excludeAsterisk ); // When $dump .= $this->dumpStep( $this->keywords->getWhenKeywords(), 'I erase agent <agent2>\'s memory', $short, $excludeAsterisk ); // Then $dump .= $this->dumpStep( $this->keywords->getThenKeywords(), 'there should be agent <agent1>', $short, $excludeAsterisk ); // But $dump .= $this->dumpStep( $this->keywords->getButKeywords(), 'there should not be agent <agent2>', $short, $excludeAsterisk ); $keywords = explode('|', $this->keywords->getExamplesKeywords()); if ($short) { $keyword = call_user_func($this->keywordsDumper, $keywords, $short); } else { $keyword = call_user_func($this->keywordsDumper, array($keywords[0]), $short); } $dump .= <<<GHERKIN {$keyword}: | agent1 | agent2 | | D | M | GHERKIN; return $dump . "\n"; } /** * Dumps step example. * * @param string $keywords Item keyword * @param string $text Step text * @param Boolean $short Dump short version? * * @return string */ protected function dumpStep($keywords, $text, $short = true, $excludeAsterisk = false) { $dump = ''; $keywords = explode('|', $keywords); if ($short) { $keywords = array_map( function ($keyword) { return str_replace('<', '', $keyword); }, $keywords ); $keywords = call_user_func($this->keywordsDumper, $keywords, $short); $dump .= <<<GHERKIN {$keywords} {$text} GHERKIN; } else { foreach ($keywords as $keyword) { if ($excludeAsterisk && '*' === $keyword) { continue; } $indent = ' '; if (false !== mb_strpos($keyword, '<', 0, 'utf8')) { $keyword = mb_substr($keyword, 0, -1, 'utf8'); $indent = ''; } $keyword = call_user_func($this->keywordsDumper, array($keyword), $short); $dump .= <<<GHERKIN {$keyword}{$indent}{$text} GHERKIN; } } return $dump; } }