I am hoping that existing XML formatters in IDEs will be able to handle
MXML properly by detecting the AS3 script elements separately (it works for
syntax coloring, so hopefully, formatting too). I know that this doesn't
help from a command line perspective, but honestly, I'd rather not have to
write an XML formatter from scratch. If I'm forced to, I hope that I can
find an open source XML formatter written in Java that is Apache license
compatible.

--
Josh Tynjala
Bowler Hat LLC <https://bowlerhat.dev>


On Mon, Sep 27, 2021 at 3:10 AM Yishay Weiss <yish...@apache.org> wrote:

> This can be very useful, and it's nice it's a standalone util which opens
> up using it in all editors. Do you have plans to create mxmlformatter?
>
> On 2021/09/22 17:42:53, Josh Tynjala <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>
> >
>

Reply via email to