Example Script [Not working]: Insert Line Numbers

Started by Stefan, September 27, 2009, 08:52:59 PM

Previous topic - Next topic

Stefan


Hi all.

To see what is possible by an script
and what is needed from the editor script engine
i post here some test scripts.

Please note that this scripts are NOT written for HippoEDIT right now
and that HippoEDIT didn't even have an scripting support implemented right now.
(script will be converted once HippoEDIT scripting support is implemented)

Hint:
* i am not an programmer,
* that script may not be well designed (mostly i am have less interest if my script works "fair to middling"
    to clean it up, because of i had to do other things is more important mostly)
* test my scripts with test files only
* i give no guarantee that your files are not deleted
   and that your computer will not gonna implode.

* the scripts are free to use and to modify. But please respect the copyright mentions inside the scripts.

(If YOU want to post scripts too, please add an disclaimer as mine too.
You could even use mine for non-working scripts)






Example Script [Not working]: Insert Line Numbers

I have written(say tested) a few of this scripts... i hope this was the best out of them.


' VB Script Document 
'based on:
' http://forum.pspad.com/read.php?2,40623  ' Posted by: grigri | Date: 05/21/2007 14:05

Const MODULE_NAME = "StS07InsertLineNumbers-adv_v002"  'this name must be unique !!!
Const MODULE_VER = "0.1"
Const MODULE_TITLE = "Insert Line-Numbers"    'as displayed in PSPad menu

Sub Init
    addMenuItem "Insert  LineNumbers   relative to selection v002",  MODULE_TITLE, "InsertLineNumbersRelative"
    addMenuItem "Insert  LineNumbers   absolute to lines v002",      MODULE_TITLE, "InsertLineNumbersAbsolute"
    addMenuItem "&Open this script file to edit",               MODULE_TITLE, "openThisScriptFile"
End Sub
'====================================================================='

' This script counts the lines selected and insert numbers in front of this lines.
' This numbers are relative to the selection, not absolute to the hole file.
' This script could be nifty to insert line numbers first,
' then do an sorting by an column behind this line numbers (even maybe remove dublicate lines too)
' and sort back by this line numbers, then remove this line numbers.


Sub InsertLineNumbersRelative()
Dim editor, Items, Numbers, StartNumber, EndNumber, Increment, Digits, Postfix, Prefix, mySeparator, mySepHint
    Set editor = newEditor()
    editor.assignActiveEditor
    text = editor.selText()
    If Text = "" Then
      MsgBox "Please do a selection first.",, MODULE_NAME
    End If
    lines = Split(Text, vbCrlf)
    output = ""
    For i = 0 To UBound(lines)
      LineNumber = i +1
      LineNumberLen = CStr(Len(LineNumber))
      LineCountLen = CStr(Len(UBound(lines)))
      'msgbox "LineNumber: " & LineNumber & "  - Len LineNumber: " & LineNumberLen & "  - Len lines

Count: " & LineCountLen
          While LineNumberLen < LineCountLen
            LineNumber = "0" & LineNumber
            LineNumberLen = CStr(Len(LineNumber))
          Wend
          If i <  UBound(lines)  Then
            temp = LineNumber & " " & lines(i) & vbCrlf
          Else
            temp = LineNumber & " " & lines(i)
          End If
      output = output &  temp
    Next
    editor.selText Output
End Sub

'=============================================================='

Sub InsertLineNumbersAbsolute()
Dim editor, Items, Numbers

        Set editor = newEditor()
    editor.assignActiveEditor   
        text = editor.selText()
    If Text = "" Then
      MsgBox "Please do a selection first.",, MODULE_NAME
    End If
    lines = Split(Text, vbCrlf)
    vEndPos = editor.caretY
    vStartPos = vEndPos - UBound(lines)   
    output = ""
    'LineCountLen = CStr(Len(UBound(lines)))
    'msgbox "End pos: " & vEndPos & " - " & "LinesCount: " & UBound(lines) & " = " &  "Start Pos: " & vStartPos
   
