Check-in [d4aa7da67d]
Not logged in
Overview

SHA1 Hash:d4aa7da67da6387025ed85eabf24e339f7dd0bae
Date: 2007-09-13 06:24:31
User: aku
Comment:Continuing namespace changes, rcs parser. Basic structure is now ok IMHO.
Timelines: ancestors | descendants | both | trunk
Other Links: files | ZIP archive | manifest

Tags And Properties
Changes
[hide diffs]

Modified tools/lib/cvs.tcl from [e0a80b9107] to [5740f60d15].

@@ -3,18 +3,19 @@
 
 # -----------------------------------------------------------------------------
 # Requirements
 
 package require Tcl 8.4
-package require fileutil       ; # Tcllib (traverse directory hierarchy)
-package require rcsparser      ; # Handling the RCS archive files.
-package require vc::tools::log ; # User feedback
+package require fileutil        ; # Tcllib (traverse directory hierarchy)
+package require vc::rcs::parser ; # Handling the RCS archive files.
+package require vc::tools::log  ; # User feedback
 package require struct::tree
 
 namespace eval ::vc::cvs::ws {
     vc::tools::log::system cvs
     namespace import ::vc::tools::log::write
+    namespace import ::vc::rcs::parser::process
 }
 
 # -----------------------------------------------------------------------------
 # API
 
@@ -81,11 +82,11 @@
 		continue
 	    }
 	}
 
 	# Get the meta data we need (revisions, timeline, messages).
-	set meta [::rcsparser::process $base/$rcs]
+	set meta [process $base/$rcs]
 
 	set npaths($rcs) $f
 	set rpaths($f) $rcs
 
 	array set p $meta

Modified tools/lib/pkgIndex.tcl from [19d9f5ee91] to [9129caa7e3].

@@ -1,6 +1,6 @@
 if {![package vsatisfies [package require Tcl] 8.4]} return
-package ifneeded rcsparser 1.0 [list source [file join $dir rcsparser.tcl]]
+package ifneeded vc::rcs::parser         1.0 [list source [file join $dir rcsparser.tcl]]
 package ifneeded vc::cvs::ws             1.0 [list source [file join $dir cvs.tcl]]
 package ifneeded vc::fossil::ws          1.0 [list source [file join $dir fossil.tcl]]
 package ifneeded vc::fossil::import::cvs 1.0 [list source [file join $dir importcvs.tcl]]
 package ifneeded vc::tools::log          1.0 [list source [file join $dir log.tcl]]

Modified tools/lib/rcsparser.tcl from [ac06de305c] to [564a99c1a7].

@@ -13,19 +13,19 @@
 
 package require Tcl 8.4
 package require fileutil       ; # Tcllib (cat)
 package require vc::tools::log ; # User feedback
 
