Totally agree! B-)

> On Sep 22, 2021, at 8:54 PM, Andrew Wetmore <cottag...@gmail.com> wrote:
> 
> totally cool.
> 
> On Wed, Sep 22, 2021 at 2:43 PM Josh Tynjala <joshtynj...@bowlerhat.dev 
> <mailto:joshtynj...@bowlerhat.dev>> wrote:
> Hey everyone,
> 
> I recently created asformat, which is a formatter for ActionScript code. It 
> is based on the Royale compiler's lexer that creates a stream of tokens. One 
> nice thing about working with the token stream versus a full AST (Abstract 
> Syntax Tree) is that it's easier to keep track of existing whitespace to 
> preserve it where appropriate.
> 
> In addition to command line usage, this formatter is intended to eventually 
> be used by IDEs/editors, such as VSCode and Moonshine.
> 
> You can find asformat in nightly builds for now. I'm still testing it with 
> existing codebases, but I wanted to share my progress so that others could 
> check it out, if interested.
> 
> Usage:
> 
> Format a file, and write it back to the file system:
> 
> asformat --write-files src/com/example/MyClass.as
> 
> Alternatively, format all .as files in a directory:
> 
> asformat --write-files src
> 
> Options:
> 
> --write-files: Writes the formatting changes back to the original files. If a 
> file has no formatting changes, it will not be modified. Alias: -w. Default: 
> false.
> 
> --list-files: Lists the files that have been changed by formatting. If a file 
> has no formatting changes, it won't be listed. Alias: -l. Default: false.
> 
> --insert-spaces: Indents with spaces instead of tabs. (Default: false)
> 
> --tab-width: The width of tabs when insert-spaces is specified. (Default: 4)
> 
> --insert-final-new-line: Adds a final empty line at the end of the file, if 
> one doesn't exist already. (Default: false)
> 
> --open-brace-new-line: Controls whether an opening curly brace is placed on a 
> new line, or is "cuddled" on the current line. (Default: true)
> 
> --insert-space-for-loop-semicolon: Controls whether a space is inserted after 
> the semicolons in a for() loop. (Default: true)
> 
> --insert-space-control-flow-keywords: Controls whether a space is inserted 
> between control flow keywords (like if, for, while) and the following ( open 
> parenthesis. (Default: true)
> 
> --insert-space-anonymous-function-keyword: Controls whether a space is 
> inserted between the function keyword and the following ( open parenthesis, 
> if the function is anonymous (if it doesn't have a name). (Default: false)
> 
> --insert-space-binary-operators: Controls whether a space is inserted before 
> and after binary operators (like +, -, *, /, &&, ||, etc.) (Default: true)
> 
> --insert-space-comma-delimiter: Controls whether a space is inserted after 
> comma delimiters in Object and Array literals. (Default: true)
> 
> --collapse-empty-blocks: Controls whether empty blocks are collapsed so that 
> the opening and closing curly brace are both on the same line or not. 
> (Default: false)
> 
> --max-preserve-new-lines: Specify the maximum number of new line characters 
> that are allowed to appear consecutively. (Default: 2)
> 
> --semicolons: Controls how semicolons are handled. Valid values are insert, 
> remove, and ignore. Insert means that missing semicolons are inserted. Remove 
> means that all semicolons are removed, and ignore means that there is no 
> change to semicolons in the file. (Default: insert)
> 
> Additional notes:
> 
> If neither --write-files nor --list-files is specified, the formatted source 
> code is written to standard output instead.
> 
> If no files are specified, asformat waits for standard input instead.
> 
> --
> Josh Tynjala
> Bowler Hat LLC <https://bowlerhat.dev/>
> 
> 
> -- 
> Andrew Wetmore
> 
> http://cottage14.blogspot.com/ <http://cottage14.blogspot.com/>
> 
> 
> 
> 

Reply via email to