\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\RequirePackage{l3keys2e}
\ProvidesExplPackage
  {projlib-draft}
  {2022/02/24} {}
  {Useful commands during draft stage}

\keys_define:nn { projlib-draft }
  {
    , draft   .bool_set:N   = \l__projlib_draft_fast_bool
    , draft   .initial:n    = { false }
    , fast    .bool_set:N   = \l__projlib_draft_fast_bool
    , unknown .code:n       = {}
  }
\ProcessKeysOptions { projlib-draft }

\RequirePackage { projlib-language }
\RequirePackage { xcolor }

\bool_if:NTF \l__projlib_draft_fast_bool
  {
    \NewDocumentCommand \projlib_draft_plain_box { O{-paper} m }
      {
        \group_begin:
          \color { #1 }
          \dim_set:Nn \fboxsep  { 1.5pt }
          \dim_set:Nn \fboxrule { 1.5pt }
          \fbox { #2 }
        \group_end:
      }
  }
  {
    \PassOptionsToPackage { many } { tcolorbox }
    \RequirePackage { tcolorbox }
    \NewTCBox \projlib_draft_plain_box { O{-paper} }
      {
        enhanced~jigsaw, breakable,
        on~line, arc = 1.2pt, outer~arc = 1pt,
        colframe = #1, colupper = #1, opacityback = 0,
        boxsep = 1pt, boxrule = 1.2pt,
        left = 1pt, right = 1pt, top = 0pt, bottom = 0pt,
      }
  }

\projlib_langauge_define_multilingual_text:Nn \__dnf_text
  {
    EN = To\ be\ finished     ,
    FR = Pas\ encore\ fini    ,
    DE = Nicht\ beendet       ,
    IT = Per\ essere\ finito  ,
    PT = Não\ terminou        ,
    BR = Não\ terminou        ,
    ES = Estar\ terminado     ,
    CN = 这里尚未完成         ,
    TC = 這裡尚未完成         ,
    JP = 終わってない         ,
    RU = Не\ закончен         ,
  }

\projlib_langauge_define_multilingual_text:Nn \__dnf_report_text
  {
    EN = { Below\ is\ a\ list\ of\ outstanding\ items,
           \ followed\ by\ the\ corresponding\ page\ numbers.         }     ,
    FR = { Voici\ la\ liste\ des\ éléments\ en\ suspens,
           \ suivie\ des\ numéros\ de\ page\ correspondants.          }     ,
    DE = { Unten\ ist\ eine\ Liste\ der\ ausstehenden\ Posten,
           \ gefolgt\ von\ den\ entsprechenden\ Seitenzahlen.         }     ,
    IT = { Qui\ sotto\ c'è\ una\ lista\ di\ voci\ in\ sospeso,
           \ seguita\ dai\ numeri\ di\ pagina\ corrispondenti.        }     ,
    PT = { Abaixo\ está\ uma\ lista\ de\ itens\ pendentes,
           \ seguida\ dos\ números\ de\ página\ correspondentes.      }     ,
    BR = { Abaixo\ está\ uma\ lista\ de\ itens\ pendentes,
           \ seguida\ dos\ números\ de\ página\ correspondentes.      }     ,
    ES = { Aquí está\ la\ lista\ de\ elementos\ pendientes,
           \ seguida\ de\ los\ números\ de\ página\ correspondientes. }     ,
    CN = { 以下是未完成事项列表，括号内注明了对应的页码。             }     ,
    TC = { 以下是未完成事項的列表，括號內註明了對應頁碼。             }     ,
    JP = { 以下は、未解決の項目とそれに対応するページ番号の一覧です。 }     ,
    RU = { Ниже\ приведен\ список\ невыполненных\ пунктов
           \ с\ соответствующими\ номерами\ страниц\ в\ скобках.      }     ,
  }

\tl_new:c    { __dnf_font }
\tl_gset:cn  { __dnf_font }        { \normalfont \ttfamily \bfseries \small }

\definecolor { __dnf_color }       { RGB } {  21, 122,  20 }

\newcounter  { __dnf_counter }

\tl_new:N \g__projlib_draft_dnf_report_tl

\NewDocumentCommand \dnf { d<> }
  {
    \noindent
    \projlib_draft_plain_box [ __dnf_color ]
      {
        \stepcounter { __dnf_counter }
        \__dnf_font
        \__dnf_text
        \c_space_tl
        \# \the__dnf_counter
        \IfNoValueF { #1 } { \, : ~ #1 }
        \tl_gput_right:Nx \g__projlib_draft_dnf_report_tl
          {
            \# \,
            \int_value:w \the__dnf_counter
            \c_space_tl \c_space_tl
            $\langle$
            \skip_horizontal:n { 0.1em }
            \cs_if_exist:cTF { hyperlink }
              {
                \exp_not:N \hyperlink { page.\thepage } { \thepage }
              }
              {
                \thepage
              }
            \skip_horizontal:n { 0.1em }
            $\rangle$
            \c_space_tl
            \IfNoValueF { #1 } { : ~ #1 }
            \\
          }
      }
  }

\hook_gput_code:nnn { enddocument } { projlib-draft }
  {
    \tl_if_blank:VF \g__projlib_draft_dnf_report_tl
      {
        \clearpage \noindent
        \color { __dnf_color }
        \__dnf_font
        \__dnf_report_text \\[0.75\baselineskip]
        \g__projlib_draft_dnf_report_tl
      }
  }

\endinput
%%
%% End of file `projlib-draft.sty'.
