Last week, our support desk here at Novaworks received an interesting email regarding the spacing between ampersand characters (‘&’) and the rest of the line. This space was lost when the document was printed. Through some testing, we’ve discovered that when printing a document from Internet Explorer to PDF or a normal printer, if the first character on a line of code begins a character entity or is an ampersand then the return on the line above it will not be treated as whitespace for printing purposes but instead ignored. Take the following code for example:
Continue reading "LDC #43: Character Entity Spacing Issue When..." »Friday, July 14. 2017
LDC #43: Character Entity Spacing Issue When Printing
Friday, July 07. 2017
LDC #42: Unregistering and Changing Software Keys
There are times when it may be desirable or necessary to change GoFiler’s software key or unregister it from your system. There’s no easy way to do this through the application’s GUI. One can always uninstall the software or reinstall it to apply a different key than the one attached to the current installation, but that’s time-consuming and can destroy GoFiler preferences and settings you’d like to keep. With Legato and some batch scripting, changing the software key for a GoFiler installation or unregistering the application is simple. Note: whatever software key you apply to your installation must be valid, and a valid key can only be purchased through Novaworks. Contact the support or sales departments to inquire about the status of your software key(s) or to purchase new or additional keys.
Continue reading "LDC #42: Unregistering and Changing Software Keys" »Friday, June 30. 2017
LDC #41: Align Outline Text
The script for this week is going to be another request by a customer. It is a good example of how to search for patterns in HTML and replace the content matching that pattern. A common task when converting an HTML document is trying to get indented paragraphs to indent at the same level. This is especially problematic when the document contains numbered paragraphs that are not hanging (such as a legal outline.) Dealing with this case isn’t exactly trivial in HTML, as it often imports with a set number of non-breaking spaces to create the indent. Unless you’re using a monospace font, the text will not perfectly align, and the outline will not look the same for every number. The best solution is to remove the non-breaking spaces, and wrap the lead-in text (the “(a)”, or “1.”, or “Section 1.”, etc) with a inline tag, using the display type “inline-block”. This, combined with a fixed width and “nowrap” properties, allows us to add a block of space that is a fixed width into a paragraph, so our lead-in text takes up exactly the right amount of space.
Continue reading "LDC #41: Align Outline Text" »Friday, June 16. 2017
LDC #39: Application Initialize Script
So far, every script we’ve explored has been a hook of some sort. They attach themselves to new or existing menu icons or are triggered by other functions being run. What if you want something to run on application start? Legato supports this through the Application Initialize script. On program start, GoFiler will always run the ApplicationStartup.ls script. This script file is the one that’s responsible for running every other script in the extensions folder. This allows users to create their own custom startup routines that are run before literally anything else.
Continue reading "LDC #39: Application Initialize Script" »Friday, June 02. 2017
LDC #37: Automated Test Filing XBRL, Part 2
Last week, we created a way to create template files for test filing XBRL in GoFiler. We also designed a method to open and edit them easily. Now it’s time to add the next level of functionality to this project: a script that allows us to test file XFR files with a single button press. This script will create a pair of new folders in the same directory as the XFR file: “Automated Test File” and “Automated Test Archive”. The first folder will contain the most recent test filing, while the latter will contain a copy of every test filing submitted to the SEC just in case it’s needed for future reference.
Continue reading "LDC #37: Automated Test Filing XBRL, Part 2" »
Friday, May 26. 2017
LDC #36: Automated Test Filing XBRL, Part 1
This week our blog will focus on another common task that can be automated with GoFiler. When working on an XBRL file, test filing it with the SEC is very routine. GoFiler can validate it, but there is no substitute for pushing it up to the SEC to see if it will pass or fail a test filing. Right now, to test file an XBRL file, a project must be created, and the XFR file must be exported to an XBRL fileset. Then the files should be attached to the project. Then you need to attach a dummy HTML or TXT file onto the project as a primary document before finally test filing it. This whole process can take 3-4 minutes . While that doesn’t sound like a lot, it can be annoying to have to do it over and over again while working on multiple filings. Using Legato, however, we can streamline this process down to a single button press.
Continue reading "LDC #36: Automated Test Filing XBRL, Part 1" »
Friday, May 12. 2017
LDC #34: XBRL Merger, Part 4
This is the fourth and final blog post in this series. In this last entry, we will be taking everything we’ve written so far and adding to it a couple of new functions to allow us to take two separate XFR files and merge the instance files together into a single file. In the end, we’ve allowed the user to select two files to compare, altered the currencies as necessary, merged the files, and exported the instance files into a single document.
Continue reading "LDC #34: XBRL Merger, Part 4" »
Friday, May 05. 2017
LDC #33: XBRL Merger, Part 3
Last week we added to our XBRL Merger script, giving it the ability to export files and compare the exported files to see if they were able to be merged. This week, we’ll take it another step further by adding in the ability to read the XBRL instance files into data structures, add some debug information, and add a progress bar to the run function. This week introduces the concept of debug print messages. Often when writing a script, you will encounter an issue where you’re not sure what the actual value of a variable is. Depending on the integrated development environment (IDE) being used to write the code, you can sometimes step through the code with breakpoints and inspect the values for each variable. While we’re going to be adding that feature to GoFiler’s Legato IDE, for now we find it helpful to insert various functions that print variables to a console. By adding a special function to do this, you can make showing/hiding debug information very easy. See the section on the debug_message function’s code below for more.
Continue reading "LDC #33: XBRL Merger, Part 3" »
Friday, April 28. 2017
LDC #32: XBRL Merger, Part 2
This week, we will be continuing to write our XBRL Merger script. The previous post covered how to prompt the user for a pair of files, checked to make sure those files were valid XFR files that we could actually access, and finally made sure that they weren’t the same files. This week we’re taking it a step further by opening the files (or switching to them if they are already open), exporting them to new directories, and comparing the contents of these directories. This script is intended to merge two very similar files, where the only difference is a couple of facts being tagged with a different unit, so the exported file sets need to very closely match.
Continue reading "LDC #32: XBRL Merger, Part 2" »
Friday, April 21. 2017
LDC #31: XBRL Merger, Part 1
Legato is great at supplementing features that GoFiler already has and hooking into existing functions and modifying how they work slightly. Probably its most powerful ability, however, is to add entirely new functionality to GoFiler. One feature GoFiler doesn’t have natively is the ability to have multiple currency types for a single fact in XBRL. Well, we can add support for that using Legato! The new functionality will be achieved by combining two different XFR files.
Continue reading "LDC #31: XBRL Merger, Part 1" »
Friday, April 14. 2017
LDC #30: Downloading and using CIK and Owners Library files from a website
Legato is capable of integrating into a huge variety of systems and interfaces. There are a variety of ways to do this, but one of the easiest to implement in Legato is through HTTP POST and GET functions. These functions send a message to a specified web page, which the web page can then handle in some way, and respond. In this week’s blog post, we are going to look at a way that we can hook Legato to download from a web site a CIK library and a Reporting Owners library. I’ve uploaded an example handler page, which can be found here:
Continue reading "LDC #30: Downloading and using CIK and Owners..." »Friday, March 31. 2017
LDC #28: Chrome Alignment Issue with SEC Filings
10-11-2017 Update: As of Chrome 61, it appears this issue has been resolved. Chrome displays these pages correctly now.
Last week, the Novaworks support team was alerted to a very interesting bug when viewing certain filings on the EDGAR website. In documents that are sufficiently large, a TABLE tag that uses left align or right align or a DIV tag that uses float left or float right can cause the document to display out of order in Google Chrome. Normally, Chrome has no problem displaying these files. However, when the document is filed to the SEC, EDGAR injects some non-HTML tags at the top of it. At the top of every document, the SEC injects tags like these:
Continue reading "LDC #28: Chrome Alignment Issue with SEC Filings" »
Friday, March 03. 2017
LDC #24: Inserting Text Into an HTML Edit Window
This week’s script is another real-world example that was requested by a client. When inserting an image into an EDGAR HTML file, the image has to be in the same folder as the HTML. This script adds a menu command that allows an image to be inserted and copied to the same folder in one step. To do this, we use a lot of SDK functions we’ve discussed in earlier blog posts, however, in this post we also discuss inserting text at the current cursor position.
Continue reading "LDC #24: Inserting Text Into an HTML Edit Window" »Friday, February 24. 2017
LDC #23: Using Advanced SGML Parsing On the 13H Broker-Dealer List
Way back in Legato Developers Corner #6, we used the WordParse function to pull apart simple strings, and parse through some simple HTML data. While WordParse is a great tool for doing simple things like that, what happens if you want to parse through an entire file, and extract information from it? To do that, you’ll need to use a more powerful SGML parser. This blog post is intended to be an introduction to our SGML parsing and support object using a real-world example.
Continue reading "LDC #23: Using Advanced SGML Parsing On the 13H..." »Friday, February 17. 2017
LDC #22: Working with Path Functions
One of the most obvious statements you can make is you cannot open or modify a file if you cannot get it’s location. If the location of a file cannot be defined, then you can’t do anything to it. Legato provides several very useful functions to break down a file path, add paths together, and just generally improve how you deal with paths.
Continue reading "LDC #22: Working with Path Functions" »