| OLD | NEW |
| 1 # coding: utf-8 | 1 # coding: utf-8 |
| 2 | 2 |
| 3 # This file is part of the Adblock Plus build tools, | 3 # This Source Code Form is subject to the terms of the Mozilla Public |
| 4 # Copyright (C) 2006-2014 Eyeo GmbH | 4 # License, v. 2.0. If a copy of the MPL was not distributed with this |
| 5 # | 5 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| 6 # Adblock Plus is free software: you can redistribute it and/or modify | |
| 7 # it under the terms of the GNU General Public License version 3 as | |
| 8 # published by the Free Software Foundation. | |
| 9 # | |
| 10 # Adblock Plus is distributed in the hope that it will be useful, | |
| 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 13 # GNU General Public License for more details. | |
| 14 # | |
| 15 # You should have received a copy of the GNU General Public License | |
| 16 # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | |
| 17 | |
| 18 # Note: These are the base functions common to all packagers, the actual | |
| 19 # packagers are implemented in packagerGecko and packagerChrome. | |
| 20 | 6 |
| 21 import os, codecs, ConfigParser | 7 import os, codecs, ConfigParser |
| 22 | 8 |
| 23 class Item(tuple): | 9 class Item(tuple): |
| 24 def __new__(cls, name, value, source): | 10 def __new__(cls, name, value, source): |
| 25 result = super(Item, cls).__new__(cls, (name, value)) | 11 result = super(Item, cls).__new__(cls, (name, value)) |
| 26 result.source = source | 12 result.source = source |
| 27 return result | 13 return result |
| 28 | 14 |
| 29 class ChainedConfigParser: | 15 class ChainedConfigParser: |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 if name not in seen: | 105 if name not in seen: |
| 120 seen.add(name) | 106 seen.add(name) |
| 121 result.append(Item(name, value, config.source_path)) | 107 result.append(Item(name, value, config.source_path)) |
| 122 return result | 108 return result |
| 123 | 109 |
| 124 def option_source(self, section, option): | 110 def option_source(self, section, option): |
| 125 for config in self.chain: | 111 for config in self.chain: |
| 126 if config.has_section(section) and config.has_option(section, option): | 112 if config.has_section(section) and config.has_option(section, option): |
| 127 return config.source_path | 113 return config.source_path |
| 128 raise ConfigParser.NoOptionError(option, section) | 114 raise ConfigParser.NoOptionError(option, section) |
| OLD | NEW |