TextSoap

You really need to get TextSoap from Bundlehunt

I've already made a couple of comments about TextSoap, but if you haven't already picked up a copy from Bundlehunt, I strongly urge you to jump over there right now and grab it before it's gone. It's not just for text cleaning but can be used of parsing, formatting, searching, and copying.

The uses for TextSoap are increasing day by day. In fact, it's solving formatting issues I didn't even know I had. To give a couple of examples, I write these blog articles in Scrivener, which is great. What's not great is that web formatting wants an extra line break between paragraphs. With TextSoap, adding those is now a click of the "2 Returns" button.

The same is true for web links. Correcting those in a Markdown editor is a simple, but manual task. Now it's a click of the "HTML to Markdown" button.

There's also the Extract Text from HTML Source which is a huge timesaver. Or the Replace @ with (AT).

Going beyond that, I'm already making my own formatters for repeated tasks.

For example, with a simple bit of Regex, I have made a SQL text formatter. It finds all the SQL keywords I have defined, turns them to uppercase and formats them as blue.

I have another cleaner that searches web pages and copies certain types of URLs to the clipboard.

Another one does a replace on copied URLs so I only get the ID, which I use when testing.

I already wrote of the Execution Time formatter and the Insert Code Block snippet. It's turned out to be an IDE for developing text formatting macros. And it's not just for text editors, it can work within al sorts of apps.

It's only been a couple of weeks, but I am finding more and more ways to use it.

If you do any sort of web publishing, or writing, or QA work, you absolutely need to get a copy of TextSoap from Bundlehunt. TextSoap is normally $45, and I can see why. But Bundlehunt has it for $5 and that is an incredible deal.

This is going to be a heavily used tool for me moving forward.

Other articles of interest:

Inserting and Appending Text with TextSoap

On the surface this seems like a silly, even trivial request, insert a line of text at the top of the file and append a line of text to the bottom of the file. And it is a simple request, until you want to do it in bulk.

Then it becomes a copy/paste nightmare that is woefully inefficient or you get into sed, cat, echo, for .. each loops and some other variants of shell scripting.

What I wanted to do was add code blocks to top and bottom of several Markdown files so they would be seen as code. Groovy code to be specific with the:
”’groovy
”’
While looking for a reliable solution that could be easily implemented, I caught something in TextSoap. It has an Insert Action. It’s an insert Before and After action. When no text is selection, the action is performed on the entire block of text. Since TextSoap has a menu bar button, the action can be performed anywhere.

That lead to this simple solution:textsoap-action

But there is a little more. TextSoap has a Batch File Cleaning function. There you can specify the Cleaner and the files it should act on.

textsoap-batch-cleaning

There is also the TextSoap Palette, which is a floating menu of all the TextSoap filters, including all the Custom Cleaners so it can be repeatedly used with any open application.

textsoap-palette

So what started as shell scripting exercise, turned into a simple two-line insert function within TextSoap that is now available to all applications or could even be run against a series of files. That was pretty handy!

Other articles of interest:

Formatting Execution Times with TextSoap

As noted, I have a couple of tests that use the TimeDuration library to time how long certain actions take. For example, the time it takes to Save a large number of items. After running a whole series of test suites, I had a lot of information in the log files. As an experiment, I searched through all the logs and pulled out the “Execution Time:” marker. This gave me multiple instances of how long it took to save that large chunk of data.

I then decided to try out TextSoap to see what sort of formatting I could apply to this text. Could I make some sort of report that showed the really long save times and the longer than average save times?

Simply put, you absolutely can.

Using a bit of RegEx and then applying some formatting, I can call out the really long test that took 3 minutes. Clearly something went totally wrong there.

.*minutes.*

I can then highlight the times that took over 20 seconds.

.*\b[2-9][0-9]\b.*

I can then highlight the times between 10 and 19 seconds as pretty close to problematic.

.*\b[1][0-9]\b.*

In conjunction with these, I can apply text formatting to make a pretty cool little report. From the screenshot, the Minutes time gets red text and gets converted to uppercase.

The 20+ second condition also gets the same treatment.

For 10-19 seconds, get formatted in orange, but no change of case.

So in short order, I was able to use grep to find the Execution Time text and save that to a file. Then TextSoap applies a set of conditional filters and I have a pretty useful report of my automation testing. Now that the “cleaner” is built, this process takes less than 30 seconds to complete.

This could be done several ways and with several different tools. But it seemed like a fun exercise for TextSoap and a way to try out it’s features. And it totally worked.

By the way, my RegEx skills are nigh non-existent. I used regex101.com and comments from Stackoverflow to put these together.

Other articles of interest:

Recent Comments

  • Working with Dates and Date Formatting in Katalon Studio (14)
    • Don Pedro: That could be a little tricky. First, is the text/format always going to be the same? You will need to do some parsing. Separate the first but of text at 2019. After that, split the text again to get rid of Central Standard...
    • Don Pedro: It should be of the same Date type as today. You could then do some calendar trickery with Calendar /*Calendar c = Calendar.getInstance(); //c.set(Calendar.MONTH, 1) //Set the month, 0=January, 11=December println...
    • josh: I’m testing a page with a string like “Updated November 21, 2019 16:25:32 PM Central Standard Time.” How might I capture the date and time and compare it to current time to verify that the update time was within...
    • zakir hussain: today = new Date() lastWeek = (today – 1.week) can u please help me in understanding what is the return type of lastweek? and I wanted to set nextyear date how can i do it
    • ALLAN FORD: Useful !
    • Don Pedro: Not sure I understand what you are trying to do.
    • Don Pedro: formattedDate = mydate.format(“M/dd/yyy& #8221;)
  • Setting up Environment Profiles in Katalon Studio (2)
    • Don Pedro: Not quite sure I understand. The term “Execution Profile” is normally used now, but they are still GlobalVariables and are created in the same way for version 7 as previous. You make a new execution profile, then...
    • Aparna: Hello, Your documentation is excellent and has helped me understand many things. But this article above seems outdated and I need help in creating my own Global variables and all the documentation out there seems to be point to...
  • Here is my drive cluster (2)
    • Don Pedro: While I still have those drives, the drive cluster looks nothing like that now. Almost all of my external drives have had the cases removed and they have been installed into a series of MediaSonic 8 Bay Drive Enclosures. I...
    • Marin Boucher: Hi! Verry funny blog with “go to the point” on many post! I spent good time reading some of your post. Regarding this one about NAS, “many NAS” in fact, I would be curious to see a screenshot of...
  • How To Disable the Quicken Registration Prompt (27)
    • debra: didn’t work for me… my 2007 – which I am keeping on my older mac.
  • Adding entries to an open Excel spreadsheet during runtime (1)
    • IanG: Hi: Seems like nobody else has described (in detail) how Katalon can be configured to test an API by reading the first entry from a multi-row multi column XLSX spreadsheet, executing a test, writing the result to another column (or...
  • Output status messages and test information by writing to the Log File Viewer in Katalon Studio (4)
    • Don Pedro: That is correct. You will need to add KeywordUtil.markFailed to change the Failures count. Other commands in the library are: KeywordUtil.markPassed KeywordUtil.markFailed KeywordUtil.markError KeywordUtil.markWarning
    • Nadim: This is really helpful … the only problem when log.logFailed executed it doesn’t update the results Failures count … still show Failures: 0