Index: third_party/dom_distiller_js/protoc_plugins/util/writer.py |
diff --git a/third_party/dom_distiller_js/protoc_plugins/util/writer.py b/third_party/dom_distiller_js/protoc_plugins/util/writer.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5c0c2b0920016f1b3e9b8c1a8ea070d01e29582d |
--- /dev/null |
+++ b/third_party/dom_distiller_js/protoc_plugins/util/writer.py |
@@ -0,0 +1,43 @@ |
+# Copyright 2014 The Chromium Authors. All rights reserved. |
nyquist
2016/06/14 00:48:11
Could you in general update these numbers?
wychen
2016/08/07 09:16:27
Done.
|
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import contextlib |
+ |
+class CodeWriter(object): |
nyquist
2016/06/14 00:48:11
Could you add an explanatory comment for this clas
wychen
2016/08/07 09:16:27
Done.
|
+ def __init__(self): |
+ self.indent = 0 |
+ self.value = [] |
+ self.errors = [] |
+ |
+ def GetErrors(self): |
+ return self.errors |
+ |
+ @contextlib.contextmanager |
+ def AddIndent(self, indent=2): |
+ self.indent += indent |
+ yield 0 |
+ self.indent -= indent |
+ |
+ def IncreaseIndent(self, indent=2): |
+ self.indent += indent |
+ |
+ def DecreaseIndent(self, indent=2): |
+ self.indent -= indent |
+ |
+ def Output(self, fmt, **kwargs): |
+ s = fmt.format(**kwargs) |
+ s = s.rstrip('\n') |
+ lines = s.split('\n') |
+ lines = map(lambda s: (' ' * self.indent + s).rstrip(), lines) |
+ self.value.extend(lines) |
+ |
+ def AddError(self, fmt, **kwargs): |
+ self.errors.append(fmt.format(**kwargs)) |
+ |
+ def GetValue(self): |
+ return '\n'.join(self.value) + '\n' |
+ |
+ def WriteCStyleHeader(self): |
+ self.Output("// GENERATED FILE") |
+ self.Output("// This file generated by DomDistillerJs protoc plugin.") |