Ejemplo n.º 1
0
Archivo: cli.py Proyecto: jad-b/atomic
 def link(self, src, dst, type, args, delete=False, **kwargs):
     """Create, replace, or delete a link."""
     if delete:
         self.api.Edge.delete(src, dst)
     else:
         key_values = parse.parse_key_values(" ".join(args))
         return self.api.Edge.create(src, dst, type=type, **key_values)
Ejemplo n.º 2
0
def test_parse_key_values():
    TestData = namedtuple("TestData", ["input", "out"])
    testcases = (
        TestData("", {}),
        TestData("body=", {"body": ""}),
        TestData("body= cats=two", {"body": "", "cats": "two"}),
        TestData("body=I don't know what to do with my hands", {"body": "I don't know what to do with my hands"}),
        TestData("line1=I think line2=My fear's come true", {"line1": "I think", "line2": "My fear's come true"}),
        TestData("tag1= key1=value1 tag2=", {"tag1": "", "tag2": "", "key1": "value1"}),
    )
    for case in testcases:
        obs = parse.parse_key_values(case.input)
        assert case.out == obs
Ejemplo n.º 3
0
Archivo: cli.py Proyecto: jad-b/atomic
    def _parse_name_kvs(self, args):
        """Parses the node name as a special-case.

        Example::

            atomic <cmd> <name w/ optional spaces> key1=value one key2=...

        Args:
            args (List[str]): List of strings, such as what :func:`shlex.split`
                would produce.
        Returns:
            dict: Dictionary containing a 'name' key, if present, and a any and
                all parsed key-values and tags.
        """
        line = " ".join(args)  # Rejoin args for regex parsing
        name = parse.parse_non_kv(line)
        kvs = parse.parse_key_values(line[len(name) :])
        if name:
            kvs.setdefault("name", name)
        return kvs