OSDN Git Service

625bdad7c527d922734aad3676142489871fb89d
[ti2/ti2.git] / linkpair / linkobject.py
1 # vim: tabstop=4 shiftwidth=4 softtabstop=4
2 # -*- coding: utf-8 -*-
3 #
4
5 class LinkObject(object):
6     DEFAULT_TYPE = 1
7
8     def __init__(self, label, metadata={}):
9         self.label = label
10         self.metadata = metadata
11
12     @apply
13     def label():
14         def get(label):
15             return self.label
16
17         def set(self, label):
18             self.label = label
19
20     @apply
21     def metadata():
22         def get(self):
23             return self.metadata
24
25         def set(self, metadata):
26             self.metadata = metadata
27
28     @apply
29     def attr():
30         def get(self, attr):
31             return self.metadata[attr]
32
33         def set(self, attr, attr_value):
34             self.metadata[attr] = attr_value
35
36     def __str__(self):
37         return self.label
38
39     def __repr__(self):
40         return "{\"label\":\"" + self.label + \
41             "\",\"meta\":" + self._blank_dict(self.metadata) + "}"
42
43     def _blank_dict(self, dict_object):
44         if len(dict_object) > 0:
45             return self._dict_to_json(dict_object)
46         else:
47             return "{ \"NOT_SPECIFIED\":\"1\" }"
48
49     def _dict_to_json(self, dict_object):
50         json_strings = "{"
51         for dict_key in dict_object.keys():
52             json_strings += "\"" + dict_key + "\":\"" + dict_object[dict_key] + "\","
53         json_strings = json_strings.rstrip(",") + "}"
54         return json_strings
55         
56     def __add__(self, label):
57         return self.label + label