2015-12-10 15:19:38 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Copyright 2015 The Hugo Authors. All rights reserved. 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Licensed under the Apache License, Version 2.0 (the "License"); 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// you may not use this file except in compliance with the License. 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// You may obtain a copy of the License at 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// http://www.apache.org/licenses/LICENSE-2.0 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Unless required by applicable law or agreed to in writing, software 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// distributed under the License is distributed on an "AS IS" BASIS, 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// See the License for the specific language governing permissions and 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// limitations under the License. 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								package   hugolib 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import   ( 
  
						 
					
						
							
								
									
										
										
										
											2015-07-26 15:28:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 "fmt" 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 "html/template" 
  
						 
					
						
							
								
									
										
										
										
											2014-11-06 10:52:01 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 "path/filepath" 
  
						 
					
						
							
								
									
										
										
										
											2015-01-24 04:44:35 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 "reflect" 
  
						 
					
						
							
								
									
										
										
										
											2015-07-26 15:28:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 "sort" 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 "strings" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 "testing" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 "time" 
  
						 
					
						
							
								
									
										
										
										
											2014-10-16 20:20:09 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-01-24 04:44:35 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 "github.com/spf13/cast" 
  
						 
					
						
							
								
									
										
										
										
											2014-10-16 20:20:09 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 "github.com/spf13/hugo/helpers" 
  
						 
					
						
							
								
									
										
										
										
											2015-05-20 02:21:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 "github.com/spf13/viper" 
  
						 
					
						
							
								
									
										
										
										
											2015-05-28 03:19:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 "github.com/stretchr/testify/assert" 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 "github.com/stretchr/testify/require" 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var   emptyPage   =   "" 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-18 10:17:43 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const   ( 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePage                             =   "---\ntitle: Simple\n---\nSimple Page\n" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 invalidFrontMatterMissing              =   "This is a test" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 renderNoFrontmatter                    =   "<!doctype><html><head></head><body>This is a test</body></html>" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 contentWithCommentedFrontmatter        =   "<!--\n+++\ntitle = \"Network configuration\"\ndescription = \"Docker networking\"\nkeywords = [\"network\"]\n[menu.main]\nparent= \"smn_administrate\"\n+++\n-->\n\n# Network configuration\n\n##\nSummary" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 contentWithCommentedTextFrontmatter    =   "<!--[metaData]>\n+++\ntitle = \"Network configuration\"\ndescription = \"Docker networking\"\nkeywords = [\"network\"]\n[menu.main]\nparent= \"smn_administrate\"\n+++\n<![end-metadata]-->\n\n# Network configuration\n\n##\nSummary" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 contentWithCommentedLongFrontmatter    =   "<!--[metaData123456789012345678901234567890]>\n+++\ntitle = \"Network configuration\"\ndescription = \"Docker networking\"\nkeywords = [\"network\"]\n[menu.main]\nparent= \"smn_administrate\"\n+++\n<![end-metadata]-->\n\n# Network configuration\n\n##\nSummary" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 contentWithCommentedLong2Frontmatter   =   "<!--[metaData]>\n+++\ntitle = \"Network configuration\"\ndescription = \"Docker networking\"\nkeywords = [\"network\"]\n[menu.main]\nparent= \"smn_administrate\"\n+++\n<![end-metadata123456789012345678901234567890]-->\n\n# Network configuration\n\n##\nSummary" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 invalidFrontmatterShortDelim           =   ` 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								-- 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								title :   Short   delim   start 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Short   Delim 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 invalidFrontmatterShortDelimEnding   =   ` 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								title :   Short   delim   ending 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Short   Delim 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 invalidFrontmatterLadingWs   =   ` 
  
						 
					
						
							
								
									
										
										
										
											2013-08-14 08:57:14 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  -- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								title :   Leading   WS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Leading 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageJSON   =   ` 
  
						 
					
						
							
								
									
										
										
										
											2013-08-06 23:04:49 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"title" :   "spf13-vim 3.0 release and new website" , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"description" :   "spf13-vim is a cross platform distribution of vim plugins and resources for Vim." , 
  
						 
					
						
							
								
									
										
										
										
											2014-09-09 15:58:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"tags" :   [   ".vimrc" ,   "plugins" ,   "spf13-vim" ,   "VIm"   ] , 
  
						 
					
						
							
								
									
										
										
										
											2013-08-06 23:04:49 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"date" :   "2012-04-06" , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"categories" :   [ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     "Development" , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     "VIM" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								] , 
  
						 
					
						
							
								
									
										
										
										
											2014-10-02 17:25:52 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"slug" :   "-spf13-vim-3-0-release-and-new-website-" 
  
						 
					
						
							
								
									
										
										
										
											2013-08-06 23:04:49 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-01 22:45:24 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Content   of   the   file   goes   Here 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageJSONLoose   =   ` 
  
						 
					
						
							
								
									
										
										
										
											2013-10-01 22:45:24 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"title" :   "spf13-vim 3.0 release and new website" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"description" :   "spf13-vim is a cross platform distribution of vim plugins and resources for Vim." 
  
						 
					
						
							
								
									
										
										
										
											2014-09-09 15:58:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"tags" :   [   ".vimrc" ,   "plugins" ,   "spf13-vim" ,   "VIm"   ] 
  
						 
					
						
							
								
									
										
										
										
											2013-10-01 22:45:24 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								"date" :   "2012-04-06" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"categories" :   [ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     "Development" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     "VIM" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"slug" :   "spf13-vim-3-0-release-and-new-website" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-08-14 08:57:14 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Content   of   the   file   goes   Here 
  
						 
					
						
							
								
									
										
										
										
											2013-08-06 23:04:49 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageRFC3339Date    =   "---\ntitle: RFC3339 Date\ndate: \"2013-05-17T16:59:30Z\"\n---\nrfc3339 content" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 simplePageJSONMultiple   =   ` 
  
						 
					
						
							
								
									
										
										
										
											2013-08-06 23:04:49 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 "title" :   "foobar" , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 "customData" :   {   "foo" :   "bar"   } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 "date" :   "2012-08-06" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Some   text 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageNoLayout   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2013-08-14 15:22:57 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   simple_no_layout 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								No   Layout   called   out ` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageLayoutFoobar   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2013-08-14 15:22:57 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   simple   layout   foobar 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								layout :   foobar 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Layout   foobar ` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageTypeFoobar   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2013-08-14 15:22:57 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								type :   foobar 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type   foobar ` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageTypeLayout   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2013-08-14 15:22:57 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								type :   barfoo 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								layout :   buzfoo 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type   and   layout   set ` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageWithSummaryDelimiter   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2013-08-21 10:37:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   Simple 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
									
										
										
										
											2013-09-18 09:15:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Summary   Next   Line 
  
						 
					
						
							
								
									
										
										
										
											2013-08-21 10:37:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< ! -- more -- > 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 12:28:28 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Some   more   text 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 simplePageWithSummaryDelimiterAndMarkdownThatCrossesBorder   =   ` -- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								title :   Simple 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The   [ best   static   site   generator ] [ hugo ] . [ ^ 1 ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< ! -- more -- > 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ hugo ] :   http : //gohugo.io/ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ ^ 1 ] :   Many   people   say   so . 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 12:28:28 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageWithShortcodeInSummary   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 12:28:28 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   Simple 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
									
										
											 
										
											
												Shortcode rewrite, take 2
This commit contains a restructuring and partial rewrite of the shortcode handling.
Prior to this commit rendering of the page content was mingled with handling of the shortcodes. This led to several oddities.
The new flow is:
1. Shortcodes are extracted from page and replaced with placeholders.
2. Shortcodes are processed and rendered
3. Page is processed
4. The placeholders are replaced with the rendered shortcodes
The handling of summaries is also made simpler by this.
This commit also introduces some other chenges:
1. distinction between shortcodes that need further processing and those who do not:
* `{{< >}}`: Typically raw HTML. Will not be processed.
* `{{% %}}`: Will be processed by the page's markup engine (Markdown or (infuture) Asciidoctor)
The above also involves a new shortcode-parser, with lexical scanning inspired by Rob Pike's talk called "Lexical Scanning in Go",
which should be easier to understand, give better error messages and perform better.
2. If you want to exclude a shortcode from being processed (for documentation etc.), the inner part of the shorcode must be commented out, i.e. `{{%/* movie 47238zzb */%}}`. See the updated shortcode section in the documentation for further examples.
The new parser supports nested shortcodes. This isn't new, but has two related design choices worth mentioning:
* The shortcodes will be rendered individually, so If both `{{< >}}` and `{{% %}}` are used in the nested hierarchy, one will be passed through the page's markdown processor, the other not.
* To avoid potential costly overhead of always looking far ahead for a possible closing tag, this implementation looks at the template itself, and is branded as a container with inner content if it contains a reference to `.Inner`
Fixes #565
Fixes #480
Fixes #461
And probably some others.
											 
										 
										
											2014-10-27 21:48:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Summary   Next   Line .   { { < figure   src = "/not/real"   > } } . 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 12:28:28 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								More   text   here . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-08-21 10:37:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Some   more   text 
  
						 
					
						
							
								
									
										
										
										
											2014-05-29 20:42:12 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageWithEmbeddedScript   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2014-05-29 20:42:12 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   Simple 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< script   type = ' text / javascript ' > alert ( ' the   script   tags   are   still   there ,   right ? ' ) ; < / script > 
  
						 
					
						
							
								
									
										
										
										
											2013-08-21 10:37:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageWithSummaryDelimiterSameLine   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2013-08-31 21:07:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   Simple 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
									
										
										
										
											2013-09-18 09:15:46 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Summary   Same   Line < ! -- more -- > 
  
						 
					
						
							
								
									
										
										
										
											2013-08-31 21:07:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Some   more   text 
  
						 
					
						
							
								
									
										
										
										
											2015-07-12 11:05:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageWithAllCJKRunes   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2015-07-12 11:05:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   Simple 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								€   €   €   €   € 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								你好 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								도형이 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								カテゴリー 
  
						 
					
						
							
								
									
										
										
										
											2015-07-12 11:05:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 09:15:52 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageWithMainEnglishWithCJKRunes   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   Simple 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In   Chinese ,   好   means   good .    In   Chinese ,   好   means   good . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In   Chinese ,   好   means   good .    In   Chinese ,   好   means   good . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In   Chinese ,   好   means   good .    In   Chinese ,   好   means   good . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In   Chinese ,   好   means   good .    In   Chinese ,   好   means   good . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In   Chinese ,   好   means   good .    In   Chinese ,   好   means   good . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In   Chinese ,   好   means   good .    In   Chinese ,   好   means   good . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In   Chinese ,   好   means   good .    In   Chinese ,   好   means   good . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								More   then   70   words . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageWithMainEnglishWithCJKRunesSummary   =   "In Chinese, 好 means good. In Chinese, 好 means good. "   + 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 "In Chinese, 好 means good. In Chinese, 好 means good. "   + 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 "In Chinese, 好 means good. In Chinese, 好 means good. "   + 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 "In Chinese, 好 means good. In Chinese, 好 means good. "   + 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 "In Chinese, 好 means good. In Chinese, 好 means good. "   + 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 "In Chinese, 好 means good. In Chinese, 好 means good. "   + 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 "In Chinese, 好 means good. In Chinese, 好 means good." 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageWithIsCJKLanguageFalse   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   Simple 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								isCJKLanguage :   false 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In   Chinese ,   好的啊   means   good .    In   Chinese ,   好的呀   means   good . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In   Chinese ,   好的啊   means   good .    In   Chinese ,   好的呀   means   good . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In   Chinese ,   好的啊   means   good .    In   Chinese ,   好的呀   means   good . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In   Chinese ,   好的啊   means   good .    In   Chinese ,   好的呀   means   good . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In   Chinese ,   好的啊   means   good .    In   Chinese ,   好的呀   means   good . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In   Chinese ,   好的啊   means   good .    In   Chinese ,   好的呀   means   good . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								In   Chinese ,   好的啊   means   good .    In   Chinese ,   好的呀呀   means   good   enough . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								More   then   70   words . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageWithIsCJKLanguageFalseSummary   =   "In Chinese, 好的啊 means good. In Chinese, 好的呀 means good. "   + 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 "In Chinese, 好的啊 means good. In Chinese, 好的呀 means good. "   + 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 "In Chinese, 好的啊 means good. In Chinese, 好的呀 means good. "   + 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 "In Chinese, 好的啊 means good. In Chinese, 好的呀 means good. "   + 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 "In Chinese, 好的啊 means good. In Chinese, 好的呀 means good. "   + 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 "In Chinese, 好的啊 means good. In Chinese, 好的呀 means good. "   + 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 "In Chinese, 好的啊 means good. In Chinese, 好的呀呀 means good enough." 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageWithLongContent   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2013-10-15 09:15:52 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   Simple 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
									
										
										
										
											2014-01-28 23:09:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Lorem   ipsum   dolor   sit   amet ,   consectetur   adipisicing   elit ,   sed   do   eiusmod   tempor 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								incididunt   ut   labore   et   dolore   magna   aliqua .   Ut   enim   ad   minim   veniam ,   quis 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								nostrud   exercitation   ullamco   laboris   nisi   ut   aliquip   ex   ea   commodo   consequat . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Duis   aute   irure   dolor   in   reprehenderit   in   voluptate   velit   esse   cillum   dolore   eu 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fugiat   nulla   pariatur .   Excepteur   sint   occaecat   cupidatat   non   proident ,   sunt   in 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								culpa   qui   officia   deserunt   mollit   anim   id   est   laborum .   Lorem   ipsum   dolor   sit 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								amet ,   consectetur   adipisicing   elit ,   sed   do   eiusmod   tempor   incididunt   ut   labore 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								et   dolore   magna   aliqua .   Ut   enim   ad   minim   veniam ,   quis   nostrud   exercitation 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ullamco   laboris   nisi   ut   aliquip   ex   ea   commodo   consequat .   Duis   aute   irure   dolor 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								in   reprehenderit   in   voluptate   velit   esse   cillum   dolore   eu   fugiat   nulla 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								pariatur .   Excepteur   sint   occaecat   cupidatat   non   proident ,   sunt   in   culpa   qui 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								officia   deserunt   mollit   anim   id   est   laborum .   Lorem   ipsum   dolor   sit   amet , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								consectetur   adipisicing   elit ,   sed   do   eiusmod   tempor   incididunt   ut   labore   et 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								dolore   magna   aliqua .   Ut   enim   ad   minim   veniam ,   quis   nostrud   exercitation   ullamco 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								laboris   nisi   ut   aliquip   ex   ea   commodo   consequat .   Duis   aute   irure   dolor   in 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								reprehenderit   in   voluptate   velit   esse   cillum   dolore   eu   fugiat   nulla   pariatur . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Excepteur   sint   occaecat   cupidatat   non   proident ,   sunt   in   culpa   qui   officia 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								deserunt   mollit   anim   id   est   laborum .   Lorem   ipsum   dolor   sit   amet ,   consectetur 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								adipisicing   elit ,   sed   do   eiusmod   tempor   incididunt   ut   labore   et   dolore   magna 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								aliqua .   Ut   enim   ad   minim   veniam ,   quis   nostrud   exercitation   ullamco   laboris   nisi 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ut   aliquip   ex   ea   commodo   consequat .   Duis   aute   irure   dolor   in   reprehenderit   in 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								voluptate   velit   esse   cillum   dolore   eu   fugiat   nulla   pariatur .   Excepteur   sint 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								occaecat   cupidatat   non   proident ,   sunt   in   culpa   qui   officia   deserunt   mollit   anim 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								id   est   laborum .   Lorem   ipsum   dolor   sit   amet ,   consectetur   adipisicing   elit ,   sed 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								do   eiusmod   tempor   incididunt   ut   labore   et   dolore   magna   aliqua .   Ut   enim   ad   minim 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								veniam ,   quis   nostrud   exercitation   ullamco   laboris   nisi   ut   aliquip   ex   ea   commodo 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								consequat .   Duis   aute   irure   dolor   in   reprehenderit   in   voluptate   velit   esse 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								cillum   dolore   eu   fugiat   nulla   pariatur .   Excepteur   sint   occaecat   cupidatat   non 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								proident ,   sunt   in   culpa   qui   officia   deserunt   mollit   anim   id   est   laborum .   Lorem 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ipsum   dolor   sit   amet ,   consectetur   adipisicing   elit ,   sed   do   eiusmod   tempor 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								incididunt   ut   labore   et   dolore   magna   aliqua .   Ut   enim   ad   minim   veniam ,   quis 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								nostrud   exercitation   ullamco   laboris   nisi   ut   aliquip   ex   ea   commodo   consequat . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Duis   aute   irure   dolor   in   reprehenderit   in   voluptate   velit   esse   cillum   dolore   eu 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fugiat   nulla   pariatur .   Excepteur   sint   occaecat   cupidatat   non   proident ,   sunt   in 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								culpa   qui   officia   deserunt   mollit   anim   id   est   laborum .   Lorem   ipsum   dolor   sit 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								amet ,   consectetur   adipisicing   elit ,   sed   do   eiusmod   tempor   incididunt   ut   labore 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								et   dolore   magna   aliqua .   Ut   enim   ad   minim   veniam ,   quis   nostrud   exercitation 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ullamco   laboris   nisi   ut   aliquip   ex   ea   commodo   consequat .   Duis   aute   irure   dolor 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								in   reprehenderit   in   voluptate   velit   esse   cillum   dolore   eu   fugiat   nulla 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								pariatur .   Excepteur   sint   occaecat   cupidatat   non   proident ,   sunt   in   culpa   qui 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								officia   deserunt   mollit   anim   id   est   laborum . ` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 pageWithToC   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2014-01-28 23:09:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   TOC 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								For   some   moments   the   old   man   did   not   reply .   He   stood   with   bowed   head ,   buried   in   deep   thought .   But   at   last   he   spoke . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# #   AA 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								I   have   no   idea ,   of   course ,   how   long   it   took   me   to   reach   the   limit   of   the   plain , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								but   at   last   I   entered   the   foothills ,   following   a   pretty   little   canyon   upward 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								toward   the   mountains .   Beside   me   frolicked   a   laughing   brooklet ,   hurrying   upon 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								its   noisy   way   down   to   the   silent   sea .   In   its   quieter   pools   I   discovered   many 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								small   fish ,   of   four - or   five - pound   weight   I   should   imagine .   In   appearance , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								except   as   to   size   and   color ,   they   were   not   unlike   the   whale   of   our   own   seas .   As 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								I   watched   them   playing   about   I   discovered ,   not   only   that   they   suckled   their 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								young ,   but   that   at   intervals   they   rose   to   the   surface   to   breathe   as   well   as   to 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								feed   upon   certain   grasses   and   a   strange ,   scarlet   lichen   which   grew   upon   the 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								rocks   just   above   the   water   line . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# # #   AAA 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								I   remember   I   felt   an   extraordinary   persuasion   that   I   was   being   played   with , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								that   presently ,   when   I   was   upon   the   very   verge   of   safety ,   this   mysterious 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								death -- as   swift   as   the   passage   of   light -- would   leap   after   me   from   the   pit   about 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								the   cylinder   and   strike   me   down .   # #   BB 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# # #   BBB 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"You're a great Granser,"   he   cried   delightedly ,   "always making believe them little marks mean something." 
  
						 
					
						
							
								
									
										
										
										
											2015-01-25 20:08:02 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageWithAdditionalExtension   =   ` ++ + 
  
						 
					
						
							
								
									
										
										
										
											2015-01-25 20:08:02 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[ blackfriday ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   extensions   =   [ "hardLineBreak" ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								++ + 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								first   line . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								second   line . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fourth   line . 
  
						 
					
						
							
								
									
										
										
										
											2013-08-31 21:07:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
									
										
										
										
											2015-05-09 19:12:30 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageWithURL   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2015-05-09 19:12:30 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   Simple 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								url :   simple / url / 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Simple   Page   With   URL ` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageWithSlug   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2015-05-09 19:12:30 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   Simple 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								slug :   simple - slug 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Simple   Page   With   Slug ` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 simplePageWithDate   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2015-05-09 19:12:30 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   Simple 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								date :   ' 2013 - 10 - 15 T06 : 16 : 13 ' 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Simple   Page   With   Date ` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 UTF8Page   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2015-05-09 19:12:30 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   ラーメン 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								UTF8   Page ` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 UTF8PageWithURL   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2015-05-09 19:12:30 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   ラーメン 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								url :   ラーメン / url / 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								UTF8   Page   With   URL ` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 UTF8PageWithSlug   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2015-05-09 19:12:30 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   ラーメン 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								slug :   ラーメン - slug 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								UTF8   Page   With   Slug ` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 UTF8PageWithDate   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2015-05-09 19:12:30 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   ラーメン 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								date :   ' 2013 - 10 - 15 T06 : 16 : 13 ' 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								UTF8   Page   With   Date ` 
  
						 
					
						
							
								
									
										
										
										
											2013-09-18 10:17:43 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								) 
  
						 
					
						
							
								
									
										
										
										
											2013-08-31 21:07:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var   pageWithVariousFrontmatterTypes   =   ` ++ + 
  
						 
					
						
							
								
									
										
										
										
											2013-10-24 14:31:04 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								a_string   =   "bar" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								an_integer   =   1 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								a_float   =   1.3 
  
						 
					
						
							
								
									
										
										
										
											2014-01-28 23:24:59 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								a_bool   =   false 
  
						 
					
						
							
								
									
										
										
										
											2013-10-24 14:31:04 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								a_date   =   1979 - 05 - 27 T07 : 32 : 00 Z 
  
						 
					
						
							
								
									
										
										
										
											2015-01-24 04:44:35 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ a_table ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								a_key   =   "a_value" 
  
						 
					
						
							
								
									
										
										
										
											2013-10-24 14:31:04 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								++ + 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Front   Matter   with   various   frontmatter   types ` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var   pageWithCalendarYAMLFrontmatter   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2015-07-26 15:28:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								type :   calendar 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								weeks : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     start :   "Jan 5" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     days : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       -   activity :   class 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         room :   EN1000 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       -   activity :   lab 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       -   activity :   class 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       -   activity :   lab 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       -   activity :   class 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     start :   "Jan 12" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     days : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       -   activity :   class 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       -   activity :   lab 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       -   activity :   class 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       -   activity :   lab 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       -   activity :   exam 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Hi . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var   pageWithCalendarJSONFrontmatter   =   ` { 
  
						 
					
						
							
								
									
										
										
										
											2015-07-26 15:28:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   "type" :   "calendar" , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "weeks" :   [ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       "start" :   "Jan 5" , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       "days" :   [ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         {   "activity" :   "class" ,   "room" :   "EN1000"   } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         {   "activity" :   "lab"   } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         {   "activity" :   "class"   } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         {   "activity" :   "lab"   } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         {   "activity" :   "class"   } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       "start" :   "Jan 12" , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       "days" :   [ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         {   "activity" :   "class"   } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         {   "activity" :   "lab"   } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         {   "activity" :   "class"   } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         {   "activity" :   "lab"   } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								         {   "activity" :   "exam"   } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Hi . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var   pageWithCalendarTOMLFrontmatter   =   ` ++ + 
  
						 
					
						
							
								
									
										
										
										
											2015-07-26 15:28:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								type   =   "calendar" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ [ weeks ] ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								start   =   "Jan 5" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ [ weeks . days ] ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								activity   =   "class" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								room   =   "EN1000" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ [ weeks . days ] ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								activity   =   "lab" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ [ weeks . days ] ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								activity   =   "class" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ [ weeks . days ] ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								activity   =   "lab" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ [ weeks . days ] ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								activity   =   "class" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ [ weeks ] ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								start   =   "Jan 12" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ [ weeks . days ] ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								activity   =   "class" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ [ weeks . days ] ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								activity   =   "lab" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ [ weeks . days ] ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								activity   =   "class" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ [ weeks . days ] ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								activity   =   "lab" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[ [ weeks . days ] ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								activity   =   "exam" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								++ + 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Hi . 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func   checkError ( t   * testing . T ,   err   error ,   expected   string )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   err   ==   nil   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "err is nil.  Expected: %s" ,   expected ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   err . Error ( )   !=   expected   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Errorf ( "err.Error() returned: '%s'.  Expected: '%s'" ,   err . Error ( ) ,   expected ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func   TestDegenerateEmptyPageZeroLengthName ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-05-01 14:11:56 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 _ ,   err   :=   NewPage ( "" ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   err   ==   nil   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "A zero length page name must return an error" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 checkError ( t ,   err ,   "Zero length page name" ) 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func   TestDegenerateEmptyPage ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 _ ,   err   :=   NewPageFrom ( strings . NewReader ( emptyPage ) ,   "test" ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   err   !=   nil   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Empty files should not trigger an error. Should be able to touch a file while watching without erroring out." ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func   checkPageTitle ( t   * testing . T ,   page   * Page ,   title   string )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   page . Title   !=   title   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Page title is: %s.  Expected %s" ,   page . Title ,   title ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   checkPageContent ( t   * testing . T ,   page   * Page ,   content   string ,   msg   ... interface { } )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 a   :=   normalizeContent ( content ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 b   :=   normalizeContent ( string ( page . Content ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   a   !=   b   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Page content is:\n%q\nExpected:\n%q (%q)" ,   b ,   a ,   msg ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2014-01-28 23:09:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   normalizeContent ( c   string )   string   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 norm   :=   strings . Replace ( c ,   "\n" ,   "" ,   - 1 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 norm   =   strings . Replace ( norm ,   "    " ,   " " ,   - 1 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 norm   =   strings . Replace ( norm ,   "   " ,   " " ,   - 1 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 norm   =   strings . Replace ( norm ,   "  " ,   " " ,   - 1 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 return   strings . TrimSpace ( norm ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-28 23:09:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   checkPageTOC ( t   * testing . T ,   page   * Page ,   toc   string )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   page . TableOfContents   !=   template . HTML ( toc )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Page TableOfContents is: %q.\nExpected %q" ,   page . TableOfContents ,   toc ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   checkPageSummary ( t   * testing . T ,   page   * Page ,   summary   string ,   msg   ... interface { } )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 a   :=   normalizeContent ( string ( page . Summary ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 b   :=   normalizeContent ( summary ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   a   !=   b   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Page summary is:\n%q.\nExpected\n%q (%q)" ,   a ,   b ,   msg ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-08-21 10:37:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func   checkPageType ( t   * testing . T ,   page   * Page ,   pageType   string )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   page . Type ( )   !=   pageType   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Page type is: %s.  Expected: %s" ,   page . Type ( ) ,   pageType ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-07 07:57:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   checkPageLayout ( t   * testing . T ,   page   * Page ,   layout   ... string )   { 
  
						 
					
						
							
								
									
										
										
										
											2015-11-02 17:24:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   ! listEqual ( page . layouts ( ) ,   layout )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Page layout is: %s.  Expected: %s" ,   page . layouts ( ) ,   layout ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-03 14:51:06 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   checkPageDate ( t   * testing . T ,   page   * Page ,   time   time . Time )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   page . Date   !=   time   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Page date is: %s.  Expected: %s" ,   page . Date ,   time ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-09-03 14:51:06 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-11-10 12:04:51 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   checkTruncation ( t   * testing . T ,   page   * Page ,   shouldBe   bool ,   msg   string )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   page . Summary   ==   ""   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatal ( "page has no summary, can not check truncation" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   page . Truncated   !=   shouldBe   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   shouldBe   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Fatalf ( "page wasn't truncated: %s" ,   msg ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 }   else   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Fatalf ( "page was truncated: %s" ,   msg ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-11-10 12:04:51 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   normalizeExpected ( ext ,   str   string )   string   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 str   =   normalizeContent ( str ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 switch   ext   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 default : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 return   str 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 case   "html" : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 return   strings . Trim ( helpers . StripHTML ( str ) ,   " " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 case   "ad" : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 paragraphs   :=   strings . Split ( str ,   "</p>" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 expected   :=   "" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 for   _ ,   para   :=   range   paragraphs   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 if   para   ==   ""   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 continue 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 expected   +=   fmt . Sprintf ( "<div class=\"paragraph\">\n%s</p></div>\n" ,   para ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 return   expected 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 case   "rst" : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 return   fmt . Sprintf ( "<div class=\"document\">\n\n\n%s</div>" ,   str ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func   testAllMarkdownEnginesForPage ( t   * testing . T , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 assertFunc   func ( t   * testing . T ,   ext   string ,   p   * Page ) ,   baseFilename ,   pageContent   string )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 engines   :=   [ ] struct   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 ext             string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 shouldExecute   func ( )   bool 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { "ad" ,   func ( )   bool   {   return   helpers . HasAsciidoc ( )   } } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { "md" ,   func ( )   bool   {   return   true   } } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { "mmark" ,   func ( )   bool   {   return   true   } } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 // TODO(bep) figure a way to include this without too much work.{"html", func() bool { return true }}, 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { "rst" ,   func ( )   bool   {   return   helpers . HasRst ( )   } } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 for   _ ,   e   :=   range   engines   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   ! e . shouldExecute ( )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 continue 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 filename   :=   baseFilename   +   "."   +   e . ext 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 s   :=   newSiteFromSources ( filename ,   pageContent ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   err   :=   buildSiteSkipRender ( s ) ;   err   !=   nil   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Fatalf ( "Failed to build site: %s" ,   err ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 require . Len ( t ,   s . Pages ,   1 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 p   :=   s . Pages [ 0 ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 assertFunc ( t ,   e . ext ,   p ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func   TestCreateNewPage ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 assertFunc   :=   func ( t   * testing . T ,   ext   string ,   p   * Page )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 assert . False ( t ,   p . IsHome ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageTitle ( t ,   p ,   "Simple" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageContent ( t ,   p ,   normalizeExpected ( ext ,   "<p>Simple Page</p>\n" ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageSummary ( t ,   p ,   "Simple Page" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageType ( t ,   p ,   "page" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageLayout ( t ,   p ,   "page/single.html" ,   "_default/single.html" ,   "theme/page/single.html" ,   "theme/_default/single.html" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkTruncation ( t ,   p ,   false ,   "simple short page" ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2015-05-28 03:19:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 testAllMarkdownEnginesForPage ( t ,   assertFunc ,   "simple" ,   simplePage ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func   TestSplitSummaryAndContent ( t   * testing . T )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 for   i ,   this   :=   range   [ ] struct   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 markup                          string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 content                         string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 expectedSummary                 string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 expectedContent                 string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 expectedContentWithoutSummary   string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { "markdown" ,   ` < p > Summary   Same   LineHUGOMORE42 < / p > 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > Some   more   text < / p > ` ,   "<p>Summary Same Line</p>" ,   "<p>Summary Same Line</p>\n\n<p>Some more text</p>" ,   "<p>Some more text</p>" } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { "asciidoc" ,   ` <div class="paragraph"><p>sn</p></div><div class="paragraph"><p>HUGOMORE42Some more text</p></div> ` , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 "<div class=\"paragraph\"><p>sn</p></div>" , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 "<div class=\"paragraph\"><p>sn</p></div><div class=\"paragraph\"><p>Some more text</p></div>" , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 "<div class=\"paragraph\"><p>Some more text</p></div>" } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { "rst" , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 "<div class=\"document\"><p>Summary Next Line</p><p>HUGOMORE42Some more text</p></div>" , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 "<div class=\"document\"><p>Summary Next Line</p></div>" , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 "<div class=\"document\"><p>Summary Next Line</p><p>Some more text</p></div>" , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 "<div class=\"document\"><p>Some more text</p></div>" } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { "markdown" ,   "<p>a</p><p>b</p><p>HUGOMORE42c</p>" ,   "<p>a</p><p>b</p>" ,   "<p>a</p><p>b</p><p>c</p>" ,   "<p>c</p>" } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { "markdown" ,   "<p>a</p><p>b</p><p>cHUGOMORE42</p>" ,   "<p>a</p><p>b</p><p>c</p>" ,   "<p>a</p><p>b</p><p>c</p>" ,   "" } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { "markdown" ,   "<p>a</p><p>bHUGOMORE42</p><p>c</p>" ,   "<p>a</p><p>b</p>" ,   "<p>a</p><p>b</p><p>c</p>" ,   "<p>c</p>" } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { "markdown" ,   "<p>aHUGOMORE42</p><p>b</p><p>c</p>" ,   "<p>a</p>" ,   "<p>a</p><p>b</p><p>c</p>" ,   "<p>b</p><p>c</p>" } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 }   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 sc   :=   splitUserDefinedSummaryAndContent ( this . markup ,   [ ] byte ( this . content ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 require . NotNil ( t ,   sc ,   fmt . Sprintf ( "[%d] Nil %s" ,   i ,   this . markup ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 require . Equal ( t ,   this . expectedSummary ,   string ( sc . summary ) ,   fmt . Sprintf ( "[%d] Summary markup %s" ,   i ,   this . markup ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 require . Equal ( t ,   this . expectedContent ,   string ( sc . content ) ,   fmt . Sprintf ( "[%d] Content markup %s" ,   i ,   this . markup ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 require . Equal ( t ,   this . expectedContentWithoutSummary ,   string ( sc . contentWithoutSummary ) ,   fmt . Sprintf ( "[%d] Content without summary, markup %s" ,   i ,   this . markup ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   true   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 return 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 ad   :=   ` < div   class = "paragraph" > < p > sn < / p > < / div > 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< div   class = "paragraph" > 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > HUGOMORE42  
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Some   more   text < / p > 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / div > 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 md   :=   ` < p > Summary   Same   LineHUGOMORE42 < / p > 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< p > Some   more   text < / p > ` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 sc   :=   splitUserDefinedSummaryAndContent ( "markdown" ,   [ ] byte ( md ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 require . Equal ( t ,   "adf" ,   string ( sc . summary ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 require . Equal ( t ,   "asdf" ,   string ( sc . content ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   true   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 return 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 sc   =   splitUserDefinedSummaryAndContent ( "asciidoc" ,   [ ] byte ( ad ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 require . Equal ( t ,   "<div class=\"paragraph\"><p>sn</p></div>" ,   string ( sc . summary ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 require . Equal ( t ,   "\n<div class=\"paragraph\">\n<p> \nSome more text</p>\n</div>\n" ,   string ( sc . summary ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-08-21 10:37:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func   TestPageWithDelimiter ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 assertFunc   :=   func ( t   * testing . T ,   ext   string ,   p   * Page )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageTitle ( t ,   p ,   "Simple" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageContent ( t ,   p ,   normalizeExpected ( ext ,   "<p>Summary Next Line</p>\n\n<p>Some more text</p>\n" ) ,   ext ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageSummary ( t ,   p ,   normalizeExpected ( ext ,   "<p>Summary Next Line</p>" ) ,   ext ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageType ( t ,   p ,   "page" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageLayout ( t ,   p ,   "page/single.html" ,   "_default/single.html" ,   "theme/page/single.html" ,   "theme/_default/single.html" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkTruncation ( t ,   p ,   true ,   "page with summary delimiter" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 testAllMarkdownEnginesForPage ( t ,   assertFunc ,   "simple" ,   simplePageWithSummaryDelimiter ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Issue #1076 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func   TestPageWithDelimiterForMarkdownThatCrossesBorder ( t   * testing . T )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 s   :=   newSiteFromSources ( "simple.md" ,   simplePageWithSummaryDelimiterAndMarkdownThatCrossesBorder ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   err   :=   buildSiteSkipRender ( s ) ;   err   !=   nil   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Failed to build site: %s" ,   err ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 require . Len ( t ,   s . Pages ,   1 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 p   :=   s . Pages [ 0 ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   p . Summary   !=   template . HTML ( "<p>The <a href=\"http://gohugo.io/\">best static site generator</a>.<sup class=\"footnote-ref\" id=\"fnref:1\"><a rel=\"footnote\" href=\"#fn:1\">1</a></sup>\n</p>" )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Got summary:\n%q" ,   p . Summary ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   p . Content   !=   template . HTML ( "<p>The <a href=\"http://gohugo.io/\">best static site generator</a>.<sup class=\"footnote-ref\" id=\"fnref:1\"><a rel=\"footnote\" href=\"#fn:1\">1</a></sup>\n</p>\n<div class=\"footnotes\">\n\n<hr />\n\n<ol>\n<li id=\"fn:1\">Many people say so.\n <a class=\"footnote-return\" href=\"#fnref:1\"><sup>[return]</sup></a></li>\n</ol>\n</div>" )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Got content:\n%q" ,   p . Content ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-10-04 12:28:28 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
									
										
										
										
											2013-08-31 21:07:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 12:28:28 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestPageWithShortCodeInSummary ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 assertFunc   :=   func ( t   * testing . T ,   ext   string ,   p   * Page )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageTitle ( t ,   p ,   "Simple" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageContent ( t ,   p ,   normalizeExpected ( ext ,   "<p>Summary Next Line. <figure > <img src=\"/not/real\" /> </figure>.\nMore text here.</p><p>Some more text</p>" ) ,   ext ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageSummary ( t ,   p ,   "Summary Next Line. . More text here. Some more text" ,   ext ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageType ( t ,   p ,   "page" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageLayout ( t ,   p ,   "page/single.html" ,   "_default/single.html" ,   "theme/page/single.html" ,   "theme/_default/single.html" ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
											 
										
											
												Shortcode rewrite, take 2
This commit contains a restructuring and partial rewrite of the shortcode handling.
Prior to this commit rendering of the page content was mingled with handling of the shortcodes. This led to several oddities.
The new flow is:
1. Shortcodes are extracted from page and replaced with placeholders.
2. Shortcodes are processed and rendered
3. Page is processed
4. The placeholders are replaced with the rendered shortcodes
The handling of summaries is also made simpler by this.
This commit also introduces some other chenges:
1. distinction between shortcodes that need further processing and those who do not:
* `{{< >}}`: Typically raw HTML. Will not be processed.
* `{{% %}}`: Will be processed by the page's markup engine (Markdown or (infuture) Asciidoctor)
The above also involves a new shortcode-parser, with lexical scanning inspired by Rob Pike's talk called "Lexical Scanning in Go",
which should be easier to understand, give better error messages and perform better.
2. If you want to exclude a shortcode from being processed (for documentation etc.), the inner part of the shorcode must be commented out, i.e. `{{%/* movie 47238zzb */%}}`. See the updated shortcode section in the documentation for further examples.
The new parser supports nested shortcodes. This isn't new, but has two related design choices worth mentioning:
* The shortcodes will be rendered individually, so If both `{{< >}}` and `{{% %}}` are used in the nested hierarchy, one will be passed through the page's markdown processor, the other not.
* To avoid potential costly overhead of always looking far ahead for a possible closing tag, this implementation looks at the template itself, and is branded as a container with inner content if it contains a reference to `.Inner`
Fixes #565
Fixes #480
Fixes #461
And probably some others.
											 
										 
										
											2014-10-27 21:48:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 testAllMarkdownEnginesForPage ( t ,   assertFunc ,   "simple" ,   simplePageWithShortcodeInSummary ) 
  
						 
					
						
							
								
									
										
										
										
											2013-08-31 21:07:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 20:42:12 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestPageWithEmbeddedScriptTag ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 assertFunc   :=   func ( t   * testing . T ,   ext   string ,   p   * Page )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   ext   ==   "ad"   ||   ext   ==   "rst"   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 // TOD(bep) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 return 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageContent ( t ,   p ,   "<script type='text/javascript'>alert('the script tags are still there, right?');</script>\n" ,   ext ) 
  
						 
					
						
							
								
									
										
										
										
											2014-05-29 20:42:12 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 testAllMarkdownEnginesForPage ( t ,   assertFunc ,   "simple" ,   simplePageWithEmbeddedScript ) 
  
						 
					
						
							
								
									
										
										
										
											2014-05-29 20:42:12 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-01-25 20:08:02 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestPageWithAdditionalExtension ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 s   :=   newSiteFromSources ( "simple.md" ,   simplePageWithAdditionalExtension ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   err   :=   buildSiteSkipRender ( s ) ;   err   !=   nil   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Failed to build site: %s" ,   err ) 
  
						 
					
						
							
								
									
										
										
										
											2015-01-25 20:08:02 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 require . Len ( t ,   s . Pages ,   1 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 p   :=   s . Pages [ 0 ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-01-25 20:08:02 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 checkPageContent ( t ,   p ,   "<p>first line.<br />\nsecond line.</p>\n\n<p>fourth line.</p>\n" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-28 23:09:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestTableOfContents ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 s   :=   newSiteFromSources ( "tocpage.md" ,   pageWithToC ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   err   :=   buildSiteSkipRender ( s ) ;   err   !=   nil   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Failed to build site: %s" ,   err ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 require . Len ( t ,   s . Pages ,   1 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 p   :=   s . Pages [ 0 ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-12 19:18:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 checkPageContent ( t ,   p ,   "\n\n<p>For some moments the old man did not reply. He stood with bowed head, buried in deep thought. But at last he spoke.</p>\n\n<h2 id=\"aa\">AA</h2>\n\n<p>I have no idea, of course, how long it took me to reach the limit of the plain,\nbut at last I entered the foothills, following a pretty little canyon upward\ntoward the mountains. Beside me frolicked a laughing brooklet, hurrying upon\nits noisy way down to the silent sea. In its quieter pools I discovered many\nsmall fish, of four-or five-pound weight I should imagine. In appearance,\nexcept as to size and color, they were not unlike the whale of our own seas. As\nI watched them playing about I discovered, not only that they suckled their\nyoung, but that at intervals they rose to the surface to breathe as well as to\nfeed upon certain grasses and a strange, scarlet lichen which grew upon the\nrocks just above the water line.</p>\n\n<h3 id=\"aaa\">AAA</h3>\n\n<p>I remember I felt an extraordinary persuasion that I was being played with,\nthat presently, when I was upon the very verge of safety, this mysterious\ndeath–as swift as the passage of light–would leap after me from the pit about\nthe cylinder and strike me down. ## BB</p>\n\n<h3 id=\"bbb\">BBB</h3>\n\n<p>“You’re a great Granser,” he cried delightedly, “always making believe them little marks mean something.”</p>\n" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 checkPageTOC ( t ,   p ,   "<nav id=\"TableOfContents\">\n<ul>\n<li>\n<ul>\n<li><a href=\"#aa\">AA</a>\n<ul>\n<li><a href=\"#aaa\">AAA</a></li>\n<li><a href=\"#bbb\">BBB</a></li>\n</ul></li>\n</ul></li>\n</ul>\n</nav>" ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-28 23:09:24 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-08-31 21:07:22 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestPageWithMoreTag ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 assertFunc   :=   func ( t   * testing . T ,   ext   string ,   p   * Page )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageTitle ( t ,   p ,   "Simple" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageContent ( t ,   p ,   normalizeExpected ( ext ,   "<p>Summary Same Line</p>\n\n<p>Some more text</p>\n" ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageSummary ( t ,   p ,   normalizeExpected ( ext ,   "<p>Summary Same Line</p>" ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageType ( t ,   p ,   "page" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 checkPageLayout ( t ,   p ,   "page/single.html" ,   "_default/single.html" ,   "theme/page/single.html" ,   "theme/_default/single.html" ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 testAllMarkdownEnginesForPage ( t ,   assertFunc ,   "simple" ,   simplePageWithSummaryDelimiterSameLine ) 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-03 14:51:06 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestPageWithDate ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 s   :=   newSiteFromSources ( "simple.md" ,   simplePageRFC3339Date ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   err   :=   buildSiteSkipRender ( s ) ;   err   !=   nil   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Failed to build site: %s" ,   err ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 require . Len ( t ,   s . Pages ,   1 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 p   :=   s . Pages [ 0 ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 d ,   _   :=   time . Parse ( time . RFC3339 ,   "2013-05-17T16:59:30Z" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 checkPageDate ( t ,   p ,   d ) 
  
						 
					
						
							
								
									
										
										
										
											2013-09-03 14:51:06 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestWordCountWithAllCJKRunesWithoutHasCJKLanguage ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-07-28 09:30:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 testCommonResetState ( ) 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 assertFunc   :=   func ( t   * testing . T ,   ext   string ,   p   * Page )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   p . WordCount   !=   8   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Fatalf ( "[%s] incorrect word count for content '%s'. expected %v, got %v" ,   ext ,   p . plain ,   8 ,   p . WordCount ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 testAllMarkdownEnginesForPage ( t ,   assertFunc ,   "simple" ,   simplePageWithAllCJKRunes ) 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func   TestWordCountWithAllCJKRunesHasCJKLanguage ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-07-28 09:30:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 testCommonResetState ( ) 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 viper . Set ( "HasCJKLanguage" ,   true ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 assertFunc   :=   func ( t   * testing . T ,   ext   string ,   p   * Page )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   p . WordCount   !=   15   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Fatalf ( "[%s] incorrect word count for content '%s'. expected %v, got %v" ,   ext ,   p . plain ,   15 ,   p . WordCount ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 testAllMarkdownEnginesForPage ( t ,   assertFunc ,   "simple" ,   simplePageWithAllCJKRunes ) 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func   TestWordCountWithMainEnglishWithCJKRunes ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-07-28 09:30:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 testCommonResetState ( ) 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 viper . Set ( "HasCJKLanguage" ,   true ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 assertFunc   :=   func ( t   * testing . T ,   ext   string ,   p   * Page )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   p . WordCount   !=   74   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Fatalf ( "[%s] incorrect word count for content '%s'. expected %v, got %v" ,   ext ,   p . plain ,   74 ,   p . WordCount ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
									
										
										
										
											2015-07-12 11:05:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 if   p . Summary   !=   simplePageWithMainEnglishWithCJKRunesSummary   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Fatalf ( "[%s] incorrect Summary for content '%s'. expected %v, got %v" ,   ext ,   p . plain , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 simplePageWithMainEnglishWithCJKRunesSummary ,   p . Summary ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 testAllMarkdownEnginesForPage ( t ,   assertFunc ,   "simple" ,   simplePageWithMainEnglishWithCJKRunes ) 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func   TestWordCountWithIsCJKLanguageFalse ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-07-28 09:30:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 testCommonResetState ( ) 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 viper . Set ( "HasCJKLanguage" ,   true ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 assertFunc   :=   func ( t   * testing . T ,   ext   string ,   p   * Page )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   p . WordCount   !=   75   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Fatalf ( "[%s] incorrect word count for content '%s'. expected %v, got %v" ,   ext ,   p . plain ,   74 ,   p . WordCount ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
									
										
										
										
											2015-09-03 18:22:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 if   p . Summary   !=   simplePageWithIsCJKLanguageFalseSummary   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Fatalf ( "[%s] incorrect Summary for content '%s'. expected %v, got %v" ,   ext ,   p . plain , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 simplePageWithIsCJKLanguageFalseSummary ,   p . Summary ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
									
										
										
										
											2015-07-12 11:05:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 testAllMarkdownEnginesForPage ( t ,   assertFunc ,   "simple" ,   simplePageWithIsCJKLanguageFalse ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-12 11:05:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-15 09:15:52 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestWordCount ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 assertFunc   :=   func ( t   * testing . T ,   ext   string ,   p   * Page )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   p . WordCount   !=   483   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Fatalf ( "[%s] incorrect word count. expected %v, got %v" ,   ext ,   483 ,   p . WordCount ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 if   p . FuzzyWordCount   !=   500   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Fatalf ( "[%s] incorrect word count. expected %v, got %v" ,   ext ,   500 ,   p . WordCount ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   p . ReadingTime   !=   3   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Fatalf ( "[%s] incorrect min read. expected %v, got %v" ,   ext ,   3 ,   p . ReadingTime ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 checkTruncation ( t ,   p ,   true ,   "long page" ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 testAllMarkdownEnginesForPage ( t ,   assertFunc ,   "simple" ,   simplePageWithLongContent ) 
  
						 
					
						
							
								
									
										
										
										
											2013-10-15 09:15:52 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-08-06 23:04:49 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestCreatePage ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 var   tests   =   [ ] struct   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 r   string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } { 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 { simplePageJSON } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageJSONLoose } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageJSONMultiple } , 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 //{strings.NewReader(SIMPLE_PAGE_JSON_COMPACT)}, 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 for   _ ,   test   :=   range   tests   { 
  
						 
					
						
							
								
									
										
										
										
											2014-05-01 14:11:56 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 p ,   _   :=   NewPage ( "page" ) 
  
						 
					
						
							
								
									
										
										
										
											2015-04-03 21:41:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 if   _ ,   err   :=   p . ReadFrom ( strings . NewReader ( test . r ) ) ;   err   !=   nil   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											 t . Errorf ( "Unable to parse page: %s" ,   err ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-08-06 23:04:49 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func   TestDegenerateInvalidFrontMatterShortDelim ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 var   tests   =   [ ] struct   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 r     string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 err   string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } { 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 { invalidFrontmatterShortDelimEnding ,   "unable to read frontmatter at filepos 45: EOF" } , 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 for   _ ,   test   :=   range   tests   { 
  
						 
					
						
							
								
									
										
										
										
											2014-05-01 14:11:56 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 p ,   _   :=   NewPage ( "invalid/front/matter/short/delim" ) 
  
						 
					
						
							
								
									
										
										
										
											2015-04-03 21:41:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 _ ,   err   :=   p . ReadFrom ( strings . NewReader ( test . r ) ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 checkError ( t ,   err ,   test . err ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-09-18 10:17:43 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestShouldRenderContent ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 var   tests   =   [ ] struct   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 text     string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 render   bool 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } { 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 { invalidFrontMatterMissing ,   true } , 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 // TODO how to deal with malformed frontmatter.  In this case it'll be rendered as markdown. 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 { invalidFrontmatterShortDelim ,   true } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { renderNoFrontmatter ,   false } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { contentWithCommentedFrontmatter ,   true } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { contentWithCommentedTextFrontmatter ,   true } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { contentWithCommentedLongFrontmatter ,   false } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { contentWithCommentedLong2Frontmatter ,   true } , 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 for   _ ,   test   :=   range   tests   { 
  
						 
					
						
							
								
									
										
										
										
											2014-05-01 14:11:56 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 p ,   _   :=   NewPage ( "render/front/matter" ) 
  
						 
					
						
							
								
									
										
										
										
											2015-04-03 21:41:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 _ ,   err   :=   p . ReadFrom ( strings . NewReader ( test . text ) ) 
  
						 
					
						
							
								
									
										
										
										
											2014-05-01 14:11:56 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 p   =   pageMust ( p ,   err ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 if   p . IsRenderable ( )   !=   test . render   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Errorf ( "expected p.IsRenderable() == %t, got %t" ,   test . render ,   p . IsRenderable ( ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-09-18 10:17:43 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-07-26 15:28:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Issue #768 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func   TestCalendarParamsVariants ( t   * testing . T )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 pageJSON ,   _   :=   NewPage ( "test/fileJSON.md" ) 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 _ ,   _   =   pageJSON . ReadFrom ( strings . NewReader ( pageWithCalendarJSONFrontmatter ) ) 
  
						 
					
						
							
								
									
										
										
										
											2015-07-26 15:28:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 pageYAML ,   _   :=   NewPage ( "test/fileYAML.md" ) 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 _ ,   _   =   pageYAML . ReadFrom ( strings . NewReader ( pageWithCalendarYAMLFrontmatter ) ) 
  
						 
					
						
							
								
									
										
										
										
											2015-07-26 15:28:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 pageTOML ,   _   :=   NewPage ( "test/fileTOML.md" ) 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 _ ,   _   =   pageTOML . ReadFrom ( strings . NewReader ( pageWithCalendarTOMLFrontmatter ) ) 
  
						 
					
						
							
								
									
										
										
										
											2015-07-26 15:28:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 assert . True ( t ,   compareObjects ( pageJSON . Params ,   pageYAML . Params ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 assert . True ( t ,   compareObjects ( pageJSON . Params ,   pageTOML . Params ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-24 14:31:04 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestDifferentFrontMatterVarTypes ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-05-01 14:11:56 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 page ,   _   :=   NewPage ( "test/file1.md" ) 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 _ ,   _   =   page . ReadFrom ( strings . NewReader ( pageWithVariousFrontmatterTypes ) ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 dateval ,   _   :=   time . Parse ( time . RFC3339 ,   "1979-05-27T07:32:00Z" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   page . GetParam ( "a_string" )   !=   "bar"   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Errorf ( "frontmatter not handling strings correctly should be %s, got: %s" ,   "bar" ,   page . GetParam ( "a_string" ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   page . GetParam ( "an_integer" )   !=   1   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Errorf ( "frontmatter not handling ints correctly should be %s, got: %s" ,   "1" ,   page . GetParam ( "an_integer" ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   page . GetParam ( "a_float" )   !=   1.3   { 
  
						 
					
						
							
								
									
										
										
										
											2014-02-28 22:31:21 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 t . Errorf ( "frontmatter not handling floats correctly should be %f, got: %s" ,   1.3 ,   page . GetParam ( "a_float" ) ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   page . GetParam ( "a_bool" )   !=   false   { 
  
						 
					
						
							
								
									
										
										
										
											2014-02-28 22:31:21 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 t . Errorf ( "frontmatter not handling bools correctly should be %t, got: %s" ,   false ,   page . GetParam ( "a_bool" ) ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   page . GetParam ( "a_date" )   !=   dateval   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Errorf ( "frontmatter not handling dates correctly should be %s, got: %s" ,   dateval ,   page . GetParam ( "a_date" ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2015-01-24 04:44:35 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 param   :=   page . GetParam ( "a_table" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   param   ==   nil   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Errorf ( "frontmatter not handling tables correctly should be type of %v, got: type of %v" ,   reflect . TypeOf ( page . Params [ "a_table" ] ) ,   reflect . TypeOf ( param ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   cast . ToStringMap ( param ) [ "a_key" ]   !=   "a_value"   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Errorf ( "frontmatter not handling values inside a table correctly should be %s, got: %s" ,   "a_value" ,   cast . ToStringMap ( page . Params [ "a_table" ] ) [ "a_key" ] ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-10-24 14:31:04 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								func   TestDegenerateInvalidFrontMatterLeadingWhitespace ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-05-01 14:11:56 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 p ,   _   :=   NewPage ( "invalid/front/matter/leading/ws" ) 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 _ ,   err   :=   p . ReadFrom ( strings . NewReader ( invalidFrontmatterLadingWs ) ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   err   !=   nil   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Unable to parse front matter given leading whitespace: %s" ,   err ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-08-05 07:53:58 -07:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
									
										
										
										
											2013-08-14 15:22:57 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-08-30 17:14:36 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestSectionEvaluation ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-12-07 19:48:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 page ,   _   :=   NewPage ( filepath . FromSlash ( "blue/file1.md" ) ) 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 page . ReadFrom ( strings . NewReader ( simplePage ) ) 
  
						 
					
						
							
								
									
										
										
										
											2014-10-16 20:20:09 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   page . Section ( )   !=   "blue"   { 
  
						 
					
						
							
								
									
										
										
										
											2014-12-07 19:48:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 t . Errorf ( "Section should be %s, got: %s" ,   "blue" ,   page . Section ( ) ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-08-30 17:14:36 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-07 07:57:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   L ( s   ... string )   [ ] string   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 return   s 
  
						 
					
						
							
								
									
										
										
										
											2013-10-07 07:57:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-08-14 15:22:57 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestLayoutOverride ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 var   ( 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 pathContentTwoDir   =   filepath . Join ( "content" ,   "dub" ,   "sub" ,   "file1.md" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 pathContentOneDir   =   filepath . Join ( "content" ,   "gub" ,   "file1.md" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 pathContentNoDir    =   filepath . Join ( "content" ,   "file1" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 pathOneDirectory    =   filepath . Join ( "fub" ,   "file1.md" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 pathNoDirectory     =   filepath . Join ( "file1.md" ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 tests   :=   [ ] struct   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 content          string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 path             string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 expectedLayout   [ ] string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } { 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 { simplePageNoLayout ,   pathContentTwoDir ,   L ( "dub/single.html" ,   "_default/single.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageNoLayout ,   pathContentOneDir ,   L ( "gub/single.html" ,   "_default/single.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageNoLayout ,   pathContentNoDir ,   L ( "page/single.html" ,   "_default/single.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageNoLayout ,   pathOneDirectory ,   L ( "fub/single.html" ,   "_default/single.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageNoLayout ,   pathNoDirectory ,   L ( "page/single.html" ,   "_default/single.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageLayoutFoobar ,   pathContentTwoDir ,   L ( "dub/foobar.html" ,   "_default/foobar.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageLayoutFoobar ,   pathContentOneDir ,   L ( "gub/foobar.html" ,   "_default/foobar.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageLayoutFoobar ,   pathOneDirectory ,   L ( "fub/foobar.html" ,   "_default/foobar.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageLayoutFoobar ,   pathNoDirectory ,   L ( "page/foobar.html" ,   "_default/foobar.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageTypeFoobar ,   pathContentTwoDir ,   L ( "foobar/single.html" ,   "_default/single.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageTypeFoobar ,   pathContentOneDir ,   L ( "foobar/single.html" ,   "_default/single.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageTypeFoobar ,   pathContentNoDir ,   L ( "foobar/single.html" ,   "_default/single.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageTypeFoobar ,   pathOneDirectory ,   L ( "foobar/single.html" ,   "_default/single.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageTypeFoobar ,   pathNoDirectory ,   L ( "foobar/single.html" ,   "_default/single.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageTypeLayout ,   pathContentTwoDir ,   L ( "barfoo/buzfoo.html" ,   "_default/buzfoo.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageTypeLayout ,   pathContentOneDir ,   L ( "barfoo/buzfoo.html" ,   "_default/buzfoo.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageTypeLayout ,   pathContentNoDir ,   L ( "barfoo/buzfoo.html" ,   "_default/buzfoo.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageTypeLayout ,   pathOneDirectory ,   L ( "barfoo/buzfoo.html" ,   "_default/buzfoo.html" ) } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageTypeLayout ,   pathNoDirectory ,   L ( "barfoo/buzfoo.html" ,   "_default/buzfoo.html" ) } , 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 for   _ ,   test   :=   range   tests   { 
  
						 
					
						
							
								
									
										
										
										
											2014-05-01 14:11:56 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 p ,   _   :=   NewPage ( test . path ) 
  
						 
					
						
							
								
									
										
										
										
											2015-04-03 21:41:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 _ ,   err   :=   p . ReadFrom ( strings . NewReader ( test . content ) ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 if   err   !=   nil   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Fatalf ( "Unable to parse content:\n%s\n" ,   test . content ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
									
										
										
										
											2014-06-03 17:06:32 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 for   _ ,   y   :=   range   test . expectedLayout   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 test . expectedLayout   =   append ( test . expectedLayout ,   "theme/" + y ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
									
										
										
										
											2015-11-02 17:24:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 if   ! listEqual ( p . layouts ( ) ,   test . expectedLayout )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Errorf ( "Layout mismatch. Expected: %s, got: %s" ,   test . expectedLayout ,   p . layouts ( ) ) 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-08-14 15:22:57 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
									
										
										
										
											2013-10-07 07:57:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-09-09 15:58:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestSliceToLower ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2014-10-02 17:25:52 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 tests   :=   [ ] struct   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 value      [ ] string 
  
						 
					
						
							
								
									
										
										
										
											2014-09-09 15:58:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 expected   [ ] string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } { 
  
						 
					
						
							
								
									
										
										
										
											2014-10-02 17:25:52 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 { [ ] string { "a" ,   "b" ,   "c" } ,   [ ] string { "a" ,   "b" ,   "c" } } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { [ ] string { "a" ,   "B" ,   "c" } ,   [ ] string { "a" ,   "b" ,   "c" } } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { [ ] string { "A" ,   "B" ,   "C" } ,   [ ] string { "a" ,   "b" ,   "c" } } , 
  
						 
					
						
							
								
									
										
										
										
											2014-09-09 15:58:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 for   _ ,   test   :=   range   tests   { 
  
						 
					
						
							
								
									
										
										
										
											2014-10-16 20:20:09 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 res   :=   helpers . SliceToLower ( test . value ) 
  
						 
					
						
							
								
									
										
										
										
											2014-09-09 15:58:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 for   i ,   val   :=   range   res   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 if   val   !=   test . expected [ i ]   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 t . Errorf ( "Case mismatch. Expected %s, got %s" ,   test . expected [ i ] ,   res [ i ] ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-31 18:54:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestPagePaths ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-07-28 09:30:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 testCommonResetState ( ) 
  
						 
					
						
							
								
									
										
										
										
											2015-05-20 02:21:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 viper . Set ( "DefaultExtension" ,   "html" ) 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 siteParmalinksSetting   :=   PermalinkOverrides { 
  
						 
					
						
							
								
									
										
										
										
											2015-05-09 19:12:30 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 "post" :   ":year/:month/:day/:title/" , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 tests   :=   [ ] struct   { 
  
						 
					
						
							
								
									
										
										
										
											2015-05-20 02:21:21 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 content        string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 path           string 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 hasPermalink   bool 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 expected       string 
  
						 
					
						
							
								
									
										
										
										
											2015-05-09 19:12:30 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } { 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 { simplePage ,   "content/post/x.md" ,   false ,   "content/post/x.html" } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageWithURL ,   "content/post/x.md" ,   false ,   "simple/url/index.html" } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageWithSlug ,   "content/post/x.md" ,   false ,   "content/post/simple-slug.html" } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { simplePageWithDate ,   "content/post/x.md" ,   true ,   "2013/10/15/simple/index.html" } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { UTF8Page ,   "content/post/x.md" ,   false ,   "content/post/x.html" } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { UTF8PageWithURL ,   "content/post/x.md" ,   false ,   "ラーメン/url/index.html" } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { UTF8PageWithSlug ,   "content/post/x.md" ,   false ,   "content/post/ラーメン-slug.html" } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { UTF8PageWithDate ,   "content/post/x.md" ,   true ,   "2013/10/15/ラーメン/index.html" } , 
  
						 
					
						
							
								
									
										
										
										
											2015-05-09 19:12:30 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 for   _ ,   test   :=   range   tests   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 p ,   _   :=   NewPageFrom ( strings . NewReader ( test . content ) ,   filepath . FromSlash ( test . path ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 p . Node . Site   =   & SiteInfo { } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   test . hasPermalink   { 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											 p . Node . Site . Permalinks   =   siteParmalinksSetting 
  
						 
					
						
							
								
									
										
										
										
											2015-05-09 19:12:30 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-31 18:54:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 expectedTargetPath   :=   filepath . FromSlash ( test . expected ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 expectedFullFilePath   :=   filepath . FromSlash ( test . path ) 
  
						 
					
						
							
								
									
										
										
										
											2015-05-09 19:12:30 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-31 18:54:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 if   p . TargetPath ( )   !=   expectedTargetPath   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Errorf ( "%s => TargetPath  expected: '%s', got: '%s'" ,   test . content ,   expectedTargetPath ,   p . TargetPath ( ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   p . FullFilePath ( )   !=   expectedFullFilePath   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Errorf ( "%s => FullFilePath  expected: '%s', got: '%s'" ,   test . content ,   expectedFullFilePath ,   p . FullFilePath ( ) ) 
  
						 
					
						
							
								
									
										
										
										
											2015-05-09 19:12:30 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var   pageWithDraftAndPublished   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2015-08-01 23:02:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   broken 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								published :   false 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								draft :   true 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								some   content 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func   TestDraftAndPublishedFrontMatterError ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 _ ,   err   :=   NewPageFrom ( strings . NewReader ( pageWithDraftAndPublished ) ,   "content/post/broken.md" ) 
  
						 
					
						
							
								
									
										
										
										
											2015-08-01 23:02:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   err   !=   ErrHasDraftAndPublished   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Errorf ( "expected ErrHasDraftAndPublished, was %#v" ,   err ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var   pageWithPublishedFalse   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2015-08-30 15:51:25 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   okay 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								published :   false 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								some   content 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var   pageWithPublishedTrue   =   ` -- - 
  
						 
					
						
							
								
									
										
										
										
											2015-08-30 15:51:25 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								title :   okay 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								published :   true 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-- - 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								some   content 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								` 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func   TestPublishedFrontMatter ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 p ,   err   :=   NewPageFrom ( strings . NewReader ( pageWithPublishedFalse ) ,   "content/post/broken.md" ) 
  
						 
					
						
							
								
									
										
										
										
											2015-08-30 15:51:25 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   err   !=   nil   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "err during parse: %s" ,   err ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   ! p . Draft   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Errorf ( "expected true, got %t" ,   p . Draft ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2016-03-24 14:42:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 p ,   err   =   NewPageFrom ( strings . NewReader ( pageWithPublishedTrue ) ,   "content/post/broken.md" ) 
  
						 
					
						
							
								
									
										
										
										
											2015-08-30 15:51:25 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   err   !=   nil   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "err during parse: %s" ,   err ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   p . Draft   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Errorf ( "expected false, got %t" ,   p . Draft ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-07 13:32:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestPageSimpleMethods ( t   * testing . T )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 for   i ,   this   :=   range   [ ] struct   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 assertFunc   func ( p   * Page )   bool 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { func ( p   * Page )   bool   {   return   ! p . IsNode ( )   } } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { func ( p   * Page )   bool   {   return   p . IsPage ( )   } } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { func ( p   * Page )   bool   {   return   p . Plain ( )   ==   "Do Be Do Be Do"   } } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { func ( p   * Page )   bool   {   return   strings . Join ( p . PlainWords ( ) ,   " " )   ==   "Do Be Do Be Do"   } } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 }   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 p ,   _   :=   NewPage ( "Test" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 p . Content   =   "<h1>Do Be Do Be Do</h1>" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   ! this . assertFunc ( p )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Errorf ( "[%d] Page method error" ,   i ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-13 00:14:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestChompBOM ( t   * testing . T )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 const   utf8BOM   =   "\xef\xbb\xbf" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 s   :=   newSiteFromSources ( "simple.md" ,   utf8BOM + simplePage ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 if   err   :=   buildSiteSkipRender ( s ) ;   err   !=   nil   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 t . Fatalf ( "Failed to build site: %s" ,   err ) 
  
						 
					
						
							
								
									
										
										
										
											2016-04-13 00:14:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 23:04:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 require . Len ( t ,   s . Pages ,   1 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 p   :=   s . Pages [ 0 ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-13 00:14:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 checkPageTitle ( t ,   p ,   "Simple" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-07 07:57:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   listEqual ( left ,   right   [ ] string )   bool   { 
  
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 if   len ( left )   !=   len ( right )   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 return   false 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-10-07 07:57:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 for   i   :=   range   left   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   left [ i ]   !=   right [ i ]   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 return   false 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
									
										
										
										
											2013-10-07 07:57:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-29 14:50:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 return   true 
  
						 
					
						
							
								
									
										
										
										
											2013-10-07 07:57:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
									
										
										
										
											2015-07-26 15:28:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// TODO(bep) this may be useful for other tests. 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func   compareObjects ( a   interface { } ,   b   interface { } )   bool   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 aStr   :=   strings . Split ( fmt . Sprintf ( "%v" ,   a ) ,   "" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 sort . Strings ( aStr ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 bStr   :=   strings . Split ( fmt . Sprintf ( "%v" ,   b ) ,   "" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 sort . Strings ( bStr ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 return   strings . Join ( aStr ,   "" )   ==   strings . Join ( bStr ,   "" ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
  
						 
					
						
							
								
									
										
										
										
											2016-05-11 11:45:09 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-06-14 15:53:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func   TestShouldBuild ( t   * testing . T )   { 
  
						 
					
						
							
								
									
										
										
										
											2016-05-11 11:45:09 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 var   past   =   time . Date ( 2009 ,   11 ,   17 ,   20 ,   34 ,   58 ,   651387237 ,   time . UTC ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 var   future   =   time . Date ( 2037 ,   11 ,   17 ,   20 ,   34 ,   58 ,   651387237 ,   time . UTC ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 var   zero   =   time . Time { } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 var   publishSettings   =   [ ] struct   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 buildFuture    bool 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 buildExpired   bool 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 buildDrafts    bool 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 draft          bool 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 publishDate    time . Time 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 expiryDate     time . Time 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 out            bool 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 // publishDate and expiryDate 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { false ,   false ,   false ,   false ,   zero ,   zero ,   true } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { false ,   false ,   false ,   false ,   zero ,   future ,   true } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { false ,   false ,   false ,   false ,   past ,   zero ,   true } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { false ,   false ,   false ,   false ,   past ,   future ,   true } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { false ,   false ,   false ,   false ,   past ,   past ,   false } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { false ,   false ,   false ,   false ,   future ,   future ,   false } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { false ,   false ,   false ,   false ,   future ,   past ,   false } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 // buildFuture and buildExpired 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { false ,   true ,   false ,   false ,   past ,   past ,   true } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { true ,   true ,   false ,   false ,   past ,   past ,   true } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { true ,   false ,   false ,   false ,   past ,   past ,   false } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { true ,   false ,   false ,   false ,   future ,   future ,   true } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { true ,   true ,   false ,   false ,   future ,   future ,   true } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { false ,   true ,   false ,   false ,   future ,   past ,   false } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 // buildDrafts and draft 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { true ,   true ,   false ,   true ,   past ,   future ,   false } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { true ,   true ,   true ,   true ,   past ,   future ,   true } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 { true ,   true ,   true ,   true ,   past ,   future ,   true } , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 for   _ ,   ps   :=   range   publishSettings   { 
  
						 
					
						
							
								
									
										
										
										
											2016-06-14 15:53:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										 s   :=   shouldBuild ( ps . buildFuture ,   ps . buildExpired ,   ps . buildDrafts ,   ps . draft , 
  
						 
					
						
							
								
									
										
										
										
											2016-05-11 11:45:09 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											 ps . publishDate ,   ps . expiryDate ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 if   s   !=   ps . out   { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 t . Errorf ( "AssertShouldBuild unexpected output with params: %+v" ,   ps ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}