module.py revision 7332cdb42368a904cbf7418de329868989e592da
1cef7893435aa41160dd1255c43cb8498279738ccChris Craik# Copyright 2015 The Chromium Authors. All rights reserved. 2cef7893435aa41160dd1255c43cb8498279738ccChris Craik# Use of this source code is governed by a BSD-style license that can be 3cef7893435aa41160dd1255c43cb8498279738ccChris Craik# found in the LICENSE file. 4cef7893435aa41160dd1255c43cb8498279738ccChris Craik 57332cdb42368a904cbf7418de329868989e592daChris Craikfrom py_utils.refactor import annotated_symbol 6cef7893435aa41160dd1255c43cb8498279738ccChris Craik 7cef7893435aa41160dd1255c43cb8498279738ccChris Craik 8cef7893435aa41160dd1255c43cb8498279738ccChris Craikclass Module(object): 9cef7893435aa41160dd1255c43cb8498279738ccChris Craik 10cef7893435aa41160dd1255c43cb8498279738ccChris Craik def __init__(self, file_path): 11cef7893435aa41160dd1255c43cb8498279738ccChris Craik self._file_path = file_path 12cef7893435aa41160dd1255c43cb8498279738ccChris Craik 13cef7893435aa41160dd1255c43cb8498279738ccChris Craik with open(self._file_path, 'r') as f: 14cef7893435aa41160dd1255c43cb8498279738ccChris Craik self._snippet = annotated_symbol.Annotate(f) 15cef7893435aa41160dd1255c43cb8498279738ccChris Craik 16cef7893435aa41160dd1255c43cb8498279738ccChris Craik @property 17cef7893435aa41160dd1255c43cb8498279738ccChris Craik def file_path(self): 18cef7893435aa41160dd1255c43cb8498279738ccChris Craik return self._file_path 19cef7893435aa41160dd1255c43cb8498279738ccChris Craik 20cef7893435aa41160dd1255c43cb8498279738ccChris Craik @property 21cef7893435aa41160dd1255c43cb8498279738ccChris Craik def modified(self): 22cef7893435aa41160dd1255c43cb8498279738ccChris Craik return self._snippet.modified 23cef7893435aa41160dd1255c43cb8498279738ccChris Craik 24cef7893435aa41160dd1255c43cb8498279738ccChris Craik def FindAll(self, snippet_type): 25cef7893435aa41160dd1255c43cb8498279738ccChris Craik return self._snippet.FindAll(snippet_type) 26cef7893435aa41160dd1255c43cb8498279738ccChris Craik 27cef7893435aa41160dd1255c43cb8498279738ccChris Craik def FindChildren(self, snippet_type): 28cef7893435aa41160dd1255c43cb8498279738ccChris Craik return self._snippet.FindChildren(snippet_type) 29cef7893435aa41160dd1255c43cb8498279738ccChris Craik 30cef7893435aa41160dd1255c43cb8498279738ccChris Craik def Write(self): 31cef7893435aa41160dd1255c43cb8498279738ccChris Craik """Write modifications to the file.""" 32cef7893435aa41160dd1255c43cb8498279738ccChris Craik if not self.modified: 33cef7893435aa41160dd1255c43cb8498279738ccChris Craik return 34cef7893435aa41160dd1255c43cb8498279738ccChris Craik 35cef7893435aa41160dd1255c43cb8498279738ccChris Craik # Stringify before opening the file for writing. 36cef7893435aa41160dd1255c43cb8498279738ccChris Craik # If we fail, we won't truncate the file. 37cef7893435aa41160dd1255c43cb8498279738ccChris Craik string = str(self._snippet) 38cef7893435aa41160dd1255c43cb8498279738ccChris Craik with open(self._file_path, 'w') as f: 39cef7893435aa41160dd1255c43cb8498279738ccChris Craik f.write(string) 40