Patch title: Release 85 bulk changes
Abstract:
File: /pliant/appli/forum/display.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/unsafe.pli"
module "/pliant/language/stream.pli"
module "/pliant/admin/file.pli"
module "/pliant/protocol/http/server.pli"
module "/pliant/protocol/http/style/default.style"
module "database.pli"


method page display_difference1 list
  arg_rw HtmlPage page ; arg List:Str list
  implicit page
    table columns 1 border 0 enlarge 0 
      var Pointer:Str l :> list first
      while exists:l  
        if (l 0 2)=": "
module "/pliant/language/unsafe.pli"
module "/pliant/language/stream.pli"
module "/pliant/admin/file.pli"
module "/pliant/protocol/http/server.pli"
module "/pliant/protocol/http/style/default.style"
module "database.pli"


method page display_difference1 list
  arg_rw HtmlPage page ; arg List:Str list
  implicit page
    table columns 1 border 0 enlarge 0 
      var Pointer:Str l :> list first
      while exists:l  
        if (l 0 2)=": "
          cell color lsh 80 25 60
          cell color (color hsl 60 25 80)
            italic text:(l 2 l:len)
          l :> list next l
        eif (l 0 2)="- "
            italic text:(l 2 l:len)
          l :> list next l
        eif (l 0 2)="- "
          cell color lsh 80 25 0
          cell color (color hsl 0 25 80)
            fixed
              while exists:l and (l 0 2)="- "
                text (l 2 l:len)+"[lf]"
                l :> list next l
        eif (l 0 2)="+ "
            fixed
              while exists:l and (l 0 2)="- "
                text (l 2 l:len)+"[lf]"
                l :> list next l
        eif (l 0 2)="+ "
          cell color lsh 80 25 120
          cell color (color hsl 120 25 80)
            fixed
              while exists:l and (l 0 2)="+ "
                text (l 2 l:len)+"[lf]"
                l :> list next l
        eif (l 0 2)="  "
          cell
            fixed
              while exists:l and (l 0 2)="  "
                text (l 2 l:len)+"[lf]"
                l :> list next l
        else
          l :> list next l


method page display_new l list mapping
  arg_rw HtmlPage page ; arg_rw Pointer:Str l ; arg List:Str
  implicit page
    cell
      table columns 1 border 0 enlarge 0
        while exists:l and (l 0 2)="+ "
          var Int matching := line_matching l list mapping
          if matching<2
            fixed
              while exists:l and (l 0 2)="+ "
                text (l 2 l:len)+"[lf]"
                l :> list next l
        eif (l 0 2)="  "
          cell
            fixed
              while exists:l and (l 0 2)="  "
                text (l 2 l:len)+"[lf]"
                l :> list next l
        else
          l :> list next l


