/** * @test */ public function normalizeReferenceWords() { $this->assertEquals('Forms', Section::normalizeReference('Forms')); $this->assertEquals('Forms.Checkboxes', Section::normalizeReference('Forms.Checkboxes')); $this->assertEquals('Forms.Checkboxes.', Section::normalizeReference('Forms.Checkboxes -')); $this->assertEquals('Forms.Checkboxes', Section::normalizeReference('Forms - Checkboxes')); $this->assertEquals('Forms.Checkboxes.Special', Section::normalizeReference('Forms - Checkboxes-Special')); }
/** * Returns an array of children for a specified section reference * * @param string $reference * @param int $levelsDown OPTIONAL * * @return array */ public function getSectionChildren($reference, $levelsDown = null) { $reference = strtolower(Section::normalizeReference($reference)); $this->sortSections(); $sectionKeys = array_keys($this->sections); $sections = array(); $maxDepth = null; if ($levelsDown !== null) { $maxDepth = Section::calcDepth($reference) + $levelsDown; } $reference = Section::trimReference($reference); $reference .= '.'; foreach ($sectionKeys as $sectionKey) { $testSectionKey = strtolower(Section::normalizeReference($sectionKey)); // Only get sections within that level. Do not get the level itself if (strpos($testSectionKey . '.', $reference) === 0 && $testSectionKey . '.' != $reference) { $section = $this->sections[$sectionKey]; if ($maxDepth !== null && $section->getDepth() > $maxDepth) { continue; } $sections[$sectionKey] = $section; } } return $sections; }