Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Side by Side Diff: tracing/third_party/tvcm/tvcm/resource.py

Issue 1376953005: Move tracing/third_party/tvcm -> third_party/py_vulcanize. (Closed) Base URL: git@github.com:catapult-project/catapult.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 """A Resource is a file and its various associated canonical names."""
6
7 import codecs
8 import os
9
10
11 class Resource(object):
12 """Represents a file found via a path search."""
13
14 def __init__(self, toplevel_dir, absolute_path, binary=False):
15 self.toplevel_dir = toplevel_dir
16 self.absolute_path = absolute_path
17 self._contents = None
18 self._binary = binary
19
20 @property
21 def relative_path(self):
22 """The path to the file from the top-level directory"""
23 return os.path.relpath(self.absolute_path, self.toplevel_dir)
24
25 @property
26 def unix_style_relative_path(self):
27 return self.relative_path.replace(os.sep, '/')
28
29 @property
30 def name(self):
31 """The dotted name for this resource based on its relative path."""
32 return self.name_from_relative_path(self.relative_path)
33
34 @staticmethod
35 def name_from_relative_path(relative_path):
36 dirname = os.path.dirname(relative_path)
37 basename = os.path.basename(relative_path)
38 modname = os.path.splitext(basename)[0]
39 if len(dirname):
40 name = dirname.replace(os.path.sep, '.') + '.' + modname
41 else:
42 name = modname
43 return name
44
45 @property
46 def contents(self):
47 if self._contents:
48 return self._contents
49 if not os.path.exists(self.absolute_path):
50 raise Exception('%s not found.' % self.absolute_path)
51 if self._binary:
52 f = open(self.absolute_path, mode='rb')
53 else:
54 f = codecs.open(self.absolute_path, mode='r', encoding='utf-8')
55 self._contents = f.read()
56 f.close()
57 return self._contents
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698