-namespace eval ::rcsparser {
+namespace eval ::vc::rcs::parser {
     vc::tools::log::system rcs
     namespace import ::vc::tools::log::progress
 }
 
 # -----------------------------------------------------------------------------
 # API
 
-# rcsparser::process file
+# vc::rcs::parser::process file
 #
 # Parses the rcs file and returns a dictionary containing the meta
 # data. The following keys are used
 #
 # Key		Meaning
@@ -45,11 +45,11 @@
 # The state 'dead' has special meaning, the user should know that.
 
 # -----------------------------------------------------------------------------
 # API Implementation
 
-proc ::rcsparser::process {path} {
+proc ::vc::rcs::parser::process {path} {
     set data [fileutil::cat -encoding binary $path]
     array set res {}
     set res(size) [file size $path]
     set res(done) 0
     set res(nsize) [string length $res(size)]
@@ -70,97 +70,97 @@
 }
 
 # -----------------------------------------------------------------------------
 # Internal - Recursive Descent functions implementing the syntax.
 
-proc ::rcsparser::Admin {} {
+proc ::vc::rcs::parser::Admin {} {
     upvar 1 data data res res
     Head ; Branch ; Access ; Symbols ; Locks ; Strict ; Comment ; Expand
     return
 }
 
-proc ::rcsparser::Deltas {} {
+proc ::vc::rcs::parser::Deltas {} {
     upvar 1 data data res res
     while {[Num 0]} { IsIdent ; Date ; Author ; State ; Branches ; NextRev }
     return
 }
 
-proc ::rcsparser::Description {} {
+proc ::vc::rcs::parser::Description {} {
     upvar 1 data data res res
     Literal desc
     String 1
     Def desc
     return
 }
 
-proc ::rcsparser::DeltaTexts {} {
+proc ::vc::rcs::parser::DeltaTexts {} {
     upvar 1 data data res res
     while {[Num 0]} { IsIdent ; Log ; Text }
     return
 }
 
-proc ::rcsparser::Head {} {
+proc ::vc::rcs::parser::Head {} {
     upvar 1 data data res res
     Literal head ; Num 1 ; Literal \;
     Def head
     return
 }
 
-proc ::rcsparser::Branch {} {
+proc ::vc::rcs::parser::Branch {} {
     upvar 1 data data res res
     if {![Literal branch 0]} return ; Num 1 ; Literal \;
     Def branch
     return
 }
 
-proc ::rcsparser::Access {} {
+proc ::vc::rcs::parser::Access {} {
     upvar 1 data data res res
     Literal access ; Literal \;
     return
 }
 
-proc ::rcsparser::Symbols {} {
+proc ::vc::rcs::parser::Symbols {} {
     upvar 1 data data res res
     Literal symbols
     while {[Ident]} { Num 1 ; Map symbol }
     Literal \;
     return
 }
 
-proc ::rcsparser::Locks {} {
+proc ::vc::rcs::parser::Locks {} {
     upvar 1 data data res res
     Literal locks
     while {[Ident]} { Num 1 ; Map lock }
     Literal \;
     return
 }
 
-proc ::rcsparser::Strict {} {
+proc ::vc::rcs::parser::Strict {} {
     upvar 1 data data res res
     if {![Literal strict 0]} return ; Literal \;
     return
 }
 
-proc ::rcsparser::Comment {} {
+proc ::vc::rcs::parser::Comment {} {
     upvar 1 data data res res
     if {![Literal comment 0]} return ;
     if {![String 0]} return ;
     Literal \;
     Def comment
     return
 }
 
-proc ::rcsparser::Expand {} {
+proc ::vc::rcs::parser::Expand {} {
     upvar 1 data data res res
     if {![Literal expand 0]} return ;
     if {![String 0]} return ;
     Literal \;
     Def expand
     return
 }
 
-proc ::rcsparser::Date {} {
+proc ::vc::rcs::parser::Date {} {
     upvar 1 data data res res
     Literal date ; Num 1 ; Literal \;
 
     foreach {yr mo dy h m s} [split $res(lastval) .] break
     if {$yr < 100} {incr yr 1900}
@@ -167,50 +167,50 @@
     set res(lastval) [join [list $yr $mo $dy $h $m $s] .]
     Map date
     return
 }
 
-proc ::rcsparser::Author {} {
+proc ::vc::rcs::parser::Author {} {
     upvar 1 data data res res
     Literal author ; Skip ; Literal \; ; Map author
     return
 }
 
-proc ::rcsparser::State {} {
+proc ::vc::rcs::parser::State {} {
     upvar 1 data data res res
     Literal state ; Skip ; Literal \; ; Map state
     return
 }
 
-proc ::rcsparser::Branches {} {
+proc ::vc::rcs::parser::Branches {} {
     upvar 1 data data res res
     Literal branches ; Skip ; Literal \;
     return
 }
 
-proc ::rcsparser::NextRev {} {
+proc ::vc::rcs::parser::NextRev {} {
     upvar 1 data data res res
     Literal next ; Skip ; Literal \; ; Map parent
     return
 }
 
-proc ::rcsparser::Log {} {
+proc ::vc::rcs::parser::Log {} {
     upvar 1 data data res res
     Literal log ; String 1 ; Map commit
     return
 }
 
-proc ::rcsparser::Text {} {
+proc ::vc::rcs::parser::Text {} {
     upvar 1 data data res res
     Literal text ; String 1
     return
 }
 
 # -----------------------------------------------------------------------------
 # Internal - Lexicographical commands and data aquisition preparation
 
-proc ::rcsparser::Ident {} {
+proc ::vc::rcs::parser::Ident {} {
     upvar 1 data data res res
 
     #puts I@?<[string range $data 0 10]...>
 
     if {[regexp -indices -- {^\s*;\s*} $data]} {
@@ -222,11 +222,11 @@
     Get $val ; IsIdent
     Next
     return 1
 }
 
-proc ::rcsparser::Literal {name {required 1}} {
+proc ::vc::rcs::parser::Literal {name {required 1}} {
     upvar 1 data data res res
     if {![regexp -indices -- "^\\s*$name\\s*" $data match]} {
 	if {$required} {
 	    return -code error "Expected '$name' @ '[string range $data 0 30]...'"
 	}
@@ -235,11 +235,11 @@
 
     Next
     return 1
 }
 
-proc ::rcsparser::String {{required 1}} {
+proc ::vc::rcs::parser::String {{required 1}} {
     upvar 1 data data res res
 
     if {![regexp -indices -- {^\s*@(([^@]*(@@)*)*)@\s*} $data match val]} {
 	if {$required} {
 	    return -code error "Expected string @ '[string range $data 0 30]...'"
@@ -250,11 +250,11 @@
     Get $val
     Next
     return 1
 }
 
-proc ::rcsparser::Num {required} {
+proc ::vc::rcs::parser::Num {required} {
     upvar 1 data data res res
     if {![regexp -indices -- {^\s*((\d|\.)+)\s*} $data match val]} {
 	if {$required} {
 	    return -code error "Expected id @ '[string range $data 0 30]...'"
 	}
@@ -264,11 +264,11 @@
     Get $val
     Next
     return 1
 }
 
-proc ::rcsparser::Skip {} {
+proc ::vc::rcs::parser::Skip {} {
     upvar 1 data data res res
     regexp -indices -- {^\s*([^;]*)\s*} $data match val
     Get $val
     Next
     return
@@ -275,51 +275,55 @@
 }
 
 # -----------------------------------------------------------------------------
 # Internal - Data aquisition
 
-proc ::rcsparser::Def {key} {
+proc ::vc::rcs::parser::Def {key} {
     upvar 1 data data res res
     set res($key) $res(lastval)
     unset res(lastval)
     return
 }
 
-proc ::rcsparser::Map {key} {
+proc ::vc::rcs::parser::Map {key} {
     upvar 1 data data res res
     lappend res($key) $res(id) $res(lastval)
     #puts Map($res(id))=($res(lastval))
     unset res(lastval)
     #unset res(id);#Keep id for additional mappings.
     return
 }
 
-proc ::rcsparser::IsIdent {} {
+proc ::vc::rcs::parser::IsIdent {} {
     upvar 1 data data res res
     set res(id) $res(lastval)
     unset res(lastval)
     return
 }
 
-proc ::rcsparser::Get {val} {
+proc ::vc::rcs::parser::Get {val} {
     upvar 1 data data res res
     foreach {s e} $val break
     set res(lastval) [string range $data $s $e]
     #puts G|$res(lastval)
     return
 }
 
-proc ::rcsparser::Next {} {
+proc ::vc::rcs::parser::Next {} {
     upvar 1 match match data data res res
     foreach {s e} $match break ; incr e
     set data [string range $data $e end]
     set res(done) [expr {$res(size) - [string length $data]}]
 
     progress 2 rcs $res(done) $res(size)
     return
 }
 
+namespace eval ::vc::rcs::parser {
+    namespace export process
+}
+
 # -----------------------------------------------------------------------------
 # Ready
 
-package provide rcsparser 1.0
+package provide vc::rcs::parser 1.0
 return