Skip to content

Commit

Permalink
Merge branch 'master' of github.com:igaray/name-pryer
Browse files Browse the repository at this point in the history
  • Loading branch information
igaray committed May 11, 2017
2 parents a73a641 + fc9bb65 commit 72910d5
Showing 1 changed file with 71 additions and 72 deletions.
143 changes: 71 additions & 72 deletions name_pryer.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,33 +146,33 @@
"""

ERRMSGS = {
"file-arity" : "-f takes a filename parameter",
"case-arity" : "-c takes one parameter",
"case-type" : "valid parameters for -c: lc uc tc sc",
"extension-arity" : "+e requires one parameter",
"delete-arity" : "-d requires two parameters",
"delete-type-1" : "1st parameter to -d must be an integer",
"delete-type-2" : "2nd parameter to -d must be either 'end' or integer",
"delete-type-3" : "integer parameters to -d must be non negative",
"delete-index-1" : "1st parameter to -d is out of range",
"delete-index-2" : "2nd parameter to -d is out of range",
"delete-index-3" : "1st parameter to -d is greater than second argument",
"insert-arity" : "-i requires two parameters",
"insert-type-1" : "2nd parameter to -i must be either 'end' or an integer",
"insert-type-2" : "integer parameters to -i must be non-negative",
"indert-index" : "2nd parameter to -i is out of range",
"pattern-arity" : "-p requires two parameters",
"replace-arity" : "-r requires two parameters",
"subs-arity" : "-s requires a parameter",
"subs-type" : "valid parameters for -s: sd sp su ud up us pd ps pu dp ds du",
"verbosity-arity" : "-vX requires a parameter",
"verbosity-type" : "valid parameters for -v: 0 1 2 3",
"duplicate" : "action will result in two or more identical file names!",
"tokenize-arity" : "-t requires one parameter",
"too_many_tokens" : "a file has too many tokens",
"filemode-arity" : "-m requires one parameter",
"directory-arity" : "-D requires one parameter",
"glob-arity" : "-g requires one parameter"
"file-arity": "-f takes a filename parameter",
"case-arity": "-c takes one parameter",
"case-type": "valid parameters for -c: lc uc tc sc",
"extension-arity": "+e requires one parameter",
"delete-arity": "-d requires two parameters",
"delete-type-1": "1st parameter to -d must be an integer",
"delete-type-2": "2nd parameter to -d must be either 'end' or integer",
"delete-type-3": "integer parameters to -d must be non negative",
"delete-index-1": "1st parameter to -d is out of range",
"delete-index-2": "2nd parameter to -d is out of range",
"delete-index-3": "1st parameter to -d is greater than second argument",
"insert-arity": "-i requires two parameters",
"insert-type-1": "2nd parameter to -i must be either 'end' or an integer",
"insert-type-2": "integer parameters to -i must be non-negative",
"indert-index": "2nd parameter to -i is out of range",
"pattern-arity": "-p requires two parameters",
"replace-arity": "-r requires two parameters",
"subs-arity": "-s requires a parameter",
"subs-type": "valid arguments for -s: sd sp su ud up us pd ps pu dp ds du",
"verbosity-arity": "-vX requires a parameter",
"verbosity-type": "valid parameters for -v: 0 1 2 3",
"duplicate": "action will result in two or more identical file names!",
"tokenize-arity": "-t requires one parameter",
"too_many_tokens": "a file has too many tokens",
"filemode-arity": "-m requires one parameter",
"directory-arity": "-D requires one parameter",
"glob-arity": "-g requires one parameter"
}

VALID_FLAGS = frozenset([
Expand All @@ -184,13 +184,13 @@
])
VALID_CASE_OPTIONS = frozenset(["lc", "uc", "tc", "sc"])

SPLIT_REGEX = re.compile(r"[a-zA-Z0-9]+|[^a-zA-Z0-9]+")
FIRST_CAP_REGEX = re.compile(r"(.)([A-Z][a-z]+)")
ALL_CAP_REGEX = re.compile(r"([a-z0-9])([A-Z])")
SPLIT_REGEX = re.compile(r"[a-zA-Z0-9]+|[^a-zA-Z0-9]+")
FIRST_CAP_REGEX = re.compile(r"(.)([A-Z][a-z]+)")
ALL_CAP_REGEX = re.compile(r"([a-z0-9])([A-Z])")
ALPHANUMERIC_REGEX = re.compile(r"[a-zA-Z0-9]+")

ACTION_HANDLERS = {}
CASE_FUNS = {}
CASE_FUNS = {}
SUBSTITUTE_FUNS = {}


Expand All @@ -202,19 +202,19 @@ class Config:

def __init__(self):
rows, cols = os.popen('stty size', 'r').read().split()
self.rows = int(rows)
self.cols = int(cols)
self.rows = int(rows)
self.cols = int(cols)
# 0: silent running
# 1: default, show file name buffer before confirmation
# 2: verbose, show actions and file name buffer before confirmation
# 3: very verbose, show file name buffer state after each action
self.verbosity = 1
self.file_mode = 'f'
self.yes_mode = False
self.undo = False
self.yes_mode = False
self.undo = False
self.recursive = False
self.directory = os.getcwd()
self.pattern = None
self.pattern = None


class Action:
Expand All @@ -228,7 +228,7 @@ class File:
def __init__(self, path, name, ext=""):
self.path = path
self.name = name
self.ext = ext
self.ext = ext

def full(self):
if self.ext:
Expand Down Expand Up @@ -259,9 +259,9 @@ def escape_pattern(pattern):


def get_file_listing(config):
cwd = config.directory
cwd = config.directory
result = []
items = []
items = []

if config.recursive:
if config.pattern:
Expand Down Expand Up @@ -402,10 +402,10 @@ def join_camel_case(string):


def parse_args(argv):
config = Config()
config = Config()
actions = []
l = len(argv)
i = 1
l = len(argv)
i = 1

if l == 1:
print(SHORT_USAGE)
Expand Down Expand Up @@ -786,15 +786,15 @@ def process_extension(mode, ext, name):
if ext and name:
# change the extension to ext
if "." in name:
aux = name.split(".")[-1]
aux = name.split(".")[-1]
name = name[0:len(name) - len(aux) - 1]
name += ext
else:
# remove the extension
if "." in name:
ext = name.split(".")[-1]
ext = name.split(".")[-1]
name = name[0:len(name) - len(ext) - 1]
ext = ""
ext = ""
else:
ext = ""
return name, ext
Expand All @@ -812,20 +812,20 @@ def process_insert(name, text, pos):


def process_pattern_match(name, pattern_ini, pattern_end, count):
pattern = pattern_ini
pattern = pattern.replace(".", "\.")
pattern = pattern.replace("[", "\[")
pattern = pattern.replace("]", "\]")
pattern = pattern.replace("(", "\(")
pattern = pattern.replace(")", "\)")
pattern = pattern.replace("?", "\?")
pattern = pattern.replace("{#}", "([0-9]*)")
pattern = pattern.replace("{L}", "([a-zA-Z]*)")
pattern = pattern.replace("{C}", "([\S]*)")
pattern = pattern.replace("{X}", "([\S\s]*)")
pattern = pattern.replace("{@}", "(.*)")
pattern = pattern_ini
pattern = pattern.replace(".", "\.")
pattern = pattern.replace("[", "\[")
pattern = pattern.replace("]", "\]")
pattern = pattern.replace("(", "\(")
pattern = pattern.replace(")", "\)")
pattern = pattern.replace("?", "\?")
pattern = pattern.replace("{#}", "([0-9]*)")
pattern = pattern.replace("{L}", "([a-zA-Z]*)")
pattern = pattern.replace("{C}", "([\S]*)")
pattern = pattern.replace("{X}", "([\S\s]*)")
pattern = pattern.replace("{@}", "(.*)")
repattern = re.compile(pattern)
newname = pattern_end
newname = pattern_end
try:
search = repattern.search(name)
if search:
Expand Down Expand Up @@ -1000,18 +1000,18 @@ def process_verbosity(config, lvl):


ACTION_HANDLERS = {
"camelcase" : handle_camel_case,
"case" : handle_case,
"delete" : handle_delete,
"extension" : handle_extension,
"file" : handle_file,
"insert" : handle_insert,
"pattern" : handle_pattern_match,
"replace" : handle_replace,
"sanitize" : handle_sanitize,
"substitute" : handle_substitute,
"tokenize" : handle_tokenize,
"verbosity" : handle_verbosity
"camelcase": handle_camel_case,
"case": handle_case,
"delete": handle_delete,
"extension": handle_extension,
"file": handle_file,
"insert": handle_insert,
"pattern": handle_pattern_match,
"replace": handle_replace,
"sanitize": handle_sanitize,
"substitute": handle_substitute,
"tokenize": handle_tokenize,
"verbosity": handle_verbosity
}
CASE_FUNS = {
"uc": lambda x: x.upper(),
Expand Down Expand Up @@ -1064,9 +1064,8 @@ def obtain_confirmation(config, filename_fn_buffer):


def verbosity_set(actions):
f = lambda x, y: x or y
l = [(a.name == "verbosity") and (a.arg1 > 1) for a in actions]
r = functools.reduce(f, l, False)
r = functools.reduce(lambda x, y: x or y, l, False)
return r


Expand Down

0 comments on commit 72910d5

Please sign in to comment.