clea >>= JustLine("Hallo\Pa\Nex\men.34", "DOS Separators") >>= JustLine("Hallo/Pa/Nex/men.34", "DOS Separators") >>= JustLine("Hallo/Pa\Nex/men.34", "DOS and Unix Separators") >>= JustLine("Hallo/Pa\.\\..//../Nex/men.34", "Dots, DOS and Unix Separators") >>= JustLine("Hallo/Pa\Nex/men.34/", "Trailing Unix Separator") >>= JustLine("Hallo/Pa\Nex/men.34\", "Trailing DOS Separator") >>= JustLine("Hallo/Pa\Nex/me:n.34", ": put into Stem") >>= JustLine("Hallo/Pa\Nex/me:n.3:4", ": put into Stem and Ext") >>= JustLine("C://Hallo/Pa\Nex/me:n.3:4", ": put into Stem and Ext") >>= JustLine("C:\Hallo/Pa\Nex/me:n.3:4", "JustDrive Test and : put into Stem and Ext") >>= JustLine("C:me:n.3:4", "No Slash: Path NOT filled") >>= JustLine(":me:n.3:4", "Drive and Path NOT filled") >>= JustLine("::me:n.3:4", "Drive filled and Path NOT filled") >>= JustLine("/:me:n.3:4", "Drive filled and Path NOT filled") >>= JustLine("\:me:n.3:4", "Drive filled and Path NOT filled") >>= JustLine(":\me:n.3:4", "Drive not filled and Path NOT filled") >>= JustLine(":\me:n.3:4.", "Drive not filled and Path NOT filled") >>= JustLine("Hydra://Hallo/Pa\Nex/me:n.3:4", ": put into Stem and Ext") >> >> >>function JustLine(tcTest, tcComment) >> do case >> case !addbs(m.tcTest) == AddBs_E(m.tcTest) >> = JustShowAll(m.tcTest, "Failed AddBs " + m.tcComment) >> ? AddBs_E(m.tcTest) >> case !justdrive(m.tcTest) == JustDrive_E(m.tcTest) >> = JustShowAll(m.tcTest, "Failed JustDrive " + m.tcComment) >> ? JustDrive_E(m.tcTest) >> case !justpath(m.tcTest) == JustPath_E(m.tcTest) >> = JustShowAll(m.tcTest, "Failed JustPath " + m.tcComment) >> ? JustPath_E(m.tcTest) >> case !justfname(m.tcTest) == JustFName_E(m.tcTest) >> set step on >> = JustShowAll(m.tcTest, "Failed JustFName " + m.tcComment) >> ? JustFName_E(m.tcTest) >> case !juststem(m.tcTest) == JustStem_E(m.tcTest) >> = JustShowAll(m.tcTest, "Failed JustStem " + m.tcComment) >> ? JustStem_E(m.tcTest) >> case !justext(m.tcTest) == JustExt_E(m.tcTest) >> = JustShowAll(m.tcTest, "Failed JustExt " + m.tcComment) >> ? JustExt_E(m.tcTest) >> otherwise >> ? "Ok" , m.tcComment >> * = JustShowAll(m.tcTest, "ok " + m.tcComment) >> endcase >> >>function JustShowAll(tcTest, tcComment) >> ? >> ? tcTest >> ? tcComment >> ? "Drive:", justdrive(m.tcTest) >> ? "PAth :", justpath(m.tcTest) >> ? "FNAme:", justfname(m.tcTest) >> ? "Stem :", juststem(m.tcTest) >> ? "Ext :", justext(m.tcTest) >> >>function AddBs_E(tcString) >> return iif(right(m.tcString,1)=="\", m.tcString, m.tcString+"\") >> >>function JustDrive_E(tcString) >> return iif (substr(m.tcString,2,1)==":", left(m.tcString, 2), "") >> >>function JustPath_E(tcString) >> local lnLAstSlash >> lnLAstSlash = max(rat("/",m.tcString), rat("\",m.tcString)) >> return icase( m.lnLAstSlash=0, ""; >> , m.lnLAstSlash=1, left(m.tcString, 1); >> , left(m.tcString, lnLAstSlash-1)) >> >>function JustFName_E(tcString) >> local lnDivider >> lnDivider = max(rat("/",m.tcString), rat("\",m.tcString)) >> do case >> case m.lnDivider=1 >> RETURN JustFName_E_DoubDot(m.tcString) >> case m.lnDivider>1 >> return substr(m.tcString,m.lnDivider+1) >> otherwise >> RETURN JustFName_E_DoubDot(m.tcString) >> endcase >> >>function JustFName_E_DoubDot(tcString) >> if substr(m.tcString, 2, 1) ==":" >> if len(m.tcString)>2 >> RETURN substr(m.tcString, 3) >> else >> return "" >> endif >> else >> return m.tcString >> endif >> >>function JustStem_E(tcString) >> local lcFNAme, lnLastDot >> lcFNAme = JustFName_E(m.tcString) >> lnLastDot = rat(".", m.lcFNAme) >> return iif(m.lnLastDot=0, m.lcFNAme, left(m.lcFNAme, m.lnLastDot-1)) >> >>function JustExt_E(tcString) >> local lcFNAme, lnLastDot >> lcFNAme = JustFName_E(m.tcString) >> lnLastDot = rat(".", m.lcFNAme) >> return iif(m.lnLastDot=0 or m.lnLastDot=len(m.lcFNAme), "", subst(m.lcFNAme, m.lnLastDot+1))