demo_M_attr Program

Uses

Variables

Type Attributes Name Initial
character(len=:), allocatable :: expanded
integer :: ios
character(len=1024) :: line

Source Code

program demo_M_attr
use M_attr, only : attr, attr_mode, attr_update
implicit none
character(len=1024) :: line
character(len=:),allocatable :: expanded
integer :: ios
   write(*,'(a)')&
&attr('The most common attributes and their defaults keywords:         '),&
&attr('     colors:                                                    '),&
&attr('       <r>r</r>,         red,       <R>R</R>,  RED              '),&
&attr('       <g>g</g>,         green,     <G>G</G>,  GREEN            '),&
&attr('       <b>b</b>,         blue,      <B>B</B>,  BLUE             '),&
&attr('       <m>m</m>,         magenta,   <M>M</M>,  MAGENTA          '),&
&attr('       <c>c</c>,         cyan,      <C>C</C>,  CYAN             '),&
&attr('       <y>y</y>,         yellow,    <Y>Y</Y>,  YELLOW           '),&
&attr('       <e>e</e>,         ebony,     <E>E</E>,  EBONY            '),&
&attr('       <w>w</w>,         white,     <W>W</W>,  WHITE            '),&
&attr('     attributes:                                                '),&
&attr('       <it>it</it>,        italic                               '),&
&attr('       <bo>bo</bo>,        bold                                 '),&
&attr('       <un>un</un>,        underline                            '),&
&attr('     other:                                                     '),&
&attr('       clear                                                    '),&
&attr('       attr,       escape                                       '),&
&attr('       default                                                  '),&
&attr('       gt                                                       '),&
&attr('       clear                                                    '),&
&attr('     dual-value (one for color, one for mono):                  '),&
&attr('       <ERROR>ERROR                                             '),&
&attr('       <WARNING>WARNING                                         '),&
&attr('       <INFO>INFO                                               '),&
&attr('')

write(*,'(a)')attr([character(len=80) :: &
'<e><W>This is an array of strings      ', &
'<r>red</r>, <g>green</g>, <b>blue</b>', &
'<c>cyan</c>, <m>magenta</m>, <y>yellow</y>', &
'<un>underline</un>', &
'       ', &
'       ', &
'       '])

! read stdin and run it through M_attr::attr to display color
   ! write as plain text
   call attr_mode(manner='raw')
   call attr_mode(manner='plain')
   call attr_mode(manner='color')
   !call attr_mode(manner='dump')
   call attr_update('Z',char(27)//'[1m')
   line=''
   write(*,'(a)')&
&attr('<y><B>WELCOME:</B></y> enter text to have it assigned attributes'),&
&attr('     Like <lt>W<gt><lt>r<gt>Red text on a White background      '),&
&attr('')
   do 
      read(*,'(a)',iostat=ios)line
      expanded = attr(trim(line))
      write(*,'(a)') expanded
      if(ios.ne.0)exit
   enddo
   write(*,'(a)',advance='no') attr('<reset>')
end program demo_M_attr