Skip to content

Commit

Permalink
experiment
Browse files Browse the repository at this point in the history
  • Loading branch information
kudrykv committed May 10, 2023
1 parent e252724 commit 25d2e0b
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 5 deletions.
20 changes: 17 additions & 3 deletions internal/adapters/tex/tabularx/tabularx.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ import (
)

type Tabularx struct {
Width fmt.Stringer
Rows Rows
Width fmt.Stringer
Rows Rows
HeaderName string
}

type Row struct {
Expand All @@ -34,10 +35,11 @@ func (r *Tabularx) AddRow(cells ...Cell) {

func (r *Tabularx) Render() string {
return fmt.Sprintf(`{\newcolumntype{Y}{>{\centering\arraybackslash}X}\begin{tabularx}{%s}{%s}
%s
%s%s
\end{tabularx}}`,
r.Width,
r.columnFormat(),
r.headerCenterName(),
r.rows(),
)
}
Expand All @@ -60,3 +62,15 @@ func (r *Tabularx) rows() string {

return strings.Join(rows, `\\`+"\n")
}

func (r *Tabularx) SetHeaderName(headerName string) {
r.HeaderName = headerName
}

func (r *Tabularx) headerCenterName() string {
if r.HeaderName == "" {
return ""
}

return fmt.Sprintf(`\multicolumn{%d}{Y}{%s}\\`, len(r.Rows[0].Cells), r.HeaderName)
}
18 changes: 16 additions & 2 deletions internal/adapters/tex/texcalendar/calendar_little.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package texcalendar

import "github.com/kudrykv/latex-yearly-planner/internal/core/calendar"
import (
"github.com/kudrykv/latex-yearly-planner/internal/adapters/tex/tabularx"
"github.com/kudrykv/latex-yearly-planner/internal/core/calendar"
)

type CalendarsLittle []CalendarLittle

Expand All @@ -23,9 +26,20 @@ type CalendarLittle struct {
}

func (r CalendarLittle) String() string {
return r.Month.Name()
tabular := tabularx.New(LineWidth{})
tabular.SetHeaderName(r.Month.Name())

tabular.AddRow(tabularx.Cell{Text: r.Month.Month})

return tabular.Render()
}

func NewCalendarLittle(month calendar.Month) CalendarLittle {
return CalendarLittle{Month: month}
}

type LineWidth struct{}

func (r LineWidth) String() string {
return `\linewidth`
}

0 comments on commit 25d2e0b

Please sign in to comment.