####################################################################################################
#
# PySpice - A Spice Package for Python
# Copyright (C) 2014 Fabrice Salvaire
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
####################################################################################################
__all__ = [
'join_dict',
'join_lines',
'join_list',
'str_spice',
'str_spice_list',
]
####################################################################################################
import os
####################################################################################################
from PySpice.Unit.Unit import UnitValue
####################################################################################################
[docs]def str_spice(obj, unit=True):
# Fixme: right place ???
"""Convert an object to a Spice compatible string."""
if isinstance(obj, UnitValue):
if unit:
return obj.str_spice()
else: # Fixme: ok ???
return obj.str(spice=False, space=False, unit=False)
else:
return str(obj)
####################################################################################################
[docs]def str_spice_list(*args):
return [str_spice(x) for x in args]
####################################################################################################
[docs]def join_lines(items, prefix=''):
return os.linesep.join([prefix + str(item)
for item in items
if item is not None]) # Fixme: and item
####################################################################################################
[docs]def join_list(items):
# return ' '.join([str_spice(item)
# for item in items
# if item is not None and str_spice(item)])
values = []
for item in items:
if item is not None:
str_value = str_spice(item)
if str_value:
values.append(str_value)
return ' '.join(values)
####################################################################################################
####################################################################################################
#
# Note:
# PR #136 has non understood changes
# https://github.com/FabriceSalvaire/PySpice/pull/136/files
#
####################################################################################################
[docs]def join_dict(d):
# Fixme: remove trailing _ to key ???
return ' '.join([f"{key}={str_spice(value)}"
for key, value in sorted(d.items())
if value is not None])