| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package formatter |
| |
| import ( |
| "mojom/mojom_parser/mojom" |
| "mojom/mojom_parser/parser" |
| ) |
| |
| // FormatMojom accepts the source code for a mojom file and returns a |
| // semantically-equivalent pretty-printed version of that file. |
| // |filename| will be used to construct parser error messages. |
| // If |source| cannot be parsed, a non-nil error will be returned. The |
| // returned error has been formatted to be displayed to the user. |
| func FormatMojom(filename, source string) (formatted string, err error) { |
| descriptor := mojom.NewMojomDescriptor() |
| parser := parser.MakeParser(filename, filename, source, descriptor, nil) |
| parser.Parse() |
| |
| if !parser.OK() { |
| return "", parser.GetError() |
| } |
| |
| mojomFile := parser.GetMojomFile() |
| comments := parser.GetComments() |
| mojom.AttachCommentsToMojomFile(mojomFile, comments) |
| |
| printer := newPrinter() |
| printer.writeMojomFile(mojomFile) |
| return printer.result(), nil |
| } |