Index: tools/metrics/histograms/print_style.py |
diff --git a/remoting/tools/jscompile.py b/tools/metrics/histograms/print_style.py |
old mode 100755 |
new mode 100644 |
similarity index 12% |
copy from remoting/tools/jscompile.py |
copy to tools/metrics/histograms/print_style.py |
index 0f06964696e185b1dbdd63af960091233f4b40b0..58ab81e4a99b5352b61da41e22798050ecf67d99 |
--- a/remoting/tools/jscompile.py |
+++ b/tools/metrics/histograms/print_style.py |
@@ -1,49 +1,53 @@ |
-#!/usr/bin/python |
# Copyright 2014 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. |
-import argparse |
-import subprocess |
-import sys |
+"""Holds the constants for pretty printing histograms.xml.""" |
+ |
import os |
+import sys |
+ |
+# Import the metrics/common module for pretty print xml. |
+sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common')) |
+import pretty_print_xml |
+ |
+# Desired order for tag attributes; attributes listed here will appear first, |
+# and in the same order as in these lists. |
+# { tag_name: [attribute_name, ...] } |
+ATTRIBUTE_ORDER = { |
+ 'enum': ['name', 'type'], |
+ 'histogram': ['name', 'enum', 'units'], |
+ 'int': ['value', 'label'], |
+ 'fieldtrial': ['name', 'separator', 'ordering'], |
+ 'group': ['name', 'label'], |
+ 'affected-histogram': ['name'], |
+ 'with-group': ['name'], |
+} |
+ |
+# Tag names for top-level nodes whose children we don't want to indent. |
+TAGS_THAT_DONT_INDENT = [ |
+ 'histogram-configuration', |
+ 'histograms', |
+ 'fieldtrials', |
+ 'enums' |
+] |
+ |
+# Extra vertical spacing rules for special tag names. |
+# {tag_name: (newlines_after_open, newlines_before_close, newlines_after_close)} |
+TAGS_THAT_HAVE_EXTRA_NEWLINE = { |
+ 'histogram-configuration': (2, 1, 1), |
+ 'histograms': (2, 1, 1), |
+ 'fieldtrials': (2, 1, 1), |
+ 'enums': (2, 1, 1), |
+ 'histogram': (1, 1, 1), |
+ 'enum': (1, 1, 1), |
+ 'fieldtrial': (1, 1, 1), |
+} |
+ |
+# Tags that we allow to be squished into a single line for brevity. |
+TAGS_THAT_ALLOW_SINGLE_LINE = [ |
+ 'summary', |
+ 'int', |
+] |
+ |
-DESCRIPTION = '''Run the given JavaScript files through jscompile.''' |
-FILES_HELP = '''A list of Javascript files. The Javascript files should include |
-files that contain definitions of types or functions that are known to Chrome |
-but not to jscompile.''' |
-STAMP_HELP = 'Timestamp file to update on success.' |
- |
-def checkJavascript(js_files): |
- args = ['jscompile'] + js_files |
- result = subprocess.call(args) |
- return result == 0 |
- |
- |
-def main(): |
- parser = argparse.ArgumentParser(description = DESCRIPTION) |
- parser.add_argument('files', nargs = '+', help = FILES_HELP) |
- parser.add_argument('--success-stamp', dest = 'success_stamp', |
- help = STAMP_HELP) |
- options = parser.parse_args() |
- |
- js = [] |
- for file in options.files: |
- name, extension = os.path.splitext(file) |
- if extension == '.js': |
- js.append(file) |
- else: |
- print >> sys.stderr, 'Unknown extension (' + extension + ') for ' + file |
- return 1 |
- |
- if not checkJavascript(js): |
- return 1 |
- |
- if options.success_stamp: |
- with open(options.success_stamp, 'w'): |
- os.utime(options.success_stamp, None) |
- |
- return 0 |
- |
-if __name__ == '__main__': |
- sys.exit(main()) |