| 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 |