Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Move the position of the multiline string
#10
You are right 

Works well, 

The code can work in almost any situation, thanks again

I want to define a subfunction that does not return a value from the result

macro M2 is successful, macro M1 is not successful, how to fix it?

Macro M2
 
Code:
Copy      Help
out
_s=
;using namespace Spire.Doc;
;using namespace Spire.Doc.Documents;
;
;function Main([string[]]$args)
;{
;,function D($p1)
;,{
;,,'{D}'
;,}
;}
;function A($p1, $p2)
;{
;,,'{A}'
;}
;
;function B($p1)
;{
;,,'{B}'
;}
;function C()
;{
;,,'{C}'
;}

out sub.mvmain(_s)

#sub mvmain
function'str str's2
_s=s2
str ss s; int iii i ii lines ec sline
foreach s _s
,if(s.beg("function Main"))
,,sline=i
,,ec=1
,,ii+1
,if(ii=1)
,,if(ec =0) break
,,ss.addline(s -1)
,,lines+1
,,if(findc(s '{')<>-1)
,,,iii+1
,,if(findc(s '}')<>-1)
,,,iii-1
,,,if iii=0
,,,,ec=0
,i+1
_s.RemoveLineN(sline lines)
ss- "[]"; ss.rtrim
_s.addline(ss -1)
_s.replacerx("(?:(?:(?!\n)\s)*\n){2,}" "[][]");;replace multiple blank lines to 1
ret _s
;out _s


Macro M1
Code:
Copy      Help
out
_s=
;using namespace Spire.Doc;
;using namespace Spire.Doc.Documents;
;
;function Main([string[]]$args)
;{
;,function D($p1)
;,{
;,,'{D}'
;,}
;}
;function A($p1, $p2)
;{
;,,'{A}'
;}
;
;function B($p1)
;{
;,,'{B}'
;}
;function C()
;{
;,,'{C}'
;}

sub.mvmain(_s)

out _s

#sub mvmain
function &s2
_s=s2
str ss s; int iii i ii lines ec sline
foreach s _s
,if(s.beg("function Main"))
,,sline=i
,,ec=1
,,ii+1
,if(ii=1)
,,if(ec =0) break
,,ss.addline(s -1)
,,lines+1
,,if(findc(s '{')<>-1)
,,,iii+1
,,if(findc(s '}')<>-1)
,,,iii-1
,,,if iii=0
,,,,ec=0
,i+1
_s.RemoveLineN(sline lines)
ss- "[]"; ss.rtrim
_s.addline(ss -1)
_s.replacerx("(?:(?:(?!\n)\s)*\n){2,}" "[][]");;replace multiple blank lines to 1
s2=_s
;out _s


Messages In This Thread
RE: Move the position of the multiline string - by Davider - 10-23-2022, 02:04 AM

Forum Jump:


Users browsing this thread: 1 Guest(s)