attr_mode Subroutine

public subroutine attr_mode(manner)

!>

NAME

attr_mode(3f) - [M_attr] select processing mode for output from attr(3f)
(LICENSE:MIT)

SYNOPSIS

 subroutine attr_mode(manner)

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

DESCRIPTION

Turn off the generation of strings associated with the HTML keywords
in the string generated by the attr(3f) function, or display the
text in raw mode as it was passed to attr(3f) or return to ANSI
escape control sequence generation.

OPTIONS

MANNER  The current manners or modes supported via the attr_mode(3f)
         procedure are

     plain          suppress the output associated with keywords
     color(default) commonly supported escape sequences
     raw            echo the input to attr(3f) as its output
     reload         restore original keyword meanings deleted or
                    replaced by calls to attr_update(3f).

EXAMPLE

Sample program

 program demo_attr_mode
 use M_attr, only : attr, attr_mode
 implicit none
 character(len=:),allocatable :: lines(:)
 character(len=:),allocatable :: outlines(:)
 integer :: i
    lines=[character(len=110):: &
    &'<M><y>',&
    &'<M><y>  Suffice it to say that black and white are also colors',&
    &'<M><y>  for their simultaneous contrast is as striking as that ',&
    &'<M><y>  of green and red, for instance. &
    & --- <y><bo>Vincent van Gogh</bo></y>',&
    &' ']

    outlines=attr(lines,chars=57)
    write(*,'(a)')(trim(outlines(i)),i=1,size(outlines))

    call attr_mode(manner='plain') ! write as plain text
    write(*,'(a)')attr(lines)

    call attr_mode(manner='raw')   ! write as-is
    write(*,'(a)')attr(lines)

    call attr_mode(manner='ansi')  ! return to default mode

 end program demo_attr_mode

AUTHOR

John S. Urban, 2021

LICENSE

MIT

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: manner

Source Code

subroutine attr_mode(manner)
character(len=*),intent(in) :: manner
integer                     :: i
   if(.not.allocated(mode))then  ! set substitution mode
      mode='color'
      call vt102()
   endif
   select case(manner)
   case('vt102','ANSI','ansi','color','COLOR')
      mode='color'
   case('reload','default','defaults','')
      call vt102()
      mode='color'
   case('raw')
      mode='raw'
   case('dump')  ! dump dictionary for debugging
      if(allocated(keywords))then
         if(size(keywords).gt.0)then
            write(stderr,'(*(a,t30,a))')'KEYWORD','VALUE'
            write(stderr,'(*(a,t30,2("[",a,"]"),/))')(trim(keywords(i)),values(i),mono_values(i),i=1,size(keywords))
         endif
      endif
   case('dummy','plain','text')
      mode='plain'
   case default
      write(*,*)'unknown manner. Try color|raw|plain'
      mode='color'
   end select
end subroutine attr_mode