@@ -245,44 +245,51 @@ def __iter__(self):
245
245
class LatexFormatterAbstract (ABC ):
246
246
def _compose_string (self ) -> str :
247
247
elements = [
248
- self ._compose_env_begin () ,
249
- self ._compose_top_separator () ,
250
- self ._compose_header () ,
251
- self ._compose_middle_separator () ,
252
- self ._compose_env_body () ,
253
- self ._compose_bottom_separator () ,
254
- self ._compose_env_end () ,
248
+ self .env_begin ,
249
+ self .top_separator ,
250
+ self .header ,
251
+ self .middle_separator ,
252
+ self .env_body ,
253
+ self .bottom_separator ,
254
+ self .env_end ,
255
255
]
256
256
result = "\n " .join ([item for item in elements if item ])
257
257
trailing_newline = "\n "
258
258
return result + trailing_newline
259
259
260
+ @property
260
261
@abstractmethod
261
- def _compose_env_begin (self ):
262
+ def env_begin (self ):
262
263
pass
263
264
265
+ @property
264
266
@abstractmethod
265
- def _compose_top_separator (self ):
267
+ def top_separator (self ):
266
268
pass
267
269
270
+ @property
268
271
@abstractmethod
269
- def _compose_header (self ):
272
+ def header (self ):
270
273
pass
271
274
275
+ @property
272
276
@abstractmethod
273
- def _compose_middle_separator (self ):
277
+ def middle_separator (self ):
274
278
pass
275
279
280
+ @property
276
281
@abstractmethod
277
- def _compose_env_body (self ):
282
+ def env_body (self ):
278
283
pass
279
284
285
+ @property
280
286
@abstractmethod
281
- def _compose_bottom_separator (self ):
287
+ def bottom_separator (self ):
282
288
pass
283
289
290
+ @property
284
291
@abstractmethod
285
- def _compose_env_end (self ):
292
+ def env_end (self ):
286
293
pass
287
294
288
295
@@ -386,26 +393,31 @@ def _create_row_iterator(self, over):
386
393
elif over == "body" :
387
394
return RowBodyIterator (** kwargs )
388
395
389
- def _compose_header (self ):
396
+ @property
397
+ def header (self ):
390
398
iterator = self ._create_row_iterator (over = "header" )
391
399
return "\n " .join (list (iterator ))
392
400
393
- def _compose_top_separator (self ):
401
+ @property
402
+ def top_separator (self ):
394
403
return "\\ toprule"
395
404
396
- def _compose_middle_separator (self ):
405
+ @property
406
+ def middle_separator (self ):
397
407
return "\\ midrule" if self ._is_separator_required () else ""
398
408
399
- def _compose_env_body (self ):
409
+ @property
410
+ def env_body (self ):
400
411
iterator = self ._create_row_iterator (over = "body" )
401
412
return "\n " .join (list (iterator ))
402
413
403
414
def _is_separator_required (self ):
404
- return self ._compose_header () and self ._compose_env_body ()
415
+ return self .header and self .env_body
405
416
406
417
407
418
class LatexTableFormatter (LatexFormatter ):
408
- def _compose_env_begin (self ):
419
+ @property
420
+ def env_begin (self ):
409
421
elements = [
410
422
f"\\ begin{{table}}{ self .position_macro } " ,
411
423
f"\\ centering" ,
@@ -415,26 +427,32 @@ def _compose_env_begin(self):
415
427
]
416
428
return "\n " .join ([item for item in elements if item ])
417
429
418
- def _compose_bottom_separator (self ):
430
+ @property
431
+ def bottom_separator (self ):
419
432
return "\\ bottomrule"
420
433
421
- def _compose_env_end (self ):
434
+ @property
435
+ def env_end (self ):
422
436
return "\n " .join (["\\ end{tabular}" , "\\ end{table}" ])
423
437
424
438
425
439
class LatexTabularFormatter (LatexFormatter ):
426
- def _compose_env_begin (self ):
440
+ @property
441
+ def env_begin (self ):
427
442
return f"\\ begin{{tabular}}{{{ self .column_format } }}"
428
443
429
- def _compose_bottom_separator (self ):
444
+ @property
445
+ def bottom_separator (self ):
430
446
return "\\ bottomrule"
431
447
432
- def _compose_env_end (self ):
448
+ @property
449
+ def env_end (self ):
433
450
return "\\ end{tabular}"
434
451
435
452
436
453
class LatexLongTableFormatter (LatexFormatter ):
437
- def _compose_env_begin (self ):
454
+ @property
455
+ def env_begin (self ):
438
456
first_row = (
439
457
f"\\ begin{{longtable}}{ self .position_macro } " f"{{{ self .column_format } }}"
440
458
)
@@ -451,7 +469,8 @@ def _caption_and_label(self):
451
469
caption_and_label += double_backslash
452
470
return caption_and_label
453
471
454
- def _compose_middle_separator (self ):
472
+ @property
473
+ def middle_separator (self ):
455
474
iterator = self ._create_row_iterator (over = "header" )
456
475
elements = [
457
476
"\\ midrule" ,
@@ -468,8 +487,10 @@ def _compose_middle_separator(self):
468
487
return "\n " .join (elements )
469
488
return ""
470
489
471
- def _compose_bottom_separator (self ):
490
+ @property
491
+ def bottom_separator (self ):
472
492
return ""
473
493
474
- def _compose_env_end (self ):
494
+ @property
495
+ def env_end (self ):
475
496
return "\\ end{longtable}"
0 commit comments