Ejemplo n.º 1
0
 def _normalize_meta(cls, meta):
     meta_d = {}
     meta_l = ([
         appier.split_unescape(element, ":", 2) if element.startswith("$")
         else appier.split_unescape(element, ":", 1) for element in meta
     ] if meta else [])
     for parts in meta_l:
         if len(parts) == 2:
             parts = None, parts[0], parts[1]
         type, key, value = parts
         if key in meta_d:
             old = meta_d[key]
             is_sequence = isinstance(old, (list, tuple))
             if not is_sequence:
                 old = [old]
             old.append(value)
             value = old
         if type == "$list" and not isinstance(value, list):
             value = [value]
         if type == "$int":
             value = int(value)
         if type == "$float":
             value = float(value)
         if type == "$bool":
             value = value in ("1", "true", "True")
         meta_d[key] = value
     return meta_d
Ejemplo n.º 2
0
    def test_split_unescape(self):
        result = appier.split_unescape("foo bar")
        self.assertEqual(result, ["foo", "bar"])

        result = appier.split_unescape("foo bar hello world", max=2)
        self.assertEqual(result, ["foo", "bar", "hello world"])

        result = appier.split_unescape("foo,bar", ",")
        self.assertEqual(result, ["foo", "bar"])

        result = appier.split_unescape("foo$,bar", ",", escape="$")
        self.assertEqual(result, ["foo,bar"])

        result = appier.split_unescape("foo$$,bar",
                                       ",",
                                       escape="$",
                                       unescape=True)
        self.assertEqual(result, ["foo$", "bar"])

        result = appier.split_unescape("foo$$,bar",
                                       ",",
                                       escape="$",
                                       unescape=False)
        self.assertEqual(result, ["foo$$", "bar"])

        result = appier.split_unescape("foo$", ",", escape="$", unescape=True)
        self.assertEqual(result, ["foo$"])

        result = appier.split_unescape("foo\\\\\\:bar", ":", unescape=True)
        self.assertEqual(result, ["foo\\:bar"])

        result = appier.split_unescape("foo\\\\:bar", ":", unescape=True)
        self.assertEqual(result, ["foo\\", "bar"])
Ejemplo n.º 3
0
    def test_split_unescape(self):
        result = appier.split_unescape("foo bar")
        self.assertEqual(result, ["foo", "bar"])

        result = appier.split_unescape("foo bar hello world", max = 2)
        self.assertEqual(result, ["foo", "bar", "hello world"])

        result = appier.split_unescape("foo,bar", ",")
        self.assertEqual(result, ["foo", "bar"])

        result = appier.split_unescape("foo$,bar", ",", escape = "$")
        self.assertEqual(result, ["foo,bar"])

        result = appier.split_unescape("foo$$,bar", ",", escape = "$", unescape = True)
        self.assertEqual(result, ["foo$", "bar"])

        result = appier.split_unescape("foo$$,bar", ",", escape = "$", unescape = False)
        self.assertEqual(result, ["foo$$", "bar"])

        result = appier.split_unescape("foo$", ",", escape = "$", unescape = True)
        self.assertEqual(result, ["foo$"])

        result = appier.split_unescape("foo\\\\\\:bar", ":", unescape = True)
        self.assertEqual(result, ["foo\\:bar"])

        result = appier.split_unescape("foo\\\\:bar", ":", unescape = True)
        self.assertEqual(result, ["foo\\", "bar"])
Ejemplo n.º 4
0
 def _tuples_to_parts(cls, tuples):
     parts = []
     for triplet in tuples:
         name, material, color = appier.split_unescape(triplet, ":", 2)
         part = dict(name=name, material=material, color=color)
         parts.append(part)
     return parts
Ejemplo n.º 5
0
 def _unpack_query(cls, query):
     query = query.strip("?")
     parts = appier.split_unescape(query, "&")
     options = dict()
     for part in parts:
         key, value = part.split("=")
         if not key in options:
             options[key] = value
         elif isinstance(options[key], list):
             options[key].append(value)
         else:
             options[key] = [options[key], value]
     return options
Ejemplo n.º 6
0
 def _parse_extra_s(cls, extra_s):
     extra = dict()
     for extra_i in extra_s:
         name, initials, engraving = appier.split_unescape(extra_i, ":", 2)
         extra[name] = dict(initials=initials, engraving=engraving or None)
     return extra