|
blarg Beginner
Joined: 14 Jul 2015 Posts: 15
|
Posted: Tue Jul 14, 2015 9:18 pm
Help with capturing and parsing a msdp variable |
First of all, I'm a novice. I have a lot of msdp-related stuff working on cmud, but there's one that's giving me a lot of problems.
One of the msdp variables coming in contains multiple lines and I'd like to write it to a window. Here's a basic look at the type of thing that's coming in:
Code: |
\n\r( )==========================================================================( )\n\r
| |\n\r
| |\n\r
| |\n\r
| |\n\r
( )--------------------------------------------------------------------------( )\n\r
|
The number of lines sometimes changes, but I can't get it to work even in a scenario where the lines is constantly 18. I've tried a few different things, with the pattern as SCROLL (.*) and the one in the code below. There's probably a much better way to go about it. Any help would be appreciated.
Code: |
<trigger type="Telnet" param="69" priority="14520" regex="true" newline="false" prompt="true" enabled="false" id="506">
<pattern>SCROLL(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]+(.*)[\n\r]</pattern>
<value>parseddesc.1 = %1
parseddesc.2 = %2
parseddesc.3 = %3
parseddesc.4 = %4
parseddesc.5 = %5
parseddesc.6 = %6
parseddesc.7 = %7
parseddesc.8 = %8
parseddesc.9 = %9
parseddesc.10 = %10
parseddesc.11 = %11
parseddesc.12 = %12
parseddesc.13 = %13
parseddesc.14 = %14
parseddesc.15 = %15
parseddesc.16 = %16
parseddesc.17 = %17
parseddesc.18 = %18
#clr scroll
#window scroll {%crlf @parseddesc.1 %crlf @parseddesc.2 %crlf @parseddesc.3 %crlf @parseddesc.4 %crlf @parseddesc.5 %crlf @parseddesc.6 %crlf @parseddesc.7 %crlf @parseddesc.8 %crlf @parseddesc.9 %crlf @parseddesc.10 %crlf @parseddesc.11 %crlf @parseddesc.12 %crlf @parseddesc.13 %crlf @parseddesc.14 @parseddesc.15 %crlf @parseddesc.16 %crlf @parseddesc.17 %crlf @parseddesc.18}</value>
</trigger>
|
|
|
|
|
shalimar GURU
Joined: 04 Aug 2002 Posts: 4691 Location: Pensacola, FL, USA
|
Posted: Tue Jul 14, 2015 10:08 pm |
You could make use of a #STWIN object to hold the data, which is displayed in the status window.
|
|
_________________ Discord: Shalimarwildcat |
|
|
|
Vijilante SubAdmin
Joined: 18 Nov 2001 Posts: 5182
|
Posted: Tue Jul 14, 2015 10:08 pm |
This should work, but I didn't test the subregex.
Code: |
<trigger type="Telnet" param="69" priority="14520" regex="true" newline="false" prompt="true" enabled="false" id="506">
<pattern>SCROLL(.*)</pattern>
<value>parsedesc=%subregex(%1,"([^\n\r]*)(?:(\n\r)|\Z)","""\1""(?(2)\|)")
#CLR scroll
#WINDOW scroll {%1}</value>
</trigger> |
|
|
_________________ The only good questions are the ones we have never answered before.
Search the Forums |
|
|
|
blarg Beginner
Joined: 14 Jul 2015 Posts: 15
|
Posted: Tue Jul 14, 2015 10:52 pm |
Thanks for the quick replies. I tried the xml trigger, but all I get in the window and assigned to parsedesc is an upsidedown L in quotes
|
|
|
|
blarg Beginner
Joined: 14 Jul 2015 Posts: 15
|
Posted: Thu Jul 16, 2015 8:53 pm |
I had the mud remove the leading \n\r from the variable so it's coming in like this:
Code: |
( )==========================================================================( )\n\r
| |\n\r
| |\n\r
| |\n\r
| |\n\r
( )--------------------------------------------------------------------------( )\n\r |
now I get this assigned to the parsedesc variable, but there's a character that looks like an upside down L at the beginning of the line:
Code: |
"( )==========================================================================( )"
It looks like it's still not handling the \n\r that are coming in properly. Any ideas? |
|
|
|
|
blarg Beginner
Joined: 14 Jul 2015 Posts: 15
|
Posted: Sun Jul 19, 2015 9:15 pm |
By the way, I tried holding the data with #STWIN like shalimar suggested, but no dice. It seems like a really simple problem and I just can't figure it out.
I also tried modifying what Vijilante suggested but nothing I try works. |
|
|
|
Vijilante SubAdmin
Joined: 18 Nov 2001 Posts: 5182
|
Posted: Mon Jul 20, 2015 3:24 am |
In order to figure this out you will have to try simpler and simpler things. Let's start with this:
Code: |
<trigger type="Telnet" param="69" priority="14520" regex="true" newline="false" prompt="true" enabled="false" id="506">
<pattern>SCROLL(.*)</pattern>
<value>parsedesc=%1
#CLR scroll
#WINDOW scroll {%1}</value>
</trigger> |
Does that put that correct information into the window and into the variable? Can you use the #DEBUGFILE command to capture the data packets containing the data you want to parse? It would help me to clearly see the data that comes in and might allow me to test different triggers. |
|
_________________ The only good questions are the ones we have never answered before.
Search the Forums |
|
|
|
blarg Beginner
Joined: 14 Jul 2015 Posts: 15
|
Posted: Mon Jul 20, 2015 5:02 am |
I'm just getting the upside L in the window and assigned to parsedesc but I'm getting something that looks nicer in #DEBUGFILE
Code: |
07/19/15 18:59:30:029 : <IAC><SB><69><1>SCROLL<2><LF><CR>
( )==========================================================================( )<LF><CR>
| |<LF><CR>
| |<LF><CR>
| - - - - |<LF><CR>
| |<LF><CR>
| |<LF><CR>
( )--------------------------------------------------------------------------( )<LF><CR> |
|
|
|
|
Daern Sorcerer
Joined: 15 Apr 2011 Posts: 809
|
Posted: Mon Jul 20, 2015 11:05 am |
I'm guessing that the character you're seeing in the window is the ASCII control character <2>, and the reason you haven't been seeing the other lines is because . doesn't match newlines by default. Try this perhaps?
Code: |
<trigger type="Telnet" param="69" priority="14520" regex="true" newline="false" prompt="true" enabled="false" id="506">
<pattern>(?s)SCROLL\x02(.*)</pattern>
<value>parsedesc=%1
#CLR scroll
#WINDOW scroll {%1}</value>
</trigger> |
|
|
|
|
blarg Beginner
Joined: 14 Jul 2015 Posts: 15
|
Posted: Mon Jul 20, 2015 6:49 pm |
That's exactly what I needed, Daern. Thank you. It's working perfectly now.
|
|
|
|
|
|