// ĠCopyright Ġ( c ) Ġ 2 0 1 5 - 2 0 2 0 ĠV lad im ir ĠSch ne ider Ġ< vl ad im ir . sch ne ider @ gmail . com > ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ċ package Ġcom . vl ad sch . md . nav . util . format Ċ Ċ import Ġcom . intellij . openapi . editor . Logical Position Ċ import Ġcom . vl ad sch . flex mark . util . data . Data Holder Ċ import Ġcom . vl ad sch . flex mark . util . data . Mutable DataSet Ċ import Ġcom . vl ad sch . flex mark . util . format .* Ċ import Ġcom . vl ad sch . flex mark . util . sequence . Based Sequence Ċ import Ġcom . vl ad sch . flex mark . util . sequence . Line Append able Ċ Ċ @ Suppress (" Member Visibility Can Be Private ") Ċ class ĠMd Navigator Table ( val Ġmarkdown Table : ĠMarkdown Table ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ offset : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġ_ cell Offset Info : ĠTable Cell Offset Info ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġoffset : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ offset ĊĠĠĠĠĠĠĠ Ġset ( value : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ offset Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ offset Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ cell Offset Info Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġafter Ġsetting Ġoffset Ġcan Ġget Ġthese ĊĠĠĠ Ġval Ġexact Column : ĠInt ? Ġget () Ġ= Ġcell Offset Info . inside Column ĊĠĠĠ Ġval Ġin Column Offset : ĠInt ? Ġget () Ġ= Ġcell Offset Info . inside Offset ĊĠĠĠ Ġval Ġoffset Column : ĠInt Ġget () Ġ= Ġcell Offset Info . column ĊĠĠĠ Ġval Ġoffset Row : ĠInt Ġget () Ġ= Ġcell Offset Info . row ĊĠĠĠ Ġval Ġoffset TableCell : ĠTable Cell ? Ġget () Ġ= Ġcell Offset Info . table Cell ĊĠĠĠ Ġval Ġoffset TableRow : ĠTable Row ? Ġget () Ġ= Ġcell Offset Info . table Row ĊĊĠĠĠ Ġval Ġheader : ĠTable Section Ġ= Ġmarkdown Table . header ĊĠĠĠ Ġval Ġseparator : ĠTable Section Ġ= Ġmarkdown Table . separator ĊĠĠĠ Ġval Ġbody : ĠTable Section Ġ= Ġmarkdown Table . body ĊĊĠĠĠ Ġvar Ġcaption : ĠBased Sequence ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmarkdown Table . caption Cell . text ĊĠĠĠĠĠĠĠ Ġset ( caption : ĠBased Sequence ) Ġ= Ġmarkdown Table . set Caption ( caption ) ĊĊĠĠĠ Ġval Ġcaption Open : ĠBased Sequence Ġget () Ġ= Ġmarkdown Table . caption Cell . open Marker ĊĠĠĠ Ġval Ġcaption Close : ĠBased Sequence Ġget () Ġ= Ġmarkdown Table . caption Cell . close Marker ĊĠĠĠ Ġval Ġheading RowCount : ĠInt Ġget () Ġ= Ġmarkdown Table . heading RowCount ĊĠĠĠ Ġval Ġbody RowCount : ĠInt Ġget () Ġ= Ġmarkdown Table . body RowCount ĊĠĠĠ Ġval Ġcaption RowCount : ĠInt Ġget () Ġ= Ġmarkdown Table . caption RowCount ĊĠĠĠ Ġval Ġmax Heading Columns : ĠInt Ġget () Ġ= Ġmarkdown Table . max Heading Columns ĊĠĠĠ Ġval Ġmax Separator Columns : ĠInt Ġget () Ġ= Ġmarkdown Table . max Separator Columns ĊĠĠĠ Ġval Ġmax Body Columns : ĠInt Ġget () Ġ= Ġmarkdown Table . max Body Columns ĊĠĠĠ Ġval Ġmin Columns : ĠInt Ġget () Ġ= Ġmarkdown Table . min Columns ĊĠĠĠ Ġval Ġmax Columns : ĠInt Ġget () Ġ= Ġmarkdown Table . max Columns ĊĠĠĠ Ġval Ġtracked Offsets : ĠList < Tracked Offset > Ġget () Ġ= Ġmarkdown Table . tracked Offsets ĊĠĠĠ Ġval Ġall Rows : ĠList < TableRow > Ġget () Ġ= Ġmarkdown Table . all Rows Ġas ĠList < TableRow > ĊĠĠĠ Ġval Ġall Content Rows : ĠList < TableRow > Ġget () Ġ= Ġmarkdown Table . all Content Rows Ġas ĠList < TableRow > ĊĠĠĠ Ġval Ġall Rows Count : ĠInt Ġget () Ġ= Ġmarkdown Table . all Rows Count ĊĠĠĠ Ġval Ġall Content Rows Count : ĠInt Ġget () Ġ= Ġmarkdown Table . all Content Rows Count ĊĊĠĠĠ Ġval Ġseparator Row : ĠInt Ġget () Ġ= Ġmarkdown Table . header . rows . size ĊĊĠĠĠ Ġvar Ġoptions : ĠData Holder ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠMutable DataSet (). set From ( markdown Table . options ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkdown Table . options Ġ= ĠTable Format Options ( options . to Mutable (). set All ( value )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġcell Offset Info : ĠTable Cell Offset Info ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ cell Offset Info Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ cell Offset Info Ġ= Ġmarkdown Table . getCell Offset Info ( offset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ cell Offset Info !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcell Offset Info ( offset : ĠInt ): ĠTable Cell Offset Info Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmarkdown Table . getCell Offset Info ( offset ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfill Missing Columns () Ġ{ ĊĠĠĠĠĠĠĠ Ġmarkdown Table . fill Missing Columns () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfill Missing Columns ( min Column : ĠInt ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmarkdown Table . fill Missing Columns ( min Column ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UNUSED _ PARAMETER ") ĊĠĠĠ Ġfun Ġlogical Position From Column Offset ( table Start Column : ĠInt , Ġrow : ĠInt , Ġcolumn : ĠInt , Ġfirst Row Offset : ĠInt , Ġin Column Offset : ĠInt ): ĠLogical Position ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠRELEASE : ĠQUERY : Ġcheck Ġwhy Ġit Ġalways Ġreturns Ġnull Ċ // ĠĠĠĠĠĠĠ Ġvar Ġlogical Row Position : ĠLogical Position ? Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( row Ġ< Ġthis . all Rows Count ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtable Row Ġ= Ġthis . all Rows [ row ] Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Span Offset Ġ= Ġtable Row . indexOf ( column ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġlogical Row Position Ġ= Ġlogical Row Position ( table Start Column , Ġrow Ġ+ Ġfirst Row Offset , Ġindex Span Offset . index , Ġin Column Offset , Ġtable Row ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġlogical Row Position ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UNUSED _ PARAMETER ") ĊĠĠĠ Ġfun Ġlogical Position ( table Start Column : ĠInt , Ġrow : ĠInt , Ġcolumn : ĠInt , Ġfirst Row Offset : ĠInt , Ġin Column Offset : ĠInt ): ĠLogical Position ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠRELEASE : ĠQUERY : Ġcheck Ġwhy Ġit Ġalways Ġreturns Ġnull Ċ // ĠĠĠĠĠĠĠ Ġvar Ġlogical Row Position : ĠLogical Position ? Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( row Ġ< Ġthis . all Rows Count ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġlogical Row Position Ġ= Ġlogical Row Position ( table Start Column , Ġrow Ġ+ Ġfirst Row Offset , Ġcolumn , Ġin Column Offset , Ġthis . all Rows [ row ]) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġlogical Row Position ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlogical Row Position ( table Start Column : ĠInt , Ġrow : ĠInt , Ġindex : ĠInt , Ġin Column Offset : ĠInt , Ġtable Row : ĠTable Row ): ĠLogical Position ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġtable Row . cells . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcol Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Col Index Ġ= Ġif Ġ( in Column Offset Ġ< Ġ 0 ) Ġindex Ġelse Ġindex Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġ.. Ġend Col Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcol Ġ+= Ġtable Row . cells [ i ]. getCell Length ( if Ġ( i Ġ> Ġ 0 ) Ġtable Row . cells [ i Ġ- Ġ 1 ] Ġelse Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLogical Position ( row , Ġtable Start Column Ġ+ Ġcol Ġ+ Ġin Column Offset ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Tracked Offset ( tracked Offset : ĠTrack ed Offset ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmarkdown Table . add Tracked Offset ( tracked Offset ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Rows ( rowIndex : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmarkdown Table . delete Rows ( rowIndex , Ġcount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinsert Rows ( rowIndex : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmarkdown Table . insert Rows ( rowIndex , Ġcount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinsert Columns ( column : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmarkdown Table . insert Columns ( column , Ġcount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Columns ( column : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmarkdown Table . delete Columns ( column , Ġcount ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmove Column ( from Column : ĠInt , Ġto Column : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmarkdown Table . move Column ( from Column , Ġto Column ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis All Rows Separator ( index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmarkdown Table . is All Rows Separator ( index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠisEmpty Column ( column : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmarkdown Table . isEmpty Column ( column ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠisEmpty Row ( row : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmarkdown Table . is All Rows Empty At ( row ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnormalize () Ġ{ ĊĠĠĠĠĠĠĠ Ġmarkdown Table . normalize () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfinalize Table () Ġ{ ĊĠĠĠĠĠĠĠ Ġmarkdown Table . finalize Table () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġappend Table ( out : ĠLine Append able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmarkdown Table . append Table ( out ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġappend Formatted Caption ( out : ĠLine Append able , Ġcaption : ĠBased Sequence , Ġoptions : ĠTable Format Options ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMarkdown Table . append Formatted Caption ( out , Ġcaption , Ġoptions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformatted Caption ( caption : ĠBased Sequence , Ġoptions : ĠTable Format Options ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMarkdown Table . formatted Caption ( caption , Ġoptions ) ĊĠĠĠ Ġ} Ċ } Ċ