method page display_new l list mapping
  arg_rw HtmlPage page ; arg_rw Pointer:Str l ; arg List:Str
  implicit page
    cell
      table columns 1 border 0 enlarge 0
        while exists:l and (l 0 2)="+ "
          var Int matching := line_matching l list mapping
          if matching<2
            cell color lsh 80 25 120
            cell color (color hsl 120 25 80)
              fixed
                while exists:l and (l 0 2)="+ " and (line_ma
                  text (l 2 l:len)+"[lf]"
                  l :> list next l
          else
              fixed
                while exists:l and (l 0 2)="+ " and (line_ma
                  text (l 2 l:len)+"[lf]"
                  l :> list next l
          else
            cell color lsh 80 10 120
            cell color (color hsl 120 10 80)
              fixed
                while matching>0
                  text (l 2 l:len)+"[lf]"
                  l :> list next l ; matching -= 1

method page display_difference2 list mapping f d modify sect
  arg_rw HtmlPage page ; arg List:Str list ; arg Dictionary 
  constant width 60
  implicit page
    table columns 3 border 0 enlarge 0
      cell void ; cell fixed:[   ] ; cell void
      var Pointer:Str l :> list first
      while exists:l  
        if (l 0 2)=": "
              fixed
                while matching>0
                  text (l 2 l:len)+"[lf]"
                  l :> list next l ; matching -= 1

method page display_difference2 list mapping f d modify sect
  arg_rw HtmlPage page ; arg List:Str list ; arg Dictionary 
  constant width 60
  implicit page
    table columns 3 border 0 enlarge 0
      cell void ; cell fixed:[   ] ; cell void
      var Pointer:Str l :> list first
      while exists:l  
        if (l 0 2)=": "
          cell color lsh 80 25 60
          cell color (color hsl 60 25 80)
            italic text:(l 2 l:len)
          cell void
            italic text:(l 2 l:len)
          cell void
          cell color lsh 80 25 60
          cell color (color hsl 60 25 80)
            italic text:(l 2 l:len)
            if modify
              fixed [ ]
              update_section_buttons list l (forum_path f d 
          l :> list next l
        eif (l 0 2)="- "
          if exists:(list previous l) and ((list previous l)
            italic text:(l 2 l:len)
            if modify
              fixed [ ]
              update_section_buttons list l (forum_path f d 
          l :> list next l
        eif (l 0 2)="- "
          if exists:(list previous l) and ((list previous l)
            cell color lsh 80 25 60
            cell color (color hsl 60 25 80)
              void
            cell void
              void
            cell void
            cell color lsh 80 25 60
            cell color (color hsl 60 25 80)
              if modify
                update_section_buttons list l (forum_path f 
              if modify
                update_section_buttons list l (forum_path f 
          cell color lsh 80 25 0
          cell color (color hsl 0 25 80)
            fixed
              while exists:l and (l 0 2)="- "
                text (l 2 width)+"[lf]"
                l :> list next l
          cell void
          if exists:l and (l 0 2)="+ "
            display_new l list mapping
          else
            cell void
        eif (l 0 2)="+ "
          if exists:(list previous l) and ((list previous l)
            fixed
              while exists:l and (l 0 2)="- "
                text (l 2 width)+"[lf]"
                l :> list next l
          cell void
          if exists:l and (l 0 2)="+ "
            display_new l list mapping
          else
            cell void
        eif (l 0 2)="+ "
          if exists:(list previous l) and ((list previous l)
            cell color lsh 80 25 60
            cell color (color hsl 60 25 80)
              void
            cell void
              void
            cell void
            cell color lsh 80 25 60
            cell color (color hsl 60 25 80)
              if modify
                update_section_buttons list l (forum_path f 
          cell void
          cell void
          display_new l list mapping
        eif (l 0 2)="  "
          var Pointer:Str start :> l ; var CBool cut := fals
          cell
            fixed
              while exists:l and (l 0 2)="  "
                if l="  "
                  var Pointer:Str l2 :> list next l
                  while exists:l2 and (l2 0 2)="  " and l2<>
                    l2 :> list next l2
                  if exists:l2 and l2="  " and (addressof:l2
                    if not cut
                      html "<hr>" ; cut := true
                    l :> l2
                  else
                    text (l 2 width)+"[lf]"
                    l :> list next l
                else
                  text (l 2 width)+"[lf]"
                  l :> list next l
          cell void
          l :> start ; var CBool cut := false
          cell
            fixed
              while exists:l and (l 0 2)="  "
                if l="  "
                  var Pointer:Str l2 :> list next l
                  while exists:l2 and (l2 0 2)="  " and l2<>
                    l2 :> list next l2
                  if exists:l2 and l2="  " and (addressof:l2
                    if not cut
                      html "<hr>" ; cut := true
                    l :> l2
                  else
                    text (l 2 width)+"[lf]"
                    l :> list next l
                else
                  text (l 2 width)+"[lf]"
                  l :> list next l
        else
          l :> list next l



export '. display_difference'
              if modify
                update_section_buttons list l (forum_path f 
          cell void
          cell void
          display_new l list mapping
        eif (l 0 2)="  "
          var Pointer:Str start :> l ; var CBool cut := fals
          cell
            fixed
              while exists:l and (l 0 2)="  "
                if l="  "
                  var Pointer:Str l2 :> list next l
                  while exists:l2 and (l2 0 2)="  " and l2<>
                    l2 :> list next l2
                  if exists:l2 and l2="  " and (addressof:l2
                    if not cut
                      html "<hr>" ; cut := true
                    l :> l2
                  else
                    text (l 2 width)+"[lf]"
                    l :> list next l
                else
                  text (l 2 width)+"[lf]"
                  l :> list next l
          cell void
          l :> start ; var CBool cut := false
          cell
            fixed
              while exists:l and (l 0 2)="  "
                if l="  "
                  var Pointer:Str l2 :> list next l
                  while exists:l2 and (l2 0 2)="  " and l2<>
                    l2 :> list next l2
                  if exists:l2 and l2="  " and (addressof:l2
                    if not cut
                      html "<hr>" ; cut := true
                    l :> l2
                  else
                    text (l 2 width)+"[lf]"
                    l :> list next l
                else
                  text (l 2 width)+"[lf]"
                  l :> list next l
        else
          l :> list next l



export '. display_difference'