#Region - TimeStamp
; 2012-10-16 13:01:10   v 0.2
#EndRegion - TimeStamp

#include-once
Global Const $_OIx    = -2000      ; == On Index
Global Const $_FTo    = $_OIx +1   ; == From (Index) To (Index)
Global Const $_FSTo   = $_OIx +2   ; == From Start To (Index)
Global Const $_FToE   = $_OIx +3   ; == From (Index) To End
Global Const $_PFR    = $_OIx +4   ; == (Char At) Position From Right
Global Const $_ChR    = $_OIx +5   ; == (Number) Chars Right
Global Const $_WoChR  = $_OIx +6   ; == Without (Number) Chars Right

;===============================================================================
; Function Name....: _StrPython
; Description......: Stringbearbeitung mit Pythonsyntax
; Parameter(s).....: $sString  der zu bearbeitende String
; .................: $sOp   entweder Maske oder Operator Variable:
; .................:           Maske, die die Operation definiert, Index ist 0-basiert
; .................:           Maske  OperatorVar.
; .................:             i      $_OIx      Zeichen an Index (i)
; .................:             i:j    $_FTo      String von Index (i) bis Index (j) , inkl. (i) / exkl. (j)
; .................:             :i     $_FSTo     String ab Anfang bis Index (i)     , exkl. (i)
; .................:             i:     $_FToE     String ab Index (i) bis Ende       , inkl. (i)
; .................:             -n     $_PFR      das n-te Zeichen von rechts
; .................:             -n:    $_ChR      die letzten n Zeichen
; .................:             :-n    $_WoChR    alles außer den n letzten Zeichen
; .................: $iVal  (nur bei Verwendung OperatorVar.) der (Von) Index
; .................: $iTo   (nur bei Verwendung OperatorVar.) der Bis Index
; Return Value(s)..: Erfolg Das Ergebnis der Bearbeitung
; .................: Fehler '' und @error 1 = Von-Bis-Operation ohne Bis-Index
; .................:               @error 2 = kein gültiger Operationstyp
; Author(s)........: BugFix ( bugfix@autoit.de )
;===============================================================================
Func _StrPython($sString, $sOp, $iVal='', $iTo='')
	Local $sMask = $sOp
	If $iVal <> '' Then
		Switch $sOp
			Case $_OIx    ; == On Index
				$sMask = $iVal
			Case $_FTo    ; == From To
				If $iTo = '' Then Return SetError(1,0,'')
				$sMask = $iVal & ':' & $iTo
			Case $_FSTo   ; == From Start To
				$sMask = ':' & $iVal
			Case $_FToE   ; == From To End
				$sMask = $iVal & ':'
			Case $_PFR    ; == Position From Right
				$sMask = '-' & $iVal
			Case $_ChR    ; == Chars Right
				$sMask = '-' & $iVal & ':'
			Case $_WoChR  ; == Without Chars Right
				$sMask = ':-' & $iVal
			Case Else
				Return SetError(2,0,'')
		EndSwitch
	EndIf
    Local $aMask = StringSplit($sMask, ':', 2)
    If Not StringInStr($sMask, ':') Then ; == i, -n
        If $sMask < 0 Then Return StringMid($sString, StringLen($sString)+$sMask+1, 1) ; == -n
        Return StringMid($sString, $sMask+1, 1)                                        ; == i
    ElseIf StringLeft($sMask, 1) = ':' Then ; == :i, :-n
        If $aMask[1] < 0 Then Return StringTrimRight($sString, Abs($aMask[1]))         ; == :-n
        Return StringLeft($sString, $aMask[1])                                         ; == :i
    ElseIf StringRight($sMask, 1) = ':' Then ; == i:, -n:
        If $aMask[0] < 0 Then Return StringRight($sString, Abs($aMask[0]))             ; == -n:
        Return StringMid($sString, $aMask[0]+1)                                        ; == i:
    Else
        Return StringMid($sString, $aMask[0]+1, $aMask[1]-$aMask[0])                   ; == i:j
    EndIf
EndFunc  ;==>_StrPython

