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
- branch=trunk inherited from [a28c83647d]
- sym-trunk inherited from [a28c83647d]
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