|
|
@@ -28,16 +28,24 @@ def test(): |
|
|
|
assert decimal_to_alphabet(0, '0123456789') == '0' |
|
|
|
|
|
|
|
|
|
|
|
def convert_start_stop(s, alphabet): |
|
|
|
if ':' in s: |
|
|
|
valalphabet, value = s.split(':') |
|
|
|
if not valalphabet: |
|
|
|
valalphabet = alphabet |
|
|
|
else: |
|
|
|
valalphabet, value = '0123456789', s |
|
|
|
return alphabet_to_decimal(value, valalphabet) |
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
|
if len(sys.argv) == 2 and sys.argv[1] == '--test': |
|
|
|
test() |
|
|
|
elif len(sys.argv) == 4 or (len(sys.argv) == 5 and sys.argv[2] == '--decimal'): |
|
|
|
if len(sys.argv) == 4: |
|
|
|
alphabet = sys.argv[1] |
|
|
|
start, stop = map(lambda x: alphabet_to_decimal(x, alphabet), sys.argv[2:]) |
|
|
|
else: |
|
|
|
alphabet = sys.argv[1] |
|
|
|
start, stop = map(int, sys.argv[3:]) |
|
|
|
elif len(sys.argv) in (3, 4): |
|
|
|
if len(sys.argv) == 3: |
|
|
|
sys.argv.append(sys.argv[-1]) |
|
|
|
alphabet = sys.argv[1] |
|
|
|
start, stop = map(lambda x: convert_start_stop(x, alphabet), sys.argv[2:]) |
|
|
|
for i in range(start, stop + 1): |
|
|
|
try: |
|
|
|
sys.stdout.write(decimal_to_alphabet(i, alphabet) + '\n') |
|
|
@@ -48,7 +56,10 @@ if __name__ == '__main__': |
|
|
|
pass |
|
|
|
break |
|
|
|
else: |
|
|
|
print('Usage: alphabetseq ALPHABET [--decimal] START STOP', file = sys.stderr) |
|
|
|
print('Usage: alphabetseq ALPHABET START [STOP]', file = sys.stderr) |
|
|
|
print('Generates the sequence from START to STOP (inclusive) using ALPHABET', file = sys.stderr) |
|
|
|
print('By default, START and STOP are expressed in ALPHABET. With --decimal, they are treated as decimal values instead.', file = sys.stderr) |
|
|
|
print('`alphabetseq 0123456789 $N $M` is equivalent to `seq $N $M`.', file = sys.stderr) |
|
|
|
print('If STOP is omitted, it defaults to START, effectively making this a simple base transformation', file = sys.stderr) |
|
|
|
print('START and STOP have values of the form [[VALALPHABET]:]VALUE.', file = sys.stderr) |
|
|
|
print(' In the [VALALPHABET]:VALUE form, VALUE is expressed in terms of VALALPHABET, which defaults to ALPHABET if omitted.', file = sys.stderr) |
|
|
|
print(' In the VALUE form, it is treated as a decimal number.', file = sys.stderr) |
|
|
|
sys.exit(1) |