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

Unified Diff: tracing/third_party/tvcm/tvcm/module.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 side-by-side diff with in-line comments
Download patch
Index: tracing/third_party/tvcm/tvcm/module.py
diff --git a/tracing/third_party/tvcm/tvcm/module.py b/tracing/third_party/tvcm/tvcm/module.py
deleted file mode 100644
index 5ac7a3fe3088d40a8eba1a29e5cb5e758ce5520f..0000000000000000000000000000000000000000
--- a/tracing/third_party/tvcm/tvcm/module.py
+++ /dev/null
@@ -1,265 +0,0 @@
-# Copyright 2013 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.
-
-"""This module contains the Module class and other classes for resources.
-
-The Module class represents a module in the trace viewer system. A module has
-a name, and may require a variety of other resources, such as stylesheets,
-template objects, raw JavaScript, or other modules.
-
-Other resources include HTML templates, raw JavaScript files, and stylesheets.
-"""
-
-import os
-import inspect
-import codecs
-
-from tvcm import js_utils
-
-
-class DepsException(Exception):
- """Exceptions related to module dependency resolution."""
-
- def __init__(self, fmt, *args):
- from tvcm import style_sheet as style_sheet_module
- context = []
- frame = inspect.currentframe()
- while frame:
- frame_locals = frame.f_locals
-
- module_name = None
- if 'self' in frame_locals:
- s = frame_locals['self']
- if isinstance(s, Module):
- module_name = s.name
- if isinstance(s, style_sheet_module.StyleSheet):
- module_name = s.name + '.css'
- if not module_name:
- if 'module' in frame_locals:
- module = frame_locals['module']
- if isinstance(s, Module):
- module_name = module.name
- elif 'm' in frame_locals:
- module = frame_locals['m']
- if isinstance(s, Module):
- module_name = module.name
-
- if module_name:
- if len(context):
- if context[-1] != module_name:
- context.append(module_name)
- else:
- context.append(module_name)
-
- frame = frame.f_back
-
- context.reverse()
- self.context = context
- context_str = '\n'.join(' %s' % x for x in context)
- Exception.__init__(
- self, 'While loading:\n%s\nGot: %s' % (context_str, (fmt % args)))
-
-
-class ModuleDependencyMetadata(object):
-
- def __init__(self):
- self.dependent_module_names = []
- self.dependent_raw_script_relative_paths = []
- self.style_sheet_names = []
-
- def AppendMetdata(self, other):
- self.dependent_module_names += other.dependent_module_names
- self.dependent_raw_script_relative_paths += \
- other.dependent_raw_script_relative_paths
- self.style_sheet_names += other.style_sheet_names
-
-
-_next_module_id = 1
-
-
-class Module(object):
- """Represents a JavaScript module.
-
- Interesting properties include:
- name: Module name, may include a namespace, e.g. 'tvcm.foo'.
- filename: The filename of the actual module.
- contents: The text contents of the module.
- dependent_modules: Other modules that this module depends on.
-
- In addition to these properties, a Module also contains lists of other
- resources that it depends on.
- """
-
- def __init__(self, loader, name, resource, load_resource=True):
- assert isinstance(name, basestring), 'Got %s instead' % repr(name)
-
- global _next_module_id
- self._id = _next_module_id
- _next_module_id += 1
-
- self.loader = loader
- self.name = name
- self.resource = resource
-
- if load_resource:
- f = codecs.open(self.filename, mode='r', encoding='utf-8')
- self.contents = f.read()
- f.close()
- else:
- self.contents = None
-
- # Dependency metadata, set up during Parse().
- self.dependency_metadata = None
-
- # Actual dependencies, set up during load().
- self.dependent_modules = []
- self.dependent_raw_scripts = []
- self.style_sheets = []
-
- # Caches.
- self._all_dependent_modules_recursive = None
-
- def __repr__(self):
- return '%s(%s)' % (self.__class__.__name__, self.name)
-
- @property
- def id(self):
- return self._id
-
- @property
- def filename(self):
- return self.resource.absolute_path
-
- def isComponent(self):
- ref = os.path.join('third_party', 'components')
- return ref in self.filename
-
- def Parse(self):
- """Parses self.contents and fills in the module's dependency metadata."""
- raise NotImplementedError()
-
- def GetTVCMDepsModuleType(self):
- """Returns the tvcm.setModuleInfo type for this module"""
- raise NotImplementedError()
-
- def AppendJSContentsToFile(self,
- f,
- use_include_tags_for_scripts,
- dir_for_include_tag_root):
- """Appends the js for this module to the provided file."""
- for dependent_raw_script in self.dependent_raw_scripts:
- if use_include_tags_for_scripts:
- rel_filename = os.path.relpath(dependent_raw_script.filename,
- dir_for_include_tag_root)
- f.write("""<include src="%s">\n""" % rel_filename)
- else:
- f.write(js_utils.EscapeJSIfNeeded(dependent_raw_script.contents))
- f.write('\n')
-
- def AppendHTMLContentsToFile(self, f, ctl, minify=False):
- """Appends the HTML for this module [without links] to the provided file."""
- pass
-
- def Load(self):
- """Loads the sub-resources that this module depends on from its dependency
- metadata.
-
- Raises:
- DepsException: There was a problem finding one of the dependencies.
- Exception: There was a problem parsing a module that this one depends on.
- """
- assert self.name, 'Module name must be set before dep resolution.'
- assert self.filename, 'Module filename must be set before dep resolution.'
- assert self.name in self.loader.loaded_modules, (
- 'Module must be registered in resource loader before loading.')
-
- metadata = self.dependency_metadata
- for name in metadata.dependent_module_names:
- module = self.loader.LoadModule(module_name=name)
- self.dependent_modules.append(module)
-
- for path in metadata.dependent_raw_script_relative_paths:
- raw_script = self.loader.LoadRawScript(path)
- self.dependent_raw_scripts.append(raw_script)
-
- for name in metadata.style_sheet_names:
- style_sheet = self.loader.LoadStyleSheet(name)
- self.style_sheets.append(style_sheet)
-
- @property
- def all_dependent_modules_recursive(self):
- if self._all_dependent_modules_recursive:
- return self._all_dependent_modules_recursive
-
- self._all_dependent_modules_recursive = set(self.dependent_modules)
- for dependent_module in self.dependent_modules:
- self._all_dependent_modules_recursive.update(
- dependent_module.all_dependent_modules_recursive)
- return self._all_dependent_modules_recursive
-
- def ComputeLoadSequenceRecursive(self, load_sequence, already_loaded_set,
- depth=0):
- """Recursively builds up a load sequence list.
-
- Args:
- load_sequence: A list which will be incrementally built up.
- already_loaded_set: A set of modules that has already been added to the
- load sequence list.
- depth: The depth of recursion. If it too deep, that indicates a loop.
- """
- if depth > 32:
- raise Exception('Include loop detected on %s', self.name)
- for dependent_module in self.dependent_modules:
- if dependent_module.name in already_loaded_set:
- continue
- dependent_module.ComputeLoadSequenceRecursive(
- load_sequence, already_loaded_set, depth + 1)
- if self.name not in already_loaded_set:
- already_loaded_set.add(self.name)
- load_sequence.append(self)
-
- def GetAllDependentFilenamesRecursive(self, include_raw_scripts=True):
- dependent_filenames = []
-
- visited_modules = set()
-
- def Get(module):
- module.AppendDirectlyDependentFilenamesTo(
- dependent_filenames, include_raw_scripts)
- visited_modules.add(module)
- for m in module.dependent_modules:
- if m in visited_modules:
- continue
- Get(m)
-
- Get(self)
- return dependent_filenames
-
- def AppendDirectlyDependentFilenamesTo(
- self, dependent_filenames, include_raw_scripts=True):
- dependent_filenames.append(self.resource.absolute_path)
- if include_raw_scripts:
- for raw_script in self.dependent_raw_scripts:
- dependent_filenames.append(raw_script.resource.absolute_path)
- for style_sheet in self.style_sheets:
- style_sheet.AppendDirectlyDependentFilenamesTo(dependent_filenames)
-
-
-class RawScript(object):
- """Represents a raw script resource referenced by a module via the
- tvcm.requireRawScript(xxx) directive."""
-
- def __init__(self, resource):
- self.resource = resource
-
- @property
- def filename(self):
- return self.resource.absolute_path
-
- @property
- def contents(self):
- return self.resource.contents
-
- def __repr__(self):
- return 'RawScript(%s)' % self.filename

Powered by Google App Engine
This is Rietveld 408576698