save_usage_to_markdown Subroutine

private subroutine save_usage_to_markdown(self, markdown_file, error)

Save CLI usage as markdown.

Type Bound

command_line_interface

Arguments

Type IntentOptional Attributes Name
class(command_line_interface), intent(in) :: self

CLI data.

character(len=*), intent(in) :: markdown_file

Output file name for saving man page.

integer(kind=I4P), intent(out), optional :: error

Error trapping flag.


Calls

proc~~save_usage_to_markdown~~CallsGraph proc~save_usage_to_markdown flap_command_line_interface_t::command_line_interface%save_usage_to_markdown proc~signature~3 flap_command_line_interface_t::command_line_interface%signature proc~save_usage_to_markdown->proc~signature~3 proc~usage~3 flap_command_line_interface_t::command_line_interface%usage proc~save_usage_to_markdown->proc~usage~3 strz strz proc~save_usage_to_markdown->strz proc~signature flap_command_line_arguments_group_t::command_line_arguments_group%signature proc~signature~3->proc~signature proc~usage~3->proc~signature~3 proc~usage flap_command_line_arguments_group_t::command_line_arguments_group%usage proc~usage~3->proc~usage proc~signature~2 flap_command_line_argument_t::command_line_argument%signature proc~signature->proc~signature~2 proc~usage->proc~signature proc~usage~2 flap_command_line_argument_t::command_line_argument%usage proc~usage->proc~usage~2 cton cton proc~signature~2->cton proc~has_choices flap_command_line_argument_t::command_line_argument%has_choices proc~signature~2->proc~has_choices str str proc~signature~2->str proc~usage~2->cton interface~colorize face::colorize proc~usage~2->interface~colorize proc~replace_all flap_utils_m::replace_all proc~usage~2->proc~replace_all proc~usage~2->str proc~colorize_default face::colorize_default interface~colorize->proc~colorize_default proc~replace flap_utils_m::replace proc~replace_all->proc~replace proc~wstrip flap_utils_m::wstrip proc~replace_all->proc~wstrip proc~color_index face::color_index proc~colorize_default->proc~color_index proc~style_index face::style_index proc~colorize_default->proc~style_index proc~upper face::upper proc~colorize_default->proc~upper

Called by

proc~~save_usage_to_markdown~~CalledByGraph proc~save_usage_to_markdown flap_command_line_interface_t::command_line_interface%save_usage_to_markdown proc~parse~2 flap_command_line_interface_t::command_line_interface%parse proc~parse~2->proc~save_usage_to_markdown program~flap_save_usage_to_markdown flap_save_usage_to_markdown program~flap_save_usage_to_markdown->proc~save_usage_to_markdown none~get~2 flap_command_line_interface_t::command_line_interface%get program~flap_save_usage_to_markdown->none~get~2 proc~fake_call flap_test_group::fake_call proc~fake_call->proc~parse~2 proc~fake_call->none~get~2 proc~get_cla_list_varying_char~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_char proc~get_cla_list_varying_char~2->proc~parse~2 proc~get_cla_list_varying_i1p~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_I1P proc~get_cla_list_varying_i1p~2->proc~parse~2 proc~get_cla_list_varying_i2p~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_I2P proc~get_cla_list_varying_i2p~2->proc~parse~2 proc~get_cla_list_varying_i4p~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_I4P proc~get_cla_list_varying_i4p~2->proc~parse~2 proc~get_cla_list_varying_i8p~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_I8P proc~get_cla_list_varying_i8p~2->proc~parse~2 proc~get_cla_list_varying_logical~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_logical proc~get_cla_list_varying_logical~2->proc~parse~2 proc~get_cla_list_varying_r16p~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_R16P proc~get_cla_list_varying_r16p~2->proc~parse~2 proc~get_cla_list_varying_r4p~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_R4P proc~get_cla_list_varying_r4p~2->proc~parse~2 proc~get_cla_list_varying_r8p~2 flap_command_line_interface_t::command_line_interface%get_cla_list_varying_R8P proc~get_cla_list_varying_r8p~2->proc~parse~2 proc~get_cla_list~2 flap_command_line_interface_t::command_line_interface%get_cla_list proc~get_cla_list~2->proc~parse~2 proc~get_cla~2 flap_command_line_interface_t::command_line_interface%get_cla proc~get_cla~2->proc~parse~2 program~flap_save_bash_completion flap_save_bash_completion program~flap_save_bash_completion->proc~parse~2 program~flap_test_basic flap_test_basic program~flap_test_basic->proc~parse~2 none~get_varying~2 flap_command_line_interface_t::command_line_interface%get_varying program~flap_test_basic->none~get_varying~2 program~flap_test_basic->none~get~2 program~flap_test_choices_logical flap_test_choices_logical program~flap_test_choices_logical->proc~parse~2 program~flap_test_choices_logical->none~get~2 program~flap_test_nested flap_test_nested program~flap_test_nested->proc~parse~2 program~flap_test_nested->none~get~2 program~flap_test_string flap_test_string program~flap_test_string->proc~parse~2 program~flap_test_string->none~get~2 none~get_varying~2->proc~get_cla_list_varying_char~2 none~get_varying~2->proc~get_cla_list_varying_i1p~2 none~get_varying~2->proc~get_cla_list_varying_i2p~2 none~get_varying~2->proc~get_cla_list_varying_i4p~2 none~get_varying~2->proc~get_cla_list_varying_i8p~2 none~get_varying~2->proc~get_cla_list_varying_logical~2 none~get_varying~2->proc~get_cla_list_varying_r4p~2 none~get_varying~2->proc~get_cla_list_varying_r8p~2 none~get~2->proc~get_cla_list~2 none~get~2->proc~get_cla~2 program~flap_test_group flap_test_group program~flap_test_group->proc~fake_call program~flap_save_man_page flap_save_man_page program~flap_save_man_page->none~get~2 program~flap_test_action_store flap_test_action_store program~flap_test_action_store->none~get_varying~2 program~flap_test_action_store->none~get~2 program~flap_test_ansi_color_style flap_test_ansi_color_style program~flap_test_ansi_color_style->none~get~2 program~flap_test_duplicated_clas flap_test_duplicated_clas program~flap_test_duplicated_clas->none~get~2 program~flap_test_group_examples flap_test_group_examples program~flap_test_group_examples->none~get~2 program~flap_test_hidden flap_test_hidden program~flap_test_hidden->none~get~2 program~flap_test_ignore_unknown_clas flap_test_ignore_unknown_clas program~flap_test_ignore_unknown_clas->none~get~2 program~flap_test_minimal flap_test_minimal program~flap_test_minimal->none~get~2 program~flap_test_nargs_insufficient flap_test_nargs_insufficient program~flap_test_nargs_insufficient->none~get~2 program~flap_test_nargs_insufficient~2 flap_test_nargs_insufficient program~flap_test_nargs_insufficient~2->none~get~2

