faqts : Computers : Programming : Languages : Tse : Block

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

Entry

TSE: Block: How to search/replace in a multiline block, by wrapping it to 1 line with separators?

Nov 12th, 2006 11:06
Knud van Eeden,


----------------------------------------------------------------------
--- Knud van Eeden --- 12 November 2006 - 06:54 pm -------------------

TSE: Block: How to search/replace in a multiline block, by wrapping it 
to 1 line with separators?

===

Method: Wrap the multi-line block to one single line.

The maximum line length of the line must be less than
16000 characters in TSE v4.x.
Or thus the block may not contain more than 16000
characters.

Put separators at begin of each line.
Then wrap the block to 1 single line.
Then do your search/replace (or other actions) in this
1 line.
Then wrap the 1 line back to the original block.

===

Search in multi-line block:

--- cut here: begin --------------------------------------------------

FORWARD PROC Main()
FORWARD PROC PROCBlockChange_SeparatorWrapToLine1Simple( STRING s1 )

FORWARD PROC PROCBlockSearchLineMultiSeparatorWrapToLine1Simple( 
STRING s1, STRING s2, STRING s3 )

FORWARD PROC PROCLineChange_SeparatorWrapToBlock1Simple( STRING s1 )

// --- MAIN --- //

PROC Main()

 PROCBlockSearchLineMultiSeparatorWrapToLine1Simple( "^{.@}
\c$", "nglx", "\#\#\#" )
END

<F12> Main()

// --- LIBRARY --- //

// library: block: search: line: multi: separator: wrap: to: line1: 
simple (filenamemacro=searblls.s) [kn, ri, su, 12-11-2006 18:45:15]

PROC PROCBlockSearchLineMultiSeparatorWrapToLine1Simple( STRING 
searchS, STRING searchOptionS, STRING separatorS )

 PROCBlockChange_SeparatorWrapToLine1Simple( separatorS )

 IF LFind( searchS, searchOptionS )
  Warn( "found in multi-line block" )
 ENDIF

 UpdateDisplay() // possibly remove this line, only present for 
demonstration purposes

 WaitForKeyPressed( 10000 ) // possibly remove this line, only present 
for demonstration purposes

 PROCLineChange_SeparatorWrapToBlock1Simple( separatorS )
END

// library: block: change: separator: wrap: to: line1 
(filenamemacro=chanbltm.s) [kn, ri, su, 12-11-2006 04:46:24]

PROC PROCBlockChange_SeparatorWrapToLine1Simple( STRING s )
 INTEGER rightMarginOldI = Query( RightMargin )
 INTEGER rightMarginNewI = MAXLINELEN
 IF NOT IsBlockInCurrFile()
  Warn( "please mark a block" )
 ENDIF
 PushPosition()
 LReplace( "^", s, "glnx")
 Set( RightMargin, rightMarginNewI )
 GotoBlockBegin()
 ExecMacro( "wrappara" )
 Set( RightMargin, rightMarginOldI )
 PopPosition()
END

// library: line: change: separator: wrap: to: block1 
(filenamemacro=chanbltl.s) [kn, ri, su, 12-11-2006 03:35:10]

PROC PROCLineChange_SeparatorWrapToBlock1Simple( STRING s )
 IF NOT IsBlockInCurrFile()
  Warn( "please mark a block" )
 ENDIF
 PushPosition()
 LReplace( s, "", "glnx1")
 LReplace( s, "\n", "glnx")
 PopPosition()
END

--- cut here: end ----------------------------------------------------


Replace in multi-line block:

--- cut here: begin --------------------------------------------------

FORWARD PROC Main()
FORWARD PROC PROCBlockChange_SeparatorWrapToLine1Simple( STRING s1 )

FORWARD PROC PROCBlockReplaceLineMultiSeparatorWrapToLine1Simple( 
STRING s1, STRING s2, STRING s3, STRING s4 )

FORWARD PROC PROCLineChange_SeparatorWrapToBlock1Simple( STRING s1 )

// --- MAIN --- //

PROC Main()

 PROCBlockReplaceLineMultiSeparatorWrapToLine1Simple( "{^}{.@}\c
{$}", "\1Replaced line content for testing\3", "nglx", "\#\#\#" )
END

<F12> Main()

// --- LIBRARY --- //

// library: block: replace: line: multi: separator: wrap: to: line1: 
simple (filenamemacro=replblls.s) [kn, ri, su, 12-11-2006 18:47:07]

PROC PROCBlockReplaceLineMultiSeparatorWrapToLine1Simple( STRING 
searchS, STRING replaceS, STRING searchOptionS, STRING separatorS )

 PROCBlockChange_SeparatorWrapToLine1Simple( separatorS )

 IF LReplace( searchS, replaceS, searchOptionS )
  Warn( "Replaced in multi-line block" )
 ENDIF

 UpdateDisplay() // possibly remove this line, only present for 
demonstration purposes

 WaitForKeyPressed( 10000 ) // possibly remove this line, only present 
for demonstration purposes

 PROCLineChange_SeparatorWrapToBlock1Simple( separatorS )
END

// library: block: change: separator: wrap: to: line1 
(filenamemacro=chanbltm.s) [kn, ri, su, 12-11-2006 04:46:24]

PROC PROCBlockChange_SeparatorWrapToLine1Simple( STRING s )
 INTEGER rightMarginOldI = Query( RightMargin )
 INTEGER rightMarginNewI = MAXLINELEN
 IF NOT IsBlockInCurrFile()
  Warn( "please mark a block" )
 ENDIF
 PushPosition()
 LReplace( "^", s, "glnx")
 Set( RightMargin, rightMarginNewI )
 GotoBlockBegin()
 ExecMacro( "wrappara" )
 Set( RightMargin, rightMarginOldI )
 PopPosition()
END

// library: line: change: separator: wrap: to: block1 
(filenamemacro=chanbltl.s) [kn, ri, su, 12-11-2006 03:35:10]

PROC PROCLineChange_SeparatorWrapToBlock1Simple( STRING s )
 IF NOT IsBlockInCurrFile()
  Warn( "please mark a block" )
 ENDIF
 PushPosition()
 LReplace( s, "", "glnx1")
 LReplace( s, "\n", "glnx")
 PopPosition()
END

--- cut here: end ----------------------------------------------------

===

Internet: see also:

---

TSE: Block: Wrap: How to wrap a block to 1 line, with separator 
between the lines?
http://www.faqts.com/knowledge_base/view.phtml/aid/42971/fid/898

---

TSE: Block: Line: Wrap: How to wrap 1 line, with separators in 
between, back to the original block?
http://www.faqts.com/knowledge_base/view.phtml/aid/42981/fid/898

---

TSE: Block: Character: Count: Total: How to count the total amount of 
characters in a block?
http://www.faqts.com/knowledge_base/view.phtml/aid/42969/fid/898

----------------------------------------------------------------------