While the Novaworks tools are principally used for EDGAR, sometimes there are non-EDGAR things to do. One of my activities is maintaining a website for a not-for-profit group supporting amateur radio. As part of my duties, the front page of the site has a section on recent non-club news which requires me to perform a little research and then add the links to the page. This script helps reduce the time to create the links.Continue reading "LDC #165: A Quick Web Link Builder" »
Friday, January 24. 2020
Friday, January 10. 2020
This week, we’re taking another look at using Legato to enhance GoFiler’s validation. Last month, someone asked me if there was a way GoFiler could check a 10-Q project to ensure a completed XBRL file set was attached to it. Well, this isn’t something GoFiler normally checks for (since there are times when you might want to omit these files), but we can definitely use Legato to enhance the validation of the project file, so we can warn the user if they might have forgotten something. It also gives us another opportunity to demonstrate some of the project file functions, which are always useful if you’re going to be working with GFP files.
Continue reading "LDC #164: Validating Project Files Have XBRL" »
Friday, December 27. 2019
For this week’s blog post we are going to discuss tracking elapsed time in Legato. Like many things in Legato, there are a number of different ways to accomplish this task, each with their pros and cons. Many of these functions have appeared in other scripts we’ve previously posted but this article will be a more in-depth look at these functions.Continue reading "LDC #163: Tracking Time in Legato" »
Monday, December 16. 2019
Everyone has their favorite quick keys. It you have been working in MS Word for a long time, you are probably used to pressing Ctrl+E or Ctrl+R to center or right align text. In GoFiler, the corresponding keys are F6 and F8, respectively. But what if you want to change the quick keys in GoFiler? In this blog, I will begin to explore quick keys and the foundation of how GoFiler processes them. The next blog will explain how Legato can be used to modify quick keys. In the end, you as a Legato programmer should understand how to use and alter quick keys to best suit your own particular needs.
Continue reading "LDC #162: An Introduction to Quick Keys" »
Monday, November 25. 2019
In the EDGAR world, inline CSS can be used to style documents. However, CSS style sheets are not allowed. I recently ran into a case where document needed to be published on a system which was just the opposite — CSS classes are ok, but inline styles are verboten. A quick Legato script saved may hours of work by translating the inline styles to a style sheet.Continue reading "LDC #161: Quickly Adding CSS Classes to an..." »
Friday, November 22. 2019
On November 19th, XBRL US released the Taxonomy Development Handbook for public review. The handbook is a comprehensive guide that directs regulators, industry experts, and businesses through a practical roadmap to building high quality data standards with XBRL. This freely available, foundational document takes readers through the necessary stages of standards development, including: 1) building the appropriate transport data model, 2) assessing project scope, including use cases and requirements, 3) establishing a governance structure, 4) documenting the standards program, and 5) the step-by-step mechanics of building the taxonomy. The handbook also contains an introduction to the XBRL financial data standard, templates to guide developers in documenting the taxonomy, and case studies of XBRL as a method of improving data reporting in various industries.Continue reading "XBRL US Releases Taxonomy Development Handbook..." »
Friday, November 15. 2019
Last month, we discussed logging user submissions to the SEC in our blog post LDC 154. Well, thinking more about this, I realized it was probably not a good idea to not secure the log file. If someone makes a mistake, and files a document they shouldn’t, they could simply alter the log to show different times or users filing the document, and there is no record of it. A malicious user could easily just change what the log says! This is unacceptable and easily within our power to fix. To do so, we’re going to use a common function, the MD5 hash function.
Continue reading "LDC #160: Securing Log Files with MD5" »
Friday, November 01. 2019
I had an interesting issue crop up this week: a client had a file that had a 21 inch indent on a paragraph, causing problems when the file was printed to PDF. When GoFiler converts your Word file to HTML, if there are a lot of spaces or tabs on a line, it can cause GoFiler to interpret it as having a large indent level. Normally this isn’t a big deal, but if the indent ends up as large as this, it can cause rendering issues. So, I was asked if there was a way we could test for this, and figured it would be an interesting problem for a blog post.
Continue reading "LDC #159:Validating HTML Indents and Margins..." »
Friday, October 25. 2019
This week, we’re going to revisit a blog post from early 2018, Validating with the XBRL Object. This was a relatively straightforward script. It hooks itself into the validate function and adds an additional layer of validation for XBRL files. Having seen a couple of issues with blank element names in XBRL causing problems this past week, I figured it would help to create a script that enhances our default validation to detect these blank names and add in a temporary placeholder name so that it can be removed.
Continue reading "LDC #158: Validating for XBRL Custom Elements..." »
Friday, October 18. 2019
Arrays, such as lists, tables or cubes, are a useful programming tool. However, to get the most from using an array, it helps to have a more thorough understanding of exactly how arrays are stored and allocated.Continue reading "LDC #157: Understanding Used versus Allocated..." »
Friday, October 11. 2019
A very common scenario for a script is to get a file from a user, perform several actions on it and then save the file. As developers it is easy to fall into the “user is always correct” trap. We assume that if we are asking for an HTML file, the user is going to give us one. Whether the user does it on purpose or not, sometimes this isn’t the case and we, as developers, should be prepared for this use case. This blog is going to discuss how we can validate files we receive from the user.Continue reading "LDC #156: Introduction to File Types in Legato" »
Friday, October 04. 2019
When submitting a filing to the SEC you want everything about this filing to be checked, double checked, or even triple checked before submitting a live filing. If you are not 100% careful mistakes can happen. Just like elsewhere in life, following a set list of tasks for every filing can end up making life easier and allow you to ensure that mistakes are minimized as much as possible. Luckily there is a task list feature in GoFiler that we can access through Legato. This means that we can take steps to ensure that the same process gets followed every time that a filing gets created.
Continue reading "LDC #155: Automatically Locking Projects" »
Friday, September 27. 2019
When you file something to the SEC, there are a lot of data points that can be tracked from that event such as: if the filing was live, when the filing process began, when GoFiler began transmitting the file, and when GoFiler finished transmitting the file. This information can be gleaned different sources, including the log file and the project file metadata. However, there is no one place where filers can obtain this information. With Legato, we can set up a small script that triggers when we file a project, and simply records information about that project into a log file in the same folder as our project.
Continue reading "LDC #154: Enhanced Submission Logging" »
Friday, September 20. 2019
When a script has finished its assigned task, it can ‘return’ or ‘exit’. However, which is best? What style of coding should you use? It depends on the circumstances. Legato allows for flexibility in how scripts are structured and executed.Continue reading "LDC #153: Program Flow — Return vs. Exit" »
Friday, September 13. 2019
This week’s blog post is going to focus on Legato’s ability to sort and search tables and lists. Many times when developing, you need to collect up a list or table of data and perform operations or analysis on that data. When analysis is involved it usually means finding specific entries in the list or table. As the data set grows this search can start to get very expensive. I’ve created a script to show how searching lists and tables can impact your script performance.Continue reading "LDC #152: Sorting and Searching Tables" »