Index: tools/telemetry/catapult_base/refactor/offset_token.py |
diff --git a/tools/telemetry/catapult_base/refactor/offset_token.py b/tools/telemetry/catapult_base/refactor/offset_token.py |
deleted file mode 100644 |
index 2578f854864e1e7d32ab117ac731167a55b634b0..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/catapult_base/refactor/offset_token.py |
+++ /dev/null |
@@ -1,113 +0,0 @@ |
-# Copyright 2015 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 collections |
-import itertools |
-import token |
-import tokenize |
- |
- |
-def _Pairwise(iterable): |
- """s -> (None, s0), (s0, s1), (s1, s2), (s2, s3), ...""" |
- a, b = itertools.tee(iterable) |
- a = itertools.chain((None,), a) |
- return itertools.izip(a, b) |
- |
- |
-class OffsetToken(object): |
- """A Python token with a relative position. |
- |
- A token is represented by a type defined in Python's token module, a string |
- representing the content, and an offset. Using relative positions makes it |
- easy to insert and remove tokens. |
- """ |
- def __init__(self, token_type, string, offset): |
- self._type = token_type |
- self._string = string |
- self._offset = offset |
- |
- @property |
- def type(self): |
- return self._type |
- |
- @property |
- def type_name(self): |
- return token.tok_name[self._type] |
- |
- @property |
- def string(self): |
- return self._string |
- |
- @string.setter |
- def string(self, value): |
- self._string = value |
- |
- @property |
- def offset(self): |
- return self._offset |
- |
- def __str__(self): |
- return str((self.type_name, self.string, self.offset)) |
- |
- |
-def Tokenize(f): |
- """Read tokens from a file-like object. |
- |
- Args: |
- f: Any object that has a readline method. |
- |
- Returns: |
- A collections.deque containing OffsetTokens. Deques are cheaper and easier |
- to manipulate sequentially than lists. |
- """ |
- f.seek(0) |
- tokenize_tokens = tokenize.generate_tokens(f.readline) |
- |
- offset_tokens = collections.deque() |
- for prev_token, next_token in _Pairwise(tokenize_tokens): |
- token_type, string, (srow, scol), _, _ = next_token |
- if not prev_token: |
- offset_tokens.append(OffsetToken(token_type, string, (0, 0))) |
- else: |
- erow, ecol = prev_token[3] |
- if erow == srow: |
- offset_tokens.append(OffsetToken(token_type, string, (0, scol-ecol))) |
- else: |
- offset_tokens.append(OffsetToken(token_type, string, (srow-erow, scol))) |
- |
- return offset_tokens |
- |
- |
-def Untokenize(offset_tokens): |
- """Return the string representation of an iterable of OffsetTokens.""" |
- # Make a copy. Don't modify the original. |
- offset_tokens = collections.deque(offset_tokens) |
- |
- # Strip leading NL tokens. |
- while offset_tokens[0].type == tokenize.NL: |
- offset_tokens.popleft() |
- |
- # Strip leading vertical whitespace. |
- first_token = offset_tokens.popleft() |
- # Take care not to modify the existing token. Create a new one in its place. |
- first_token = OffsetToken(first_token.type, first_token.string, |
- (0, first_token.offset[1])) |
- offset_tokens.appendleft(first_token) |
- |
- # Convert OffsetTokens to tokenize tokens. |
- tokenize_tokens = [] |
- row = 1 |
- col = 0 |
- for t in offset_tokens: |
- offset_row, offset_col = t.offset |
- if offset_row == 0: |
- col += offset_col |
- else: |
- row += offset_row |
- col = offset_col |
- tokenize_tokens.append((t.type, t.string, (row, col), (row, col), None)) |
- |
- # tokenize can't handle whitespace before line continuations. |
- # So add a space. |
- return tokenize.untokenize(tokenize_tokens).replace('\\\n', ' \\\n') |