示例#1
0
def to_effect(text):
    '''Effect の文字列表現を内部形式へ変換する
    '''

    text = text.replace(u'~', u'~')
    text = text.replace(u'〜', u'~')
    text = text.replace(u'、', u'')

    try:    
        if ignore_re.match(text):
            return None
    
        # ランクに関係なく
        m = rank_regardless_re.match(text)
        if m:
            return None
        
        # 専用
        m = personalized_re.match(text)
        if m: return None
    
        # 条件
        condition, effect = parse_condition(text)
    
        e = parse_helper.parse_effect(effect)
        e.condition = condition
        return unicode(e)
    except Exception, e:
        # raise
        raise Exception(u'パースできませんでした: "' + text + u'", ' + e.message)
示例#2
0
 def parse_effects(self, td):
     '''改造の効果をパースする'''
     result = []
     text = ' '.join(td.findAll(text=True))
     m = re.findall(ur'\S+\s*[+\-]\s*\d+', text)
     for s in m:
         effect = parse_effect(s)
         result.append(effect)
     return result
示例#3
0
def get_effects(head):
    effects = []

    # かならず「減少/増加」効果がある前提で実装している
    node = head.findNext(lambda tag: tag.name == 'span'
                         and tag.find(text=re.compile(u'減少|増加')))
    if not node:
        logging.warning(u'効果が存在しません: ' + parse_helper.get_string(head));
        return effects

    for effect in node.parent.findAll('span'):
        effect = parse_helper.parse_effect(parse_helper.get_string(effect))
        if effect:
            effects.append(effect)
    return effects