Source Code

  subroutine save_usage_to_markdown(self, markdown_file, error)
  !< Save CLI usage as markdown.
  class(command_line_interface), intent(in)  :: self               !< CLI data.
  character(*),                  intent(in)  :: markdown_file      !< Output file name for saving man page.
  integer(I4P), optional,        intent(out) :: error              !< Error trapping flag.
  character(len=:), allocatable              :: man                !< Man page.
  integer(I4P)                               :: idate(1:8)         !< Integer array for handling the date.
  integer(I4P)                               :: e                  !< Counter.
  integer(I4P)                               :: u                  !< Unit file handler.
  character(*), parameter                    :: month(12)=["Jan",&
                                                           "Feb",&
                                                           "Mar",&
                                                           "Apr",&
                                                           "May",&
                                                           "Jun",&
                                                           "Jul",&
                                                           "Aug",&
                                                           "Sep",&
                                                           "Oct",&
                                                           "Nov",&
                                                           "Dec"]  !< Months list.

  call date_and_time(values=idate)
  man = '# '//self%progname//new_line('a')
  man = man//new_line('a')//'Manual page for `'//self%progname//'` version '//self%version//new_line('a')
  man = man//new_line('a')//'`'//self%progname//' '//trim(adjustl(self%signature()))//'`'//new_line('a')
  man = man//new_line('a')//month(idate(2))//' '//trim(adjustl(strz(idate(1),4)))//new_line('a')
  if (self%description /= '') man = man//new_line('a')//'### Short description'//new_line('a')//new_line('a')//self%description
  if (self%clasg(0)%Na>0) then
    man = man//new_line('a')//new_line('a')//'### Command line options:'
    man = man//self%usage(no_header=.true.,no_examples=.true.,no_epilog=.true.,g=0,markdown=.true.)
  endif
  if (allocated(self%examples)) then
    man = man//new_line('a')//new_line('a')//'### Examples'
    do e=1, size(self%examples,dim=1)
      man = man//new_line('a')
      man = man//new_line('a')//'`'//trim(self%examples(e))//'` '
    enddo
  endif
  open(newunit=u,file=trim(adjustl(markdown_file)))
  if (present(error)) then
    write(u, "(A)", iostat=error)man
  else
    write(u, "(A)")man
  endif
  close(u)
  endsubroutine save_usage_to_markdown