Still needs implementing format_as_block, and switching input and output to use sys.stdin.readline() and sys.stdout.write(line).pull/3961/head
parent
a6da17eeeb
commit
fef5bee020
1 changed files with 53 additions and 0 deletions
@ -0,0 +1,53 @@ |
|||||||
|
#!/usr/bin/python |
||||||
|
|
||||||
|
import re |
||||||
|
import sys |
||||||
|
|
||||||
|
print 'Number of arguments:', len(sys.argv), 'arguments.' |
||||||
|
print 'Argument List:', str(sys.argv) |
||||||
|
|
||||||
|
with open(sys.argv[0], "r") as input_file: |
||||||
|
lines = input_file.readlines() |
||||||
|
|
||||||
|
def peek(): |
||||||
|
return lines[0] |
||||||
|
|
||||||
|
def read_line(): |
||||||
|
return lines.pop(0) |
||||||
|
|
||||||
|
def more_input(): |
||||||
|
return lines |
||||||
|
|
||||||
|
|
||||||
|
comment_regex = r'^(\s*)//\s(.*)$' |
||||||
|
|
||||||
|
def is_comment(line): |
||||||
|
return re.search(comment_regex, line) |
||||||
|
|
||||||
|
def isnt_comment(line): |
||||||
|
return not is_comment(line) |
||||||
|
|
||||||
|
def next_line(predicate): |
||||||
|
if not more_input(): |
||||||
|
return False |
||||||
|
return predicate(peek()) |
||||||
|
|
||||||
|
|
||||||
|
output_lines = [] |
||||||
|
|
||||||
|
def output(line): |
||||||
|
output_lines.append(line) |
||||||
|
|
||||||
|
|
||||||
|
while more_input(): |
||||||
|
while next_line(isnt_comment): |
||||||
|
output(read_line()) |
||||||
|
|
||||||
|
comment_block = [] |
||||||
|
# Get all lines in the same comment block. We could restrict the indentation |
||||||
|
# to be the same as the first line of the block, but it's probably ok. |
||||||
|
while (next_line(is_comment)): |
||||||
|
comment_block.append(read_line()) |
||||||
|
|
||||||
|
for line in format_as_block(comment_block): |
||||||
|
output(line) |
Loading…
Reference in new issue