commit: c8a9eee2bc05ec7c02110318277cc0604c69ad44 Author: André Erdmann <dywi <AT> mailerd <DOT> de> AuthorDate: Mon Mar 31 15:39:17 2014 +0000 Commit: André Erdmann <dywi <AT> mailerd <DOT> de> CommitDate: Mon Mar 31 15:39:17 2014 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=c8a9eee2
config/entryutil: iter_entries_with_value_type() --- roverlay/config/entryutil.py | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/roverlay/config/entryutil.py b/roverlay/config/entryutil.py index 716c166..899bd4d 100644 --- a/roverlay/config/entryutil.py +++ b/roverlay/config/entryutil.py @@ -65,6 +65,29 @@ def find_config_path ( name ): raise roverlay.config.exceptions.ConfigOptionNotFound ( name ) # --- end of find_config_path (...) --- +def iter_visible_entries(): + for entry_key, entry in CONFIG_ENTRY_MAP.items(): + if entry is not None: + # else entry is disabled + yield ( entry_key, entry ) +# --- end of iter_visible_entries (...) --- + +def iter_entries_with_value_type ( value_types ): + for key, entry in iter_visible_entries(): + if isinstance ( entry, dict ): + if entry.get ( 'value_type' ) in value_types: + yield ( key, entry ) + elif entry and isinstance ( entry, str ): + # ^ not really necessary + real_key, real_entry = deref_entry_safe ( key ) + if ( + isinstance ( real_entry, dict ) + and real_entry.get ( 'value_type' ) in value_types + ): + yield ( key, real_entry ) + # -- end for +# --- end of iter_entries_with_value_type (...) --- + def iter_config_keys(): for key, entry in CONFIG_ENTRY_MAP.items(): if isinstance ( entry, dict ): @@ -75,12 +98,9 @@ def _iter_entries(): """Iterates through all entries in CONFIG_ENTRY_MAP and yields config entry information (entry name, description). """ - for entry_key, entry in CONFIG_ENTRY_MAP.items(): + for entry_key, entry in iter_visible_entries(): name = entry_key.upper() - if entry is None: - # entry is disabled - pass - elif isinstance ( entry, dict ): + if isinstance ( entry, dict ): description = entry.get ( 'description' ) or entry.get ( 'desc' ) if description: if isinstance ( description, str ):