' TEST
'
' intLen = Len(strHex)
' If intLen < 8 Then
'  Do Until intLen = 8
'    strHex = "0" & strHex
'    intLen = Len(strHex)
'  Loop
' End If

       
    For i = 0 To UBound(lines) 
      LineNumber = vStartPos +i
      'LineNumberLen = CStr(Len(LineNumber))

' ist die Zeilenummer zweistellig? 10,11,12..99 ----- und nur für Zahlen kleiner 10: 1,2,3...9
        If vEndPos > 9 AND vEndPos < 100 AND LineNumber < 10 Then
            LineNumber = "0" & LineNumber
        End If

' ist die Zeilenummer dreistellig? 100,301,428..999         
        If vEndPos > 99 AND vEndPos < 1000 Then
        If LineNumber < 10 Then '------- und nur für Zahlen kleiner 10: 1,2,3...9
            LineNumber = "00" & LineNumber
        ElseIf LineNumber < 100 Then '------- und nur für Zahlen kleiner 100: 11,20,35,...99
            LineNumber = "0" & LineNumber
        End If
        End If
       

' ist die Zeilenummer vierstellig? 1000,3001,4280..9999         
        If vEndPos > 999 AND vEndPos < 10000 Then
        If LineNumber < 10 Then '------- und nur für Zahlen kleiner 10: 1,2,3...9
            LineNumber = "000" & LineNumber
        ElseIf LineNumber < 100 Then '------- und nur für Zahlen kleiner 100: 11,20,35,...99
            LineNumber = "00" & LineNumber
        ElseIf LineNumber < 1000 Then '------- und nur für Zahlen kleiner 1000: 110,200,350,...999
            LineNumber = "0" & LineNumber
        End If
        End If

' ist die Zeilenummer fuenfstellig? 10.000,  30.010,  42.800..99.999         
        If vEndPos > 9999 AND vEndPos < 100000 Then
        If LineNumber < 10 Then
            LineNumber = "0000" & LineNumber
        ElseIf LineNumber < 100 Then
            LineNumber = "000" & LineNumber
        ElseIf LineNumber < 1000 Then
            LineNumber = "00" & LineNumber
        ElseIf LineNumber < 10000 Then
            LineNumber = "0" & LineNumber
        End If
        End If
                 
' ist die Zeilenummer sechsstellig? 100.000,  300.010,  420.800..999.999         
        If vEndPos > 99999 AND vEndPos < 1000000 Then
        If LineNumber < 10 Then
            LineNumber = "00000" & LineNumber
        ElseIf LineNumber < 100 Then
            LineNumber = "0000" & LineNumber
        ElseIf LineNumber < 1000 Then
            LineNumber = "000" & LineNumber
        ElseIf LineNumber < 10000 Then
            LineNumber = "00" & LineNumber
        ElseIf LineNumber < 100000 Then
            LineNumber = "0" & LineNumber
        End If
        End If
       
          If i <  UBound(lines)  Then
            temp = LineNumber & " " & lines(i) & vbCrlf
          Else
            temp = LineNumber & " " & lines(i)
          End If
      output = output &  temp
    Next
   
       
    editor.selText Output   
   
    If editor.caretY > vEndPos Then
        Set WshShell = WScript.CreateObject ("WScript.Shell")
            'Anzeige = WshShell.Popup(Text[,Wait] [,Titel] [,Schaltflächen])
            Anzeige = WshShell.Popup("You have selected the text from down to top." & vbCrlf _
            & "Therefor this result my not be expected?" & vbCrlf & vbCrlf _
            & "If so then use undo and select from top to down.",15, MODULE_TITLE)
        Set WshShell = Nothing
    End If
End Sub

'###########################################################

Sub openThisScriptFile
    Set obj1 = newEditor()
    obj1.openFile(moduleFileName(module_name))
End Sub



Stefan, HippoEDIT beta tester 
HippoEDIT - the editor programmers wants to code thyself when they are dreaming.        -Don't just edit. HippoEDIT!-