/* Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 6 Ġ< code @ io 7 m . com > Ġhttp :// io 7 m . com Ċ Ġ* Ċ Ġ* ĠPermission Ġto Ġuse , Ġcopy , Ġmodify , Ġand / or Ġdistribute Ġthis Ġsoftware Ġfor Ġany Ċ Ġ* Ġpurpose Ġwith Ġor Ġwithout Ġfee Ġis Ġhereby Ġgranted , Ġprovided Ġthat Ġthe Ġabove Ċ Ġ* Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġappear Ġin Ġall Ġcopies . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS " ĠAND ĠTHE ĠAUTHOR ĠDISCLAIM S ĠALL ĠWARRANTIES Ċ Ġ* ĠWITH ĠREG ARD ĠTO ĠTHIS ĠSOFTWARE ĠINCLUDING ĠALL ĠIMPLIED ĠWARRANTIES ĠOF Ċ Ġ* ĠMERCHANTABILITY ĠAND ĠFITNESS . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHOR ĠBE ĠLIABLE ĠFOR ĠANY Ċ Ġ* ĠSPECIAL , ĠDIRECT , ĠINDIRECT , ĠOR ĠCONSEQUENTIAL ĠDAMAGES ĠOR ĠANY ĠDAMAGES Ċ Ġ* ĠWHAT SO E VER ĠRESULT ING ĠFROM ĠLOSS ĠOF ĠUSE , ĠDATA ĠOR ĠPROFITS , ĠWHETHER ĠIN ĠAN Ċ Ġ* ĠACTION ĠOF ĠCONTRACT , ĠNEGLIGENCE ĠOR ĠOTHER ĠTOR TI O US ĠACTION , ĠARISING ĠOUT ĠOF ĠOR Ċ Ġ* ĠIN ĠCONNECTION ĠWITH ĠTHE ĠUSE ĠOR ĠPER FORMANCE ĠOF ĠTHIS ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . io 7 m . k struct ural . tests . pretty . imp er ative Ċ Ċ import Ġcom . io 7 m . k struct ural . core . K SE lement Ċ import Ġcom . io 7 m . k struct ural . core . K SE lement . KS Block . KS Block Document Ċ import Ġcom . io 7 m . k struct ural . core . evaluator . K SE valu ation Ċ import Ġorg . apache . commons . io . IO Utils Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġjava . nio . file . FileSystem Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ Ċ abstract Ġclass ĠK S Imp er ative PrettyPrinter Contract Ġ{ ĊĊĠ Ġprivate Ġval ĠLOG Ġ= ĠLoggerFactory . getLogger ( KS Imp er ative PrettyPrinter Contract :: class . java ) ĊĊĠ Ġprotected Ġabstract Ġfun Ġnew Filesystem () Ġ: ĠFileSystem ĊĊĠ Ġprotected Ġvar Ġfilesystem Ġ: ĠFileSystem ? Ġ= Ġnull ĊĊĠ Ġ@ Before Ġfun Ġsetup Filesystem () Ġ: ĠUnit Ġ{ ĊĠĠĠ Ġthis . filesystem Ġ= Ġnew Filesystem () ĊĠ Ġ} ĊĊĠ Ġ@ After Ġfun ĠtearDown Filesystem () Ġ: ĠUnit Ġ{ ĊĠĠĠ Ġthis . filesystem !!. close () ĊĠ Ġ} ĊĊĠ Ġprotected Ġfun Ġdefault File () Ġ= Ġfilesystem !!. getPath ("/ file . txt ") ĊĊĠ Ġfun Ġround Trip ( ĊĠĠĠ Ġtext Ġ: ĠString , ĊĠĠĠ Ġimports Ġ: ĠBoolean ) Ġ: ĠUnit Ġ= ĊĠĠĠ Ġround Trip Expanded ( text , Ġtext , Ġimports ) ĊĊĠ Ġfun Ġround Trip Expanded ( ĊĠĠĠ Ġtext _ start Ġ: ĠString , ĊĠĠĠ Ġtext _ expect Ġ: ĠString , ĊĠĠĠ Ġimports Ġ: ĠBoolean ) Ġ: ĠUnit Ġ{ ĊĊĠĠĠ Ġval Ġpath Ġ= Ġdefault File () ĊĠĠĠ ĠFiles . new OutputStream ( path ). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ ĠIO Utils . write ( text _ start , Ġos , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġbefore Ġ= Ġparse ( path ) ĊĠĠĠ Ġval Ġserial 0 Ġ= Ġserialize ( before , Ġimports ). trim () ĊĠĠĠ Ġval Ġafter Ġ= Ġparse ( path ) ĊĠĠĠ Ġval Ġserial 1 Ġ= Ġserialize ( after , Ġimports ). trim () ĊĊĠĠĠ ĠLOG . trace (" text ĠĠĠĠĠĠĠ Ġ: Ġ{}", Ġtext _ start ) ĊĠĠĠ ĠLOG . trace (" text _ expect Ġ: Ġ{}", Ġtext _ expect ) ĊĠĠĠ ĠLOG . trace (" before ĠĠĠĠĠ Ġ: Ġ{}", Ġbefore ) ĊĠĠĠ ĠLOG . trace (" serial 0 ĠĠĠĠ Ġ: Ġ{}", Ġserial 0 ) ĊĠĠĠ ĠLOG . trace (" after ĠĠĠĠĠĠ Ġ: Ġ{}", Ġafter ) ĊĠĠĠ ĠLOG . trace (" serial 1 ĠĠĠĠ Ġ: Ġ{}", Ġserial 1 ) ĊĊĠĠĠ ĠAssert . assertEquals ( text _ expect , Ġserial 0 ) ĊĠĠĠ ĠAssert . assertEquals ( serial 0 , Ġserial 1 ) ĊĠ Ġ} ĊĊĠ Ġabstract Ġfun Ġserialize ( ĊĠĠĠ Ġtext Ġ: ĠK S Block Document < K SE valu ation >, ĊĠĠĠ Ġimports Ġ: ĠBoolean ) Ġ: ĠString ĊĊĠ Ġabstract Ġfun Ġparse ( file Ġ: ĠPath ) Ġ: ĠK S Block Document < K SE valu ation > ĊĊĠ Ġ@ Test Ġfun Ġtest Titles () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd 0 Ġd 1 Ġd 2 ]] Ċ [ part Ġ[ title Ġp 0 Ġp 1 Ġp 2 ]] Ċ [ section Ġ[ title Ġs 0 Ġs 1 Ġs 2 ]] Ċ [ paragraph ] Ċ p Ċ Ċ [ part Ġ[ title Ġp 0 Ġp 1 Ġp 2 ]] Ċ [ section Ġ[ title Ġs 0 Ġs 1 Ġs 2 ]] Ċ [ subsection Ġ[ title Ġss 0 Ġss 1 Ġss 2 ]] Ċ [ paragraph ] Ċ p Ċ Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Titles Ids () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd 0 Ġd 1 Ġd 2 ] Ġ[ id Ġd 0 ]] Ċ [ part Ġ[ title Ġp 0 Ġp 1 Ġp 2 ] Ġ[ id Ġp 0 ]] Ċ [ section Ġ[ title Ġs 0 Ġs 1 Ġs 2 ] Ġ[ id Ġp 0 s 0 ]] Ċ [ paragraph ] Ċ p Ċ Ċ [ part Ġ[ title Ġp 0 Ġp 1 Ġp 2 ] Ġ[ id Ġp 1 ]] Ċ [ section Ġ[ title Ġs 0 Ġs 1 Ġs 2 ] Ġ[ id Ġp 1 s 0 ]] Ċ [ subsection Ġ[ title Ġss 0 Ġss 1 Ġss 2 ] Ġ[ id Ġp 1 s 0 ss 0 ]] Ċ [ paragraph ] Ċ p Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Text () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ p 0 Ġp 1 Ġp 2 Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Text Spacing () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ p 0 Ġ" Ġ Ġp 1 Ġ Ġ" Ġp 2 Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Term () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ term Ġt ] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Term Type () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ term Ġ[ type Ġq ] Ġt ] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Include () Ġ{ ĊĠĠĠ ĠFiles . new OutputStream ( filesystem !!. getPath (" other . txt ")). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ Ġos . write (" Hello ". toByteArray ( StandardCharsets . UTF _ 8 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ include Ġ" other . txt "] Ċ """. trim (), Ġimports Ġ= Ġtrue ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Include Expanded () Ġ{ ĊĠĠĠ ĠFiles . new OutputStream ( filesystem !!. getPath (" other . txt ")). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ Ġos . write (" Hello ĠA ĠB ĠC ĠD ". toByteArray ( StandardCharsets . UTF _ 8 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġround Trip Expanded (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ include Ġ" other . txt "] Ċ """. trim (), Ġ""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ " Hello ĠA ĠB ĠC ĠD " Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Import () Ġ{ ĊĠĠĠ ĠFiles . new OutputStream ( filesystem !!. getPath (" other . txt ")). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ Ġos . write ("[ paragraph Ġp ] ". toByteArray ( StandardCharsets . UTF _ 8 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ import Ġ" other . txt "] Ċ """. trim (), Ġimports Ġ= Ġtrue ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Import Expanded () Ġ{ ĊĠĠĠ ĠFiles . new OutputStream ( filesystem !!. getPath (" other . txt ")). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ Ġos . write ("[ paragraph Ġp ] ". toByteArray ( StandardCharsets . UTF _ 8 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġround Trip Expanded (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ import Ġ" other . txt "] Ċ """. trim (), Ġ""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ p Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Image () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ image Ġ[ target Ġ" x "] Ġx ] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest ImageType () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ image Ġ[ target Ġ" x "] Ġ[ type Ġq ] Ġx ] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Image Size () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ image Ġ[ target Ġ" x "] Ġ[ size Ġ 2 3 Ġ 2 4 ] Ġx ] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest ImageType Size () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ image Ġ[ target Ġ" x "] Ġ[ type Ġz ] Ġ[ size Ġ 2 3 Ġ 2 4 ] Ġx ] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Ver batim () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ verbatim Ġ" v "] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Ver batim Type () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ verbatim Ġ[ type Ġt ] Ġ" v "] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Link Internal () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ] Ġ[ id Ġz ]] Ċ [ paragraph ] Ċ [ link Ġ[ target Ġz ] Ġx ] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Link Internal Image () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ] Ġ[ id Ġz ]] Ċ [ paragraph ] Ċ [ link Ġ[ target Ġz ] Ġ[ image Ġ[ target Ġ" z "] Ġx ]] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Link Internal Include () Ġ{ ĊĠĠĠ ĠFiles . new OutputStream ( filesystem !!. getPath (" other . txt ")). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ Ġos . write (" Hello ". toByteArray ( StandardCharsets . UTF _ 8 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ] Ġ[ id Ġz ]] Ċ [ paragraph ] Ċ [ link Ġ[ target Ġz ] Ġ[ include Ġ" other . txt "]] Ċ """. trim (), Ġimports Ġ= Ġtrue ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Link External () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ] Ġ[ id Ġz ]] Ċ [ paragraph ] Ċ [ link - ext Ġ[ target Ġ" z "] Ġx ] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Link External Image () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ] Ġ[ id Ġz ]] Ċ [ paragraph ] Ċ [ link - ext Ġ[ target Ġ" z "] Ġ[ image Ġ[ target Ġ" z "] Ġx ]] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Link External Include () Ġ{ ĊĠĠĠ ĠFiles . new OutputStream ( filesystem !!. getPath (" other . txt ")). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ Ġos . write (" Hello ". toByteArray ( StandardCharsets . UTF _ 8 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ] Ġ[ id Ġz ]] Ċ [ paragraph ] Ċ [ link - ext Ġ[ target Ġ" z "] Ġ[ include Ġ" other . txt "]] Ċ """. trim (), Ġimports Ġ= Ġtrue ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest List Ordered () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ list - ordered ĊĠ Ġ[ item Ġx 0 Ġx 1 Ġx 2 ] ĊĠ Ġ[ item Ġy 0 Ġy 1 Ġy 2 ] ĊĠ Ġ[ item Ġz 0 Ġz 1 Ġz 2 ]] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest List Un ordered () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ list - unordered ĊĠ Ġ[ item Ġx 0 Ġx 1 Ġx 2 ] ĊĠ Ġ[ item Ġy 0 Ġy 1 Ġy 2 ] ĊĠ Ġ[ item Ġz 0 Ġz 1 Ġz 2 ]] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Foot note () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ footnote Ġ[ id Ġf 0 ]] Ċ x Ġy Ġz Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Foot note Ref () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ footnote Ġ[ id Ġf 0 ]] Ċ [ footnote - ref Ġf 0 ] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Foot note Type () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ footnote Ġ[ id Ġf 0 ] Ġ[ type Ġt ]] Ċ x Ġy Ġz Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Formal ItemType () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ form al - item Ġ[ title Ġf 0 ] Ġ[ type Ġt ]] Ċ x Ġy Ġz Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Formal Item ID () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ form al - item Ġ[ title Ġf 0 ] Ġ[ id Ġf 0 ]] Ċ x Ġy Ġz Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Formal Item ID Type () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ form al - item Ġ[ title Ġf 0 ] Ġ[ id Ġf 0 ] Ġ[ type Ġt ]] Ċ x Ġy Ġz Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Table () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ table ĊĠ Ġ[ summary Ġx Ġy Ġz ] ĊĠ Ġ[ body ĊĠ Ġ[ row ĊĠĠĠ Ġ[ type Ġa ] ĊĠĠĠ Ġ[ cell Ġx ] ĊĠĠĠ Ġ[ cell Ġ[ type Ġb ] Ġy ] ĊĠĠĠ Ġ[ cell Ġz ]] ĊĠ Ġ[ row ĊĠĠĠ Ġ[ cell Ġx ] ĊĠĠĠ Ġ[ cell Ġy ] ĊĠĠĠ Ġ[ cell Ġz ]] ]] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Table Head () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ table ĊĠ Ġ[ summary Ġx Ġy Ġz ] ĊĠ Ġ[ head ĊĠĠĠ Ġ[ type Ġa ] ĊĠĠĠ Ġ[ name Ġt ] ĊĠĠĠ Ġ[ name Ġ[ type Ġd ] Ġu ] ĊĠĠĠ Ġ[ name Ġv ]] ĊĠ Ġ[ body ĊĠ Ġ[ row ĊĠĠĠ Ġ[ type Ġb ] ĊĠĠĠ Ġ[ cell Ġx ] ĊĠĠĠ Ġ[ cell Ġy ] ĊĠĠĠ Ġ[ cell Ġz ]] ĊĠ Ġ[ row ĊĠĠĠ Ġ[ type Ġc ] ĊĠĠĠ Ġ[ cell Ġx ] ĊĠĠĠ Ġ[ cell Ġ[ type Ġe ] Ġy ] ĊĠĠĠ Ġ[ cell Ġz ]] ]] Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Square Round () Ġ{ ĊĠĠĠ Ġround Trip (""" Ċ ( document Ġ[ title Ġd 0 Ġd 1 Ġd 2 ] Ġ[ id Ġd 0 ]) Ċ [ part Ġ[ title Ġp 0 Ġp 1 Ġp 2 ] Ġ[ id Ġp 0 ]] Ċ ( section Ġ[ title Ġs 0 Ġs 1 Ġs 2 ] Ġ[ id Ġp 0 s 0 ]) Ċ [ paragraph ] Ċ p Ċ Ċ [ part Ġ[ title Ġp 0 Ġp 1 Ġp 2 ] Ġ[ id Ġp 1 ]] Ċ ( section Ġ[ title Ġs 0 Ġs 1 Ġs 2 ] Ġ[ id Ġp 1 s 0 ]) Ċ [ subsection Ġ[ title Ġss 0 Ġss 1 Ġss 2 ] Ġ[ id Ġp 1 s 0 ss 0 ]] Ċ ( paragraph ) Ċ p Ċ Ċ """. trim (), Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Quote () Ġ{ ĊĠĠĠ Ġround Trip Expanded (""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ term Ġ"\" t \"" ] Ċ """. trim (), ĊĠĠĠĠĠ Ġ""" Ċ [ document Ġ[ title Ġd ]] Ċ [ section Ġ[ title Ġs ]] Ċ [ paragraph ] Ċ [ term Ġ"\" t \"" ] Ċ """. trim (), ĊĠĠĠĠĠ Ġimports Ġ= Ġfalse ) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Escape 0 _ Bug 5 1 () Ġ{ ĊĊĠĠĠ Ġval Ġtext _ start Ġ= Ġ""" Ċ [ document Ġ[ title Ġ"( x "]] Ċ """ ĊĠĠĠ Ġval Ġpath Ġ= Ġdefault File () ĊĠĠĠ ĠFiles . new OutputStream ( path ). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ ĠIO Utils . write ( text _ start , Ġos , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġd Ġ: ĠK S Block Document . KS Block Document With Sections < K SE valu ation > Ġ= ĊĠĠĠĠĠ Ġparse ( path ) Ġas ĠK S Block Document . KS Block Document With Sections < K SE valu ation > ĊĊĠĠĠ Ġval Ġtitle Ġ= Ġd . title . map Ġ{ Ġt Ġ-> ĊĠĠĠĠĠ ĠK SE lement . KS Inline . KS Inline Text ( t . position , Ġt . square , Ġt . data , Ġfalse , Ġt . text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdx Ġ= ĠK S Block Document . KS Block Document With Sections ( ĊĠĠĠĠĠ Ġd . position , Ġd . square , Ġd . data , Ġd . id , Ġd . type , Ġtitle , Ġd . content ) ĊĊĠĠĠ Ġval Ġs Ġ= Ġserialize ( dx , Ġfalse ) ĊĠĠĠ ĠFiles . new OutputStream ( path ). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ ĠIO Utils . write ( s , Ġos , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġparse ( default File ()) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Escape 1 _ Bug 5 1 () Ġ{ ĊĊĠĠĠ Ġval Ġtext _ start Ġ= Ġ""" Ċ [ document Ġ[ title Ġ"[ x "]] Ċ """ ĊĊĠĠĠ Ġval Ġpath Ġ= Ġdefault File () ĊĠĠĠ ĠFiles . new OutputStream ( path ). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ ĠIO Utils . write ( text _ start , Ġos , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġd Ġ: ĠK S Block Document . KS Block Document With Sections < K SE valu ation > Ġ= ĊĠĠĠĠĠ Ġparse ( path ) Ġas ĠK S Block Document . KS Block Document With Sections < K SE valu ation > ĊĊĠĠĠ Ġval Ġtitle Ġ= Ġd . title . map Ġ{ Ġt Ġ-> ĊĠĠĠĠĠ ĠK SE lement . KS Inline . KS Inline Text ( t . position , Ġt . square , Ġt . data , Ġfalse , Ġt . text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdx Ġ= ĠK S Block Document . KS Block Document With Sections ( ĊĠĠĠĠĠ Ġd . position , Ġd . square , Ġd . data , Ġd . id , Ġd . type , Ġtitle , Ġd . content ) ĊĊĠĠĠ Ġval Ġs Ġ= Ġserialize ( dx , Ġfalse ) ĊĠĠĠ ĠFiles . new OutputStream ( path ). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ ĠIO Utils . write ( s , Ġos , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġparse ( default File ()) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Escape 2 _ Bug 5 1 () Ġ{ ĊĊĠĠĠ Ġval Ġtext _ start Ġ= Ġ""" Ċ [ document Ġ[ title Ġ" x ) "]] Ċ """ ĊĊĠĠĠ Ġval Ġpath Ġ= Ġdefault File () ĊĠĠĠ ĠFiles . new OutputStream ( path ). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ ĠIO Utils . write ( text _ start , Ġos , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġd Ġ: ĠK S Block Document . KS Block Document With Sections < K SE valu ation > Ġ= ĊĠĠĠĠĠ Ġparse ( path ) Ġas ĠK S Block Document . KS Block Document With Sections < K SE valu ation > ĊĊĠĠĠ Ġval Ġtitle Ġ= Ġd . title . map Ġ{ Ġt Ġ-> ĊĠĠĠĠĠ ĠK SE lement . KS Inline . KS Inline Text ( t . position , Ġt . square , Ġt . data , Ġfalse , Ġt . text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdx Ġ= ĠK S Block Document . KS Block Document With Sections ( ĊĠĠĠĠĠ Ġd . position , Ġd . square , Ġd . data , Ġd . id , Ġd . type , Ġtitle , Ġd . content ) ĊĊĠĠĠ Ġval Ġs Ġ= Ġserialize ( dx , Ġfalse ) ĊĠĠĠ ĠFiles . new OutputStream ( path ). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ ĠIO Utils . write ( s , Ġos , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġparse ( default File ()) ĊĠ Ġ} ĊĊĠ Ġ@ Test Ġfun Ġtest Escape 3 _ Bug 5 1 () Ġ{ ĊĊĠĠĠ Ġval Ġtext _ start Ġ= Ġ""" Ċ [ document Ġ[ title Ġ" x ] "]] Ċ """ ĊĊĠĠĠ Ġval Ġpath Ġ= Ġdefault File () ĊĠĠĠ ĠFiles . new OutputStream ( path ). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ ĠIO Utils . write ( text _ start , Ġos , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġd Ġ: ĠK S Block Document . KS Block Document With Sections < K SE valu ation > Ġ= ĊĠĠĠĠĠ Ġparse ( path ) Ġas ĠK S Block Document . KS Block Document With Sections < K SE valu ation > ĊĊĠĠĠ Ġval Ġtitle Ġ= Ġd . title . map Ġ{ Ġt Ġ-> ĊĠĠĠĠĠ ĠK SE lement . KS Inline . KS Inline Text ( t . position , Ġt . square , Ġt . data , Ġfalse , Ġt . text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdx Ġ= ĠK S Block Document . KS Block Document With Sections ( ĊĠĠĠĠĠ Ġd . position , Ġd . square , Ġd . data , Ġd . id , Ġd . type , Ġtitle , Ġd . content ) ĊĊĠĠĠ Ġval Ġs Ġ= Ġserialize ( dx , Ġfalse ) ĊĠĠĠ ĠFiles . new OutputStream ( path ). use Ġ{ Ġos Ġ-> ĊĠĠĠĠĠ ĠIO Utils . write ( s , Ġos , ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġparse ( default File ()) ĊĠ Ġ} Ċ }