nisus.com
https://www.nisus.com/forum/

variables and interpolated literals
https://www.nisus.com/forum/viewtopic.php?f=17&t=3352
Page 1 of 1

Author:  credneb [ 2009-03-12 13:59:28 ]
Post subject:  variables and interpolated literals

Getting back to learning the new macro language, I succeeded in writing a simple macro that even works. For reference, it's pasted below.

It simply builds a block of lines each starting with a number followed by a tab and newline character.
Following the line
$text = $prefix & $firstStep

I tried variations of
$text += "\t + \n"
$text & "\t + \n"
$text += "\t & \n"
and others to assemble the text added to the clipboard first. Some got complaints, but none succeeded in adding a tab and newline to the text added to the clipboard. (The pasted text was a single line.)

To add a tab or newline to text on the clipboard, do they have to be explicitly appended? Is there no way to assemble a string variable containing them that can then be appended to a clipboard?

Thank you.

Cliff Bender

***********
#NisusMacroProperty Name: _FlowChart Numbers

$message = 'What is the prefix?'
$prefix = Prompt Input $message, '', 'OK', 'S'

$message = 'What is the first number?'
$firstStep = Prompt Input $message, '', 'OK', '100'

$message = 'What is the last number?'
$lastStep = Prompt Input $message, '', 'OK', '10'

If $lastStep <= $firstStep
Die 'Sorry, the numbers are invalid.'
else
New Clipboard 'flowclip'
Switch to Clipboard 'flowclip'
Write Clipboard 'START'
Append to Clipboard "\n"
While $firstStep <= $lastStep
$text = $prefix & $firstStep
Append to Clipboard $text
Append to Clipboard "\t\n"
$firstStep = $firstStep + 1
end
Append to Clipboard "END \n"
Paste
end
Delete Clipboard 'flowclip'

Author:  martin [ 2009-03-12 16:19:23 ]
Post subject:  Re: variables and interpolated literals

credneb wrote:
To add a tab or newline to text on the clipboard, do they have to be explicitly appended? Is there no way to assemble a string variable containing them that can then be appended to a clipboard?

There is a way, use the "&=" operator to append a string to an existing variable, eg:
Code:
$text = $prefix & $firstStep
$text &= "\t\n"

You could also do:
Code:
$text = "$prefix$firstStep\t\n"

Also, some unsolicited advice: you don't need to use a temporary clipboard to build your result. You could simply use a text variable, which is going to be faster:
Code:
$message = 'What is the prefix?'
$prefix = Prompt Input $message, '', 'OK', 'S'

$message = 'What is the first number?'
$firstStep = Prompt Input $message, '', 'OK', '100'

$message = 'What is the last number?'
$lastStep = Prompt Input $message, '', 'OK', '110'

If $lastStep <= $firstStep
   Die 'Sorry, the numbers are invalid.'
else
   $fullText = "START\n"
   While $firstStep <= $lastStep
      $fullText &= "$prefix$firstStep"
      $fullText &= "\t\n"
      $firstStep = $firstStep + 1
   end
   $fullText &= "END\n"
   Insert Text $fullText
end

Also, the "NisusMacroProperty Name" comment/directive isn't needed for macros authored by users. It's used internally by us to localized the display name of the macro for other languages, but unless you're also planning on updating all the NWP "lproj" folders to translate your macro title, the macro's file name should suffice.

Author:  credneb [ 2009-03-12 17:07:44 ]
Post subject:  Re: variables and interpolated literals

Thank you very much for the help, AND for the unsolicited advice. It helps the learning process and I like fast...
Your revised version is much more elegant, and as an example it answers several questions.

Thanks again.

Author:  martin [ 2009-03-12 20:37:07 ]
Post subject:  Re: variables and interpolated literals

Glad to help- happy macro writing!

Page 1 of 1 All times are UTC - 8 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/