[PD-cvs] pd/src desire.tk,1.1.2.600.2.403,1.1.2.600.2.404

Mathieu Bouchard matju at users.sourceforge.net
Mon Aug 20 09:56:51 CEST 2007


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27532

Modified Files:
      Tag: desiredata
	desire.tk 
Log Message:
new pd format parser (rewrote proc pd_mess_split)


Index: desire.tk
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.tk,v
retrieving revision 1.1.2.600.2.403
retrieving revision 1.1.2.600.2.404
diff -C2 -d -r1.1.2.600.2.403 -r1.1.2.600.2.404
*** desire.tk	20 Aug 2007 05:25:32 -0000	1.1.2.600.2.403
--- desire.tk	20 Aug 2007 07:56:46 -0000	1.1.2.600.2.404
***************
*** 1030,1040 ****
  after 1000 pd_connect
  
! if {$cmdline(port)} {
  	set server_port $cmdline(port)
  	# and then do nothing...
! } elseif {$cmdline(valgrind)} {
  	#exec valgrind --tool=memcheck $cmdline(server) -guiport $server_port &
  	exec valgrind --tool=memcheck --gen-suppressions=all --suppressions=valgrind3.supp $cmdline(server) -guiport $server_port &
! } else {
      if {$cmdline(gdb)} {
  	if {$cmdline(console) && $cmdline(gdbconsole)} {
--- 1030,1041 ----
  after 1000 pd_connect
  
! after 0 {
!   if {$cmdline(port)} {
  	set server_port $cmdline(port)
  	# and then do nothing...
!   } elseif {$cmdline(valgrind)} {
  	#exec valgrind --tool=memcheck $cmdline(server) -guiport $server_port &
  	exec valgrind --tool=memcheck --gen-suppressions=all --suppressions=valgrind3.supp $cmdline(server) -guiport $server_port &
!   } else {
      if {$cmdline(gdb)} {
  	if {$cmdline(console) && $cmdline(gdbconsole)} {
***************
*** 1054,1057 ****
--- 1055,1059 ----
  	exec $cmdline(server) -guiport $server_port &
      }
+   }
  }
  
***************
*** 5443,5451 ****
  
  proc change_2 {self mess} {
- 	set mess [split $mess]
  	set isnew [expr ![info exists ::_($self:_class)]]
  	switch -- [lindex $mess 0] {
  		"#N" {if {$isnew} {Canvas new_as $self $mess} else {$self reinit $mess}}
! 		"#X" { # YOU CAN'T USE LINDEX YOU DUMMY
  			set i 1
  			# would it be possible to merge floatatom,symbolatom as gatom ?
--- 5445,5452 ----
  
  proc change_2 {self mess} {
  	set isnew [expr ![info exists ::_($self:_class)]]
  	switch -- [lindex $mess 0] {
  		"#N" {if {$isnew} {Canvas new_as $self $mess} else {$self reinit $mess}}
! 		"#X" {
  			set i 1
  			# would it be possible to merge floatatom,symbolatom as gatom ?
***************
*** 5478,5482 ****
  			#post "#V: $mess"
  		}
! 		default {if {$mess != ""} {error "what you say? ($mess)"}}
  	}
  }
--- 5479,5483 ----
  			#post "#V: $mess"
  		}
! 		default {if {$mess != ""} {error "what you say? «[lindex $mess 0]» in «$mess»"}}
  	}
  }
***************
*** 5487,5509 ****
  #}
  
! # split at message boundaries.
! # \n is wiped, then that character is reused temporarily to mean a quoted semicolon.
! # BUG: this is wrong because then \\; gets parsed wrong.
! proc pd_mess_split {e} {
  	set r {}
! 	set m {}
! 	regsub -all "\n" $e " " y
! 	regsub -all {\\;} $y "\n" z
! 	foreach mess [split $z ";"] {
! 		regsub -all "\n" $mess "\\;" mess
! 		set mess [string trimleft $mess]
! 		if {$mess != ""} {lappend r $mess}
  	}
  	return $r
  }
  
! # split at atom boundaries.
! proc pd_atom_split {e} {
! 	# huh...
  }
  
--- 5488,5536 ----
  #}
  
! # split at message boundaries and atom boundaries, returning a list of lists of atoms.
! # spaces    get  temporary value \x01
! # A_SEMI    gets temporary value \x02
! # backslash gets temporary value \x03
! # A_COMMA is not handled yet
! proc pd_mess_split {s} {
! 	set s [regsub -all {\\\\} $s "\x03"]
! 	set s [regsub -all {(^|[^\\]);}          $s "\\1\x02"]
! 	set s [regsub -all {(^|[^\\])[\s\n]+}    $s "\\1\x01"]
! 	set s [regsub -all {^\n}                 $s "\x01"] ;# oops
! 	set s [regsub -all {(^|[^\\])\\([\\; ])} $s "\\1\\2"]
! 	set s [regsub -all \x03 $s \\]
  	set r {}
! 	foreach m [split $s \x02] {
! 		set m [regsub -all "\x01+" $m "\x01"]
! 		set m [regsub -all "^\x01" $m ""]
! 		set t [split $m \x01]
! 		lappend r $t
  	}
  	return $r
  }
  
! proc canonical_list {list} {
! 	set r {}
! 	foreach e $list {lappend r $e}
! 	return $r
! }
! 
! proc pd_mess_split_want== {a b} {
! 	set b [canonical_list $b]
! 	set c [pd_mess_split $a]
! 	if {[string compare $c $b]} {
! 		puts "[VTred]string     «$a»\nparses to  «$c»\ninstead of «$b»[VTgrey]"
! 	} else {
! 		puts "[VTgreen]string     «$a» OK[VTgrey]"
! 	}
! }
! 
! if 0 {
! 	pd_mess_split_want== {foo;bar;baz;a\;;b\\;c\\\;;d\\\\;e} {foo bar baz {{a;}} {b\\} {{c\;}} {{d\\}} e}
! 	pd_mess_split_want== {foo\ bar} {{{foo bar}}}
! 	pd_mess_split_want== {foo \  bar\ foo\ bar foo} {{foo { } {bar foo bar} foo}}
! 	pd_mess_split_want== {\\ \\\\ \\\\\\ \ \\\ \\\\\ one} [list [list "\\" "\\\\" "\\\\\\" "\ \\\ \\\\\ one"]]
! 	pd_mess_split_want== "\n  \n   \n  foo" foo
! 	exit
  }
  





More information about the Pd-cvs mailing list