Add missing parameters.py file
This commit is contained in:
parent
7db1ab36fa
commit
5227217b7f
94
ffmpegwrapper/parameters.py
Normal file
94
ffmpegwrapper/parameters.py
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
ffmpegwrapper.parameters
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Implements a basic structure for commandline
|
||||
arguments and some helpers to operate with them.
|
||||
|
||||
:copyright: (c) 2012 by Mathias Koehler.
|
||||
:license: BSD, see LICENSE for more details.
|
||||
"""
|
||||
from itertools import chain
|
||||
from collections import MutableSequence, namedtuple
|
||||
|
||||
try:
|
||||
from itertools import ifilter
|
||||
except ImportError:
|
||||
ifilter = filter
|
||||
|
||||
|
||||
def format_parameter(*args, **kwargs):
|
||||
"""Format a parameter string
|
||||
|
||||
>>> format_parameter(ex=['example', 'one'])
|
||||
'"ex=example:one"'
|
||||
>>> format_parameter('one', 'two', 'three')
|
||||
'one:two:three'
|
||||
|
||||
You can mix the arguments und keyword arguments.
|
||||
"""
|
||||
parameter_list = []
|
||||
for value in args:
|
||||
if value is not None:
|
||||
parameter_list.append(str(value))
|
||||
for key, value in kwargs.items():
|
||||
try:
|
||||
if not value:
|
||||
parameter_list.append(key)
|
||||
else:
|
||||
parameter_list.append("=".join([key, value]))
|
||||
except TypeError:
|
||||
values = ':'.join(kwargs[key])
|
||||
parameter_list.append("=".join([key, values]))
|
||||
result = ':'.join(parameter_list)
|
||||
if kwargs:
|
||||
return '"%s"' % result
|
||||
return result
|
||||
|
||||
|
||||
Parameter = namedtuple('Parameter', ['name', 'value'])
|
||||
|
||||
|
||||
class ParameterContainer(MutableSequence):
|
||||
|
||||
def __init__(self, *containers):
|
||||
self.container_list = list(containers)
|
||||
|
||||
def add_parameter(self, key, value):
|
||||
"""Adds an parameter to the container."""
|
||||
self.container_list.append(Parameter(key, value))
|
||||
|
||||
def add_formatparam(self, name, *args, **kwargs):
|
||||
"""Format the value of an parameter from the *args **kwargs
|
||||
and append it to the container."""
|
||||
parameter = format_parameter(*args, **kwargs)
|
||||
self.add_parameter(name, parameter)
|
||||
|
||||
def insert(self, index, value):
|
||||
self.container_list.insert(index, value)
|
||||
|
||||
def iteritems(self):
|
||||
return iter(self.container_list)
|
||||
|
||||
def __iter__(self):
|
||||
return ifilter(None, chain.from_iterable(self.container_list))
|
||||
|
||||
def __len__(self):
|
||||
return self.container_list.__len__()
|
||||
|
||||
def __setitem__(self, index, value):
|
||||
self.container_list.__setitem__(index, value)
|
||||
|
||||
def __getitem__(self, index):
|
||||
return self.container_list.__getitem__(index)
|
||||
|
||||
def __delitem__(self, index):
|
||||
self.container_list.__delitem__(index)
|
||||
|
||||
def __contains__(self, other):
|
||||
return self.container_list.__contains__(other)
|
||||
|
||||
def __repr__(self):
|
||||
return "<{cls} {opts}>".format(
|
||||
opts=list(self), cls=self.__class__.__name__)
|
||||
Loading…
Reference in a new issue