Jump to content

Range/interval parser (Microsoft Word printing-like)


Jefrey
 Share

Recommended Posts

This function parser printing-like intervals (like "1,2,3-5") and returns an array with every page number as item.

Ex.: "1,2,3-5" will return an array which 0th element is "5" (page count) and the items are 1, 2, 3, 4 and 5. The array is given in the order the $interval parameter is set, and reverse intervals are also supported (e.g.: "8,4,7-5" will return items 8, 4, 7, 6, 5 and 0th element is 5).

If it fails, it will return False and set error to non-zero (invalid string).

#cs
  Range parser
  This function parser printing-like intervals (like "1,2,3-5") and returns an array with every page number as item.
  @author Jefrey S. Santos <jefrey[at]jefrey.ml>
#ce

Func rangeparser($interval)
    $interval = StringReplace($interval, " ", "")
    If Not StringRegExp($interval, "([0-9\-\,])") Then Return SetError(1, 0, False)
    $interval = StringSplit($interval, ",")
    Dim $return[1]
    For $i = 1 To $interval[0]
        If StringInStr($interval[$i], "-") Then
            $split = StringSplit($interval[$i], "-")
            If $split[0] <> 2 Then Return SetError(1, 0, False)
            If $split[1] = $split[2] Then
                ReDim $return[UBound($return)+1]
                $return[UBound($return)-1] = $split[1]
            Else
                If $split[1] < $split[2] Then
                    $step = +1
                Else
                    $step = -1
                EndIf
                For $j = $split[1] To $split[2] Step $step
                    ReDim $return[UBound($return)+1]
                    $return[UBound($return)-1] = $j
                Next
            EndIf
        Else
            ReDim $return[UBound($return)+1]
            $return[UBound($return)-1] = $interval[$i]
        EndIf
    Next
    $return[0] = UBound($return)-1
    Return $return
EndFunc
Edited by Jefrey

My stuff

Spoiler

My UDFs  _AuThread multithreading emulation for AutoIt · _ExtInputBox an inputbox with multiple inputs and more features · forceUTF8 fix strings encoding without knowing its original charset · JSONgen JSON generator · _TCPServer UDF multi-client and multi-task (run on background) event-based TCP server easy to do · _TCPClient_UDF multi-server and multi-task (runs on background) event-based TCP client easy to do · ParseURL and ParseStr functions ported from PHP · _CmdLine UDF easily parse command line parameters, keys or flags · AutoPHP Create documents (bills, incomes) from HTML by sending variables/arrays from AutoIt to PHP · (Un)Serialize Convert arrays and data into a storable string (PHP compatible) · RTTL Plays and exports to MP3 Nokia-format monophonic ringtones (for very old cellphones) · I18n library Simple and easy to use localization library · Scripting.Dictionary OOP and OOP-like approach · Buffer/stack limit arrays to N items by removing the last one once the limit is reached · NGBioAPI UDF to work with Nitgen fingerprint readers · Serial/Licensing system require license key based on unique machine ID from your users · HTTP a simple WinHTTP library that allows GET, POST and file uploads · Thread true AutoIt threads (under-dev) · RC4 RC4 encryption compatible with PHP and JS ·  storage.au3 localStorage and sessionStorage for AutoIt Classes _WKHtmlToX uses wkhtmlto* to convert HTML files and webpages into PDF or images (jpg, bmp, gif, png...) Snippets _Word_DocFindReplaceByLongText replace strings using Word UDF with strings longer than 255 characters (MSWord limit) rangeparser parser for printing-like pages interval (e.g.: "1,2,3-5") EnvParser parse strings/paths with environment variables and get full path GUICtrlStaticMarquee static text scrolling Random stuff Super Mario beep sound your ears will hurt

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...