Skip to content

Commit cfaf76c

Browse files
authored
Merge pull request #48 from mrmdrogers/add_namespace_separator_argument
Add namespace separator argument for redis databases.
2 parents 4966d48 + 0ddb072 commit cfaf76c

File tree

4 files changed

+17
-6
lines changed

4 files changed

+17
-6
lines changed

README.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ After install used it from console:
6161
not specified, all data types will be returned.
6262
Allowed values arestring, hash, list, set, zset
6363
-f --format TYPE Output type format: json or text (by default)
64+
-x --separator SEPARATOR Specify namespace separator. Default is ':'
6465

6566
If you have large database try running first with ``--limit`` option to
6667
run first limited amount of keys. Also run with ``--types`` to limit

rma/application.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,10 @@ class RmaApplication(object):
7979
REDIS_TYPE_ID_ZSET: [],
8080
}
8181

82-
def __init__(self, host="127.0.0.1", port=6367, password=None, db=0, match="*", limit=0, filters=None, logger=None, format="text"):
82+
def __init__(self, host="127.0.0.1", port=6367, password=None, db=0, match="*", limit=0, filters=None, logger=None, format="text", separator=":"):
8383
self.logger = logger or logging.getLogger(__name__)
8484

85-
self.splitter = SimpleSplitter()
85+
self.splitter = SimpleSplitter(separator)
8686
self.isTextFormat = format == "text"
8787
self.reporter = TextReporter() if self.isTextFormat else JsonReporter()
8888
self.redis = connect_to_redis(host=host, port=port, db=db, password=password)

rma/cli/rma_cli.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ def main():
7070
dest="format",
7171
default="text",
7272
help="Output type format: json or text (by default)")
73+
parser.add_argument("-x", "--separator",
74+
dest="separator",
75+
default=":",
76+
help="Specify namespace separator. Default is ':'")
7377

7478
options = parser.parse_args()
7579

@@ -91,7 +95,8 @@ def main():
9195
filters['types'].append(x)
9296

9397
app = RmaApplication(host=options.host, port=options.port, db=options.db, password=options.password,
94-
match=options.match, limit=options.limit, filters=filters, format=options.format)
98+
match=options.match, limit=options.limit, filters=filters, format=options.format,
99+
separator=options.separator)
95100

96101
start_time = time.clock()
97102
app.run()

rma/splitter.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,15 @@ def map_part_to_glob(index, part):
2626

2727

2828
class SimpleSplitter(object):
29-
def split(self, data, separator=":"):
30-
pass1 = map(lambda x: list(map_part_to_glob(i, y) for i, y in enumerate(x.split(separator))), data)
29+
separator = ':'
30+
31+
def __init__(self, separator):
32+
self.separator = separator
33+
34+
def split(self, data):
35+
pass1 = map(lambda x: list(map_part_to_glob(i, y) for i, y in enumerate(x.split(self.separator))), data)
3136
pass2 = self.fold_to_tree(pass1)
32-
return self.unfold_to_list(pass2, separator)
37+
return self.unfold_to_list(pass2, self.separator)
3338

3439
def fold_to_tree(self, pass1):
3540
tree = {}

0 commit comments

Comments
 (0)