Index: tools/telemetry/telemetry/user_story/__init__.py |
diff --git a/tools/telemetry/telemetry/user_story/__init__.py b/tools/telemetry/telemetry/user_story/__init__.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1b23d51f1baec7c9b8e5ed15b331c96295302f3a |
--- /dev/null |
+++ b/tools/telemetry/telemetry/user_story/__init__.py |
@@ -0,0 +1,45 @@ |
+# 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 re |
+ |
+_next_user_story_id = 0 |
+ |
+ |
+class UserStory(object): |
+ def __init__(self, name=''): |
+ self._name = name |
+ global _next_user_story_id |
+ self._id = _next_user_story_id |
+ _next_user_story_id += 1 |
+ |
+ @property |
+ def id(self): |
+ return self._id |
+ |
+ @property |
+ def name(self): |
+ return self._name |
+ |
+ def AsDict(self): |
+ """Converts a user story object to a dict suitable for JSON output.""" |
+ d = { |
+ 'id': self._id, |
+ } |
+ if self._name: |
+ d['name'] = self._name |
+ return d |
+ |
+ @property |
+ def file_safe_name(self): |
+ """A version of display_name that's safe to use as a filename.""" |
+ # Just replace all special characters in the url with underscore. |
+ return re.sub('[^a-zA-Z0-9]', '_', self.display_name) |
+ |
+ @property |
+ def display_name(self): |
+ if self.name: |
+ return self.name |
+ else: |
+ return self.__class__.__name__ |