StrTrimNewLines: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
(Version: 2.0.)
 
m (Corrected link to LogicLib header file.)
Line 3: Line 3:
== Description ==
== Description ==


'''Requires:''' [[LogicLib]].
'''Requires:''' [[LogicLib header file]].


'''Version:''' 2.0.1.
'''Version:''' 2.0.1.

Revision as of 06:19, 3 December 2005

Author: deguix (talk, contrib)


Description

Requires: LogicLib header file.

Version: 2.0.1.

This function removes unnecessary new lines at end of a string.

How To Use

Syntax

${StrTrimNewLines} "ResultVar" "String"

or

Push "String"
Call StrTrimNewLines
Pop "ResultVar"

Parameters

ResultVar
Variable where the string without the new line characters at the end is returned. If there is no new line characters, the return value is the same as specified in String parameter.
String
String where the new line characters at its end are removed.

Example

${StrTrimNewLines} $0 "This is just an example$\r$\n$\r$\n"
;$0 = "This is just an example"

Function Code

!define StrTrimNewLines "!insertmacro StrTrimNewLines"
 
!macro StrTrimNewLines ResultVar String
  Push "${String}"
  Call StrTrimNewLines
  Pop "${ResultVar}"
!macroend
 
Function StrTrimNewLines
/*After this point:
  ------------------------------------------
  $R0 = String (input)
  $R1 = TrimCounter (temp)
  $R2 = Temp (temp)*/
 
  ;Get input from user
  Exch $R0
  Push $R1
  Push $R2
 
  ;Initialize trim counter
  StrCpy $R1 0
 
  loop:
  ;Subtract to get "String"'s last characters
  IntOp $R1 $R1 - 1
 
  ;Verify if they are either $\r or $\n
  StrCpy $R2 $R0 1 $R1
  ${If} $R2 == `$\r`
  ${OrIf} $R2 == `$\n`
    Goto loop
  ${EndIf}
 
  ;Trim characters (if needed)
  IntOp $R1 $R1 + 1
  ${If} $R1 < 0
    StrCpy $R0 $R0 $R1
  ${EndIf}
 
/*After this point:
  ------------------------------------------
  $R0 = ResultVar (output)*/
 
  ;Return output to user
  Pop $R2
  Pop $R1
  Exch $R0
FunctionEnd

Credits

Version 2.x - Diego Pedroso (deguix).
Version 1.x - Ximon Eighteen (sunjammer) / Diego Pedroso (deguix).