From fa646cdbf6f688ce92aca4a1f63625d06917fbba Mon Sep 17 00:00:00 2001 From: Stig Lindqvist Date: Fri, 18 May 2012 09:48:57 +1200 Subject: [PATCH] BUGFIX: Deprecation errors and strict warnings breaks the docsviewer --- code/DocumentationParser.php | 14 +++++++------- code/DocumentationService.php | 2 +- tests/DocumentationParserTest.php | 9 +++++++++ tests/DocumentationViewerTest.php | 13 +++++++++++++ tests/docs-v3.0/en/ChangeLog.md | 3 +++ tests/docs-v3.0/en/Tutorials.md | 3 +++ 6 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 tests/docs-v3.0/en/ChangeLog.md create mode 100644 tests/docs-v3.0/en/Tutorials.md diff --git a/code/DocumentationParser.php b/code/DocumentationParser.php index 189b3eb..46d807d 100755 --- a/code/DocumentationParser.php +++ b/code/DocumentationParser.php @@ -43,7 +43,7 @@ class DocumentationParser { $md = self::rewrite_api_links($md, $page); $md = self::rewrite_heading_anchors($md, $page); - $md = self::rewrite_code_blocks($md, $page); + $md = self::rewrite_code_blocks($md); require_once(DOCSVIEWER_PATH .'/thirdparty/markdown/markdown.php'); @@ -53,11 +53,11 @@ class DocumentationParser { return $parser->transform($md); } - function rewrite_code_blocks($md) { + public static function rewrite_code_blocks($md) { $started = false; $inner = false; - $lines = split("\n", $md); + $lines = explode("\n", $md); foreach($lines as $i => $line) { if(!$started && preg_match('/^\t*:::\s*(.*)/', $line, $matches)) { // first line with custom formatting @@ -203,14 +203,14 @@ class DocumentationParser { /** * */ - static function rewrite_heading_anchors($md, $page) { + public static function rewrite_heading_anchors($md, $page) { $re = '/^\#+(.*)/m'; $md = preg_replace_callback($re, array('DocumentationParser', '_rewrite_heading_anchors_callback'), $md); return $md; } - static function _rewrite_heading_anchors_callback($matches) { + public static function _rewrite_heading_anchors_callback($matches) { $heading = $matches[0]; $headingText = $matches[1]; @@ -236,8 +236,8 @@ class DocumentationParser { $t = $title; $t = str_replace('&','-and-',$t); $t = str_replace('&','-and-',$t); - $t = ereg_replace('[^A-Za-z0-9]+','-',$t); - $t = ereg_replace('-+','-',$t); + $t = preg_replace('/[^A-Za-z0-9]+/','-',$t); + $t = preg_replace('/-+/','-',$t); $t = trim($t, '-'); $t = strtolower($t); diff --git a/code/DocumentationService.php b/code/DocumentationService.php index 28078ad..4b334d4 100755 --- a/code/DocumentationService.php +++ b/code/DocumentationService.php @@ -110,7 +110,7 @@ class DocumentationService { * * @return array */ - public function get_ignored_files() { + public static function get_ignored_files() { return self::$ignored_files; } diff --git a/tests/DocumentationParserTest.php b/tests/DocumentationParserTest.php index 826e63d..7897032 100755 --- a/tests/DocumentationParserTest.php +++ b/tests/DocumentationParserTest.php @@ -4,6 +4,15 @@ */ class DocumentationParserTest extends SapphireTest { + function testGenerateHtmlId() { + $this->assertEquals('title-one', DocumentationParser::generate_html_id('title one')); + $this->assertEquals('title-one', DocumentationParser::generate_html_id('Title one')); + $this->assertEquals('title-and-one', DocumentationParser::generate_html_id('Title & One')); + $this->assertEquals('title-and-one', DocumentationParser::generate_html_id('Title & One')); + $this->assertEquals('title-one', DocumentationParser::generate_html_id(' Title one ')); + $this->assertEquals('title-one', DocumentationParser::generate_html_id('Title--one')); + } + function testRewriteCodeBlocks() { $page = new DocumentationPage(); $page->setRelativePath('test.md'); diff --git a/tests/DocumentationViewerTest.php b/tests/DocumentationViewerTest.php index 035367f..1aa61ce 100755 --- a/tests/DocumentationViewerTest.php +++ b/tests/DocumentationViewerTest.php @@ -268,4 +268,17 @@ class DocumentationViewerTest extends FunctionalTest { $this->assertNull($warn->OutdatedRelease); $this->assertTrue($warn->FutureRelease); } + + /** + * Test that the pages comes back sorted by filename + */ + function testGetEntityPagesSortedByFilename() { + $v = new DocumentationViewer(); + $response = $v->handleRequest(new SS_HTTPRequest('GET', 'DocumentationViewerTests/en/3.0/'), DataModel::inst()); + $pages = $v->getEntityPages(); + $links = $pages->column('Link'); + $this->assertStringEndsWith('DocumentationViewerTests/en/3.0/ChangeLog', $links[0]); + $this->assertStringEndsWith('DocumentationViewerTests/en/3.0/Tutorials', $links[1]); + $this->assertStringEndsWith('DocumentationViewerTests/en/3.0/empty', $links[2]); + } } \ No newline at end of file diff --git a/tests/docs-v3.0/en/ChangeLog.md b/tests/docs-v3.0/en/ChangeLog.md new file mode 100644 index 0000000..ebb1789 --- /dev/null +++ b/tests/docs-v3.0/en/ChangeLog.md @@ -0,0 +1,3 @@ +# Changelog + +This is a changelog \ No newline at end of file diff --git a/tests/docs-v3.0/en/Tutorials.md b/tests/docs-v3.0/en/Tutorials.md new file mode 100644 index 0000000..3912ee8 --- /dev/null +++ b/tests/docs-v3.0/en/Tutorials.md @@ -0,0 +1,3 @@ +# Tutorials + +This a bunch of tutorials \ No newline at end of file