TextSoap

Improve your writing with TextSoap

While getting ready for 2020, it occurred to me I can use TextSoap’s regex engine to improve my writing by finding and highlighting common and overused words. There are 3 steps to the process:

  • Use the “If Text Matches” action with a list of words I want to highlight
  • Format the foreground and background colors of the text
  • Set problem words to capitals so they stand out

After checking a couple of websites, I created this short list of words to focus on.

\b(and|or|for example|but|just|other|more|new|good|best|many|first|able|basically|interesting|honestly|literally|very|really|quite|seems|had|even|that|seriously|to be honest|ridiculous|know)\b

From there I used the Set Text Color, Set Background Color filters, followed by the Convert to Uppercase action.

When finished, the “cleaner” can run inside Scrivener itself, so I don’t have to leave my main app to get feedback.

It’s a simple formatter, but I think this will have a powerful impact.

textsoap-common-words

Other articles of interest:

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

  • How To Disable the Quicken Registration Prompt (30)
    • David: A BIG Thank you! I regularly reinstall Windows OS’s using different hardware configs. In short, Quicken 2011 (it’s March of 2020 as I write this) has been a program I’ve been very happy with and continue to use....
    • Karen L: Today I rang Reckon Australia again, got a different guy and he talked me through the process of getting me a new product key to enter since I already had the licence and it had been extended. Reckon have only extended it by 1...
    • Karen L: I have Australian Quicken 2008 on Windows 8.1. It keeps asking me to renew my licence which Reckon did for me however the activation won’t work. I tried this to disable the registration prompt however it did not stop the...
  • Parsing Strings in Katalon – Split, Substring and Readlines (6)
    • Don Pedro: String tempText=”Date Month January. Revenue $1,355,721.00″ println(tempText.split(“ \$”)[1]) You need to escape the $ with \$ The [1] on the split captures characters on the right of the split [0]...
    • Prasad: Hi, I need to get the substring from the below string ‘Date Month January. Revenue $1,355,721.00’ I want to extract text after $ value. Please help Thank you
  • Working with Dates and Date Formatting in Katalon Studio (15)
    • Sangeethaa: How to get previous day’s date(Yesterday’s date)? Actually I was using today.previous() before,it was working fine till today morning.Now its not retrieving right date. Can anyone please guide me on this.
    • 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
  • Output status messages and test information by writing to the Log File Viewer in Katalon Studio (6)
    • Saranya: Good One. Could you plz share link to access all your katalon related blogs. ThankQ
    • Rodrigo Calabretta: I’m using the KeywordUtil.markFailed or KeywordUtil.markError and my test stops is being shown as Error and If I use in the @afterTestCase the testCaseContext.getTestCaseSta tus() to show the status test case...
  • 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...
  • 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...