Changeset 34425

Show
Ignore:
Timestamp:
07/15/09 02:55:49 (4 years ago)
Author:
rezoo
Message:

変更点(r34400:r34424)をtrunkにマージ

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/python/twopy/trunk/twopy/comment.py

    r34396 r34425  
    1616        __datetime = re.compile(r"(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})\(.*\) (?P<hour>\d{2}):(?P<min>\d{2}):(?P<sec>\d{2})(\.(?P<csec>\d+)|)") 
    1717        __urls = re.compile(r"(ttps?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)") 
    18         __response = re.compile(r">>(\d{1,4}|>>[0-9]{1,4})") 
     18        __response = re.compile(r"(>>\d{1,4}|>>[0-9]{1,4})(-\d{1,4}|−[0-9]{1,4}|)") 
    1919         
    2020        def __init__(self, thread, line, number): 
     
    108108                if self.__responses_cache == None: 
    109109                        result = Comment.__response.finditer(self.body) 
    110                         l = [r.group(0) for r in result] 
     110                        l = [(r.group(1),r.group(2)) for r in result] 
    111111                        self.__responses_cache = l 
    112112                 
    113113                l = self.__responses_cache 
    114                 if returnType == "str": return l 
    115                 elif returnType == "int": 
    116                         ld = [int(unicodedata.normalize("NFKC", m[2:])) for m in l] 
    117                         return ld 
    118                 if returnType == "comment": 
    119                         ld = [int(unicodedata.normalize("NFKC", m[2:])) for m in l] 
    120                         lc = [self.thread[i] for i in ld if 0 < i <= self.thread.res] 
    121                         return lc  
     114                if returnType == "str": return ["".join(i) for i in l] 
     115                elif returnType == "int": return self.__makeIntegerLists(l) 
     116                elif returnType == "comment": 
     117                        rl  = self.__makeIntegerLists(l) 
     118                        rl2 = [] 
     119                        for i in rl: 
     120                                if type(i) == int: 
     121                                        if 0<i<=self.thread.res: rl2.append(self.thread[i]) 
     122                                else: rl2.append([self.thread[j] for j in i if 0<j<=self.thread.res]) 
     123                        return rl2 
     124                                         
    122125                else: raise TypeError 
    123126                         
    124127        res = property(extractResponses) 
    125128        responses = property(extractResponses) 
     129         
     130        def __makeIntegerLists(self, l): 
     131                rl = [] 
     132                for i in l: 
     133                        start = int(unicodedata.normalize("NFKC", i[0][2:])) 
     134                        if i[1] == "": rl.append(start) 
     135                        else: 
     136                                end   = int(unicodedata.normalize("NFKC", i[1][1:])) 
     137                                rl.append(range(start, end+1)) 
     138                return rl 
    126139         
    127140        def render(self):