#!/usr/bin/python3

import shlex
from io import StringIO

class SHL(shlex.shlex):
    def __init__(self, *args, **kvargs):
        shlex.shlex.__init__(self, *args, **kvargs)
    def read_token(self, *args, **kvargs):
        x = shlex.shlex.read_token(self, *args, **kvargs)
        print("read_token <%s>"%x)
        return x
    def get_token(self, *args, **kvargs):
        x = shlex.shlex.get_token(self, *args, **kvargs)
        print("get_token <%s>"%x)
        return x
    def __next__(self, *args, **kvargs):
        x = shlex.shlex.__next__(self, *args, **kvargs)
        print("__next__ <%s>"%x)
        return x

class XIO(StringIO):
    def __init__(self, *args, **kvargs):
        StringIO.__init__(self, *args, **kvargs)
    def readline(self, *args, **kvargs):
        print("readline")
        return StringIO.readline(self, *args, **kvargs)
    def read(self, *args, **kvargs):
        x = StringIO.readline(self, *args, **kvargs)
        print("read <%s>"%x)
        return x

s = SHL("", posix=True)
s.debug = 1
s.whitespace_split = True

s.state = ' '
s.push_source(XIO("xx xx"))
print("------------- %s"%list(s))

s.state = ' '
s.push_source(XIO("yy yy"))
print("------------- %s"%list(s))

s.state = ' '
s.push_source(XIO('a "c cds cds" d'))
print("------------- %s"%list(s))
