Exemplo n.º 1
0
def search_4_test():
    '''
    結合する場合
    '''

    txt = '''
[商品]あいうえお(新発売) ※12/1新発売
[個数]3個
[紹介]
これはとても良い商品です。
新鮮でおいしいよ。
'''
    re_txt = '''
\[商品\](\S+)<<=item_name>> ※(\S+)<<=additional_info>>
\[個数\]([0-9])<<=item_count>>個
\[紹介\]
(.+)<<=item_detail+>>
(.+)<<=item_detail+>>
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret['item_name'], 'あいうえお(新発売)')
    eq_(ret['additional_info'], '12/1新発売')
    eq_(ret['item_count'], '3')
    eq_(ret['item_detail'], 'これはとても良い商品です。新鮮でおいしいよ。')
Exemplo n.º 2
0
def loop_2_test():
    '''
    loop okのパターン
    '''

    txt = '''
購入リスト


合計金額: 1000円
'''
    re_txt = '''
購入リスト
<<@loop exit="合計金額">>
\-\-\-\-\-
\[商品\](\S+)<<=item_name[]>> ※(\S+)<<=additional_info[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endloop>>

合計金額: ([0-9]+)<<=total>>円
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret['total'], '1000')
Exemplo n.º 3
0
def loop_4_test():
    '''
    loop 入れ子パターン ある with id
    '''

    txt = '''
購入リスト
--------
パッケージ1
 ******
 [商品]あいうえお
 [個数]2個
 ******
 [商品]かきくけこ
 [個数]3個
--------
パッケージ2
 ******
 [商品]さしすせそ
 [個数]4個
 ******
 [商品]たちつてと
 [個数]5個

合計金額: 1000円
'''
    re_txt = '''
購入リスト
<<@loop exit="合計金額" id="loop1">>
\-\-\-\-\-
パッケージ
<<@loop exit="\-\-\-\-" id="loop2">>
\*\*\*
\[商品\](\S+)<<=item_name_%loop1%[]>>
\[個数\]([0-9])<<=item_count_%loop1%[]>>個
<<@endloop>>
<<@endloop>>

合計金額: ([0-9]+)<<=total>>円
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret['item_name_1'][0], 'あいうえお')
    eq_(ret['item_count_1'][0], '2')
    eq_(ret['item_name_1'][1], 'かきくけこ')
    eq_(ret['item_count_1'][1], '3')
    eq_(ret['item_name_2'][0], 'さしすせそ')
    eq_(ret['item_count_2'][0], '4')
    eq_(ret['item_name_2'][1], 'たちつてと')
    eq_(ret['item_count_2'][1], '5')
    eq_(ret['total'], '1000')
Exemplo n.º 4
0
def any_test():
    txt = '''
あいうえお
かきくけこ
'''
    re_txt = '''
<<@any>>
<<@any>>
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret, {})
Exemplo n.º 5
0
def search_1_test():
    txt = '''
[商品]あいうえお(新発売)
[個数]3個
'''
    re_txt = '''
\[商品\](\S+)<<=item_name>>
\[個数\]([0-9])<<=item_count>>個
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret['item_name'], 'あいうえお(新発売)')
    eq_(ret['item_count'], '3')
Exemplo n.º 6
0
def ng_command_pair_loop_test():
    '''
    ペアが無いパターン loop
    '''

    txt = '''
あいうえお
かきくけこ
'''
    re_txt = '''
<<@loop match="(\S+)">>
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    text_manager.execute(command_manager=command_manager)
Exemplo n.º 7
0
def ng_command_1_test():
    '''
    そんなコマンドが無いパターン
    '''

    txt = '''
あいうえお
かきくけこ
'''
    re_txt = '''
<<@anya>>
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    text_manager.execute(command_manager=command_manager)
Exemplo n.º 8
0
def ifd_1_test():
    '''
    ifd okのパターン
    '''

    txt = '''
購入リスト


--------
[商品]あいうえお(新発売) ※12/1新発売
[個数]3個
--------
[商品]かきくけこ ※12/2新発売
[個数]1個


合計金額: 1000円
'''
    re_txt = '''
購入リスト
<<@if match="\-\-\-\-">>
\-\-\-\-\-
\[商品\](\S+)<<=item_name[]>> ※(\S+)<<=additional_info[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>

<<@if match="\-\-\-\-">>
\-\-\-\-\-
\[商品\](\S+)<<=item_name[]>> ※(\S+)<<=additional_info[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>


合計金額: ([0-9]+)<<=total>>円
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret['item_name'][0], 'あいうえお(新発売)')
    eq_(ret['additional_info'][0], '12/1新発売')
    eq_(ret['item_count'][0], '3')
    eq_(ret['item_name'][1], 'かきくけこ')
    eq_(ret['additional_info'][1], '12/2新発売')
    eq_(ret['item_count'][1], '1')
    eq_(ret['total'], '1000')
Exemplo n.º 9
0
def ng_command_attribute_error_2_test():
    '''
    コマンドの属性がおかしいパターンその2
    '''

    txt = '''
あいうえお
かきくけこ
'''
    re_txt = '''
<<@if a=>>
<<@endif>>
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    text_manager.execute(command_manager=command_manager)
Exemplo n.º 10
0
def ng_command_attribute_loop_test():
    '''
    必須属性が無いパターン loop
    '''

    txt = '''
あいうえお
かきくけこ
'''
    re_txt = '''
<<@loop matchee="(\S+)">>
<<@endloop>>
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    text_manager.execute(command_manager=command_manager)
Exemplo n.º 11
0
def ifd_6_test():
    '''
    まあこうすれば取れる。
    あるか分からなかったらifdで囲んでおく
    '''

    txt = '''
購入リスト


--------
[商品]あいうえお(新発売) ※12/1新発売


[備考]びこうだよ

合計金額: 1000円
'''
    re_txt = '''
購入リスト
<<@if match="\-\-\-\-" exit="合計金額">>
\-\-\-\-\-
\[商品\](\S+)<<=item_name[]>> ※(\S+)<<=additional_info[]>>
<<@if match="個数" exit="合計金額">>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>
<<@endif>>

<<@if match="\-\-\-\-" exit="合計金額">>
\-\-\-\-\-
\[商品\](\S+)<<=item_name[]>> ※(\S+)<<=additional_info[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>

\[備考\](\S+)<<=comment>>

合計金額: ([0-9]+)<<=total>>円
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret['item_name'][0], 'あいうえお(新発売)')
    eq_(ret['additional_info'][0], '12/1新発売')
    eq_(ret['comment'], 'びこうだよ')
    eq_(ret['total'], '1000')
Exemplo n.º 12
0
def ng_command_attribute_none_2_test():
    '''
    コマンドに属性が1個もないパターン(スペースがあるのでパースで落ちる)
    '''

    txt = '''
あいうえお
かきくけこ
'''
    re_txt = '''
<<@if >>
<<@endif>>
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    text_manager.execute(command_manager=command_manager)
Exemplo n.º 13
0
def ng_command_attribute_block_test():
    '''
    必須属性が無いパターン block
    '''

    txt = '''
あいうえお
かきくけこ
'''
    re_txt = '''
<<@block machee="(\S+)">>
<<@endblock>>
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    text_manager.execute(command_manager=command_manager)
Exemplo n.º 14
0
def ifd_4_test():
    '''
    ifd exitを指定したとき、ちゃんとtxtの評価がなかったことになってるテスト
    備考が取得できるかどうか
    '''

    txt = '''
購入リスト


--------
[商品]あいうえお(新発売) ※12/1新発売
[個数]3個

[備考]びこうだよ

合計金額: 1000円
'''
    re_txt = '''
購入リスト
<<@if match="\-\-\-\-" exit="合計金額">>
\-\-\-\-\-
\[商品\](\S+)<<=item_name[]>> ※(\S+)<<=additional_info[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>

<<@if match="\-\-\-\-" exit="合計金額">>
\-\-\-\-\-
\[商品\](\S+)<<=item_name[]>> ※(\S+)<<=additional_info[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>

\[備考\](\S+)<<=comment>>

合計金額: ([0-9]+)<<=total>>円
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret['item_name'][0], 'あいうえお(新発売)')
    eq_(ret['additional_info'][0], '12/1新発売')
    eq_(ret['item_count'][0], '3')
    eq_(ret['comment'], 'びこうだよ')
    eq_(ret['total'], '1000')
Exemplo n.º 15
0
def ng_command_pair_block_2_test():
    '''
    ペアが無いパターン 2階層 block
    '''

    txt = '''
あいうえお
かきくけこ
'''
    re_txt = '''
<<@block match="(\S+)">>
  <<@block match="(\S+)">>
<<@endblock>>
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    text_manager.execute(command_manager=command_manager)
Exemplo n.º 16
0
def block_1_test():
    '''
    blockで解決
    '''

    txt = '''
購入リスト


--------
[商品]あいうえお(新発売) ※12/1新発売


[備考]びこうだよ

合計金額: 1000円
'''
    re_txt = '''
購入リスト
<<@block exit="備考">>
<<@if match="\-\-\-\-">>
\-\-\-\-\-
\[商品\](\S+)<<=item_name[]>> ※(\S+)<<=additional_info[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>

<<@if match="\-\-\-\-">>
\-\-\-\-\-
\[商品\](\S+)<<=item_name[]>> ※(\S+)<<=additional_info[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>
<<@endblock>>
\[備考\](\S+)<<=comment>>

合計金額: ([0-9]+)<<=total>>円
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret['item_name'][0], 'あいうえお(新発売)')
    eq_(ret['additional_info'][0], '12/1新発売')
    eq_(ret['comment'], 'びこうだよ')
    eq_(ret['total'], '1000')
Exemplo n.º 17
0
def ifd_5_test():
    '''
    ifd exitを指定しても、一旦idfの中にはいってしまったら効かない
    探しにいったまま終わる
    '''

    txt = '''
購入リスト


--------
[商品]あいうえお(新発売) ※12/1新発売


[備考]びこうだよ

合計金額: 1000円
'''
    re_txt = '''
購入リスト
<<@if match="\-\-\-\-" exit="合計金額">>
\-\-\-\-\-
\[商品\](\S+)<<=item_name[]>> ※(\S+)<<=additional_info[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>

<<@if match="\-\-\-\-" exit="合計金額">>
\-\-\-\-\-
\[商品\](\S+)<<=item_name[]>> ※(\S+)<<=additional_info[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>

\[備考\](\S+)<<=comment>>

合計金額: ([0-9]+)<<=total>>円
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret['item_name'][0], 'あいうえお(新発売)')
    eq_(ret['additional_info'][0], '12/1新発売')
    eq_(ret.get('comment', None), None)
    eq_(ret.get('total', None), None)
Exemplo n.º 18
0
def ifd_8_test():
    '''
    ifd ここでちょっとlimitのテスト2
    '''

    txt = '''
購入リスト

--------
[商品]あいうえお(新発売) ※12/1新発売
[個数]3個

--------
[商品]かきくけこ(新発売) ※12/3新発売
[個数]4個


合計金額: 1000円
'''
    re_txt = '''
購入リスト
<<@if match="\-\-\-\-" limit="1">>
\-\-\-\-\-
\[商品\](\S+)<<=item_name[]>> ※(\S+)<<=additional_info[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>

<<@if match="\-\-\-\-" limit="1">>
\-\-\-\-\-
\[商品\](\S+)<<=item_name[]>> ※(\S+)<<=additional_info[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>


合計金額: ([0-9]+)<<=total>>円
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret.get('item_name', None), None)
    eq_(ret['total'], '1000')
Exemplo n.º 19
0
def search_2_test():
    '''
    1行に複数のグループがある場合
    '''

    txt = '''
[商品]あいうえお(新発売) ※12/1新発売
[個数]3個
'''
    re_txt = '''
\[商品\](\S+)<<=item_name>> ※(\S+)<<=additional_info>>
\[個数\]([0-9])<<=item_count>>個
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret['item_name'], 'あいうえお(新発売)')
    eq_(ret['additional_info'], '12/1新発売')
    eq_(ret['item_count'], '3')
Exemplo n.º 20
0
def ng_command_attribute_error_6_test():
    '''
    コマンドの最後がおかしいパターンその6。
    これは救う。
    '''

    txt = '''
あいうえお
an
かきくけこ
'''
    re_txt = '''
<<@if match="an" >>
(\S+)<<=test>>
<<@endif>>
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    ok_(ret['test'], 'an')
Exemplo n.º 21
0
def search_5_test():
    '''
    すぐ判断する場合 OKの場合
    '''

    txt = '''
[商品]あいうえお(新発売)
[個数]3個
[備考]あああ
'''
    re_txt = '''
\[商品\](\S+)<<=item_name>>
\[個数\]([0-9])<<=item_count !>>個
\[備考\](\S+)<<=item_comment>>
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret['item_name'], 'あいうえお(新発売)')
    eq_(ret['item_count'], '3')
    eq_(ret['item_comment'], 'あああ')
Exemplo n.º 22
0
def str_test():
    '''
    コマンドのstr化
    '''

    txt = '''
購入リスト
--------
パッケージ1
 ******
 [商品]あいうえお
 [個数]2個
 ******
 [商品]かきくけこ
 [個数]3個
--------
パッケージ2

合計金額: 1000円
'''
    re_txt = '''
購入リスト
<<@loop exit="合計金額" id="loop1">>
\-\-\-\-\-
パッケージ
<<@loop exit="\-\-\-\-" id="loop2">>
\*\*\*
\[商品\](\S+)<<=item_name_%loop1%[]>>
\[個数\]([0-9])<<=item_count_%loop1%[]>>個
<<@endloop>>
<<@endloop>>

合計金額: ([0-9]+)<<=total>>円
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    commands = str(command_manager.get_commands_all())
Exemplo n.º 23
0
def if_4_test():
    '''
    if 入れ子パターン なし1
    '''

    txt = '''
購入リスト
--------
パッケージ1
 ******
 [商品]あいうえお
 [個数]2個
 ******
 [商品]かきくけこ
 [個数]3個

合計金額: 1000円
'''
    re_txt = '''
購入リスト
<<@if match="\-\-\-\-\-">>
\-\-\-\-\-
パッケージ
<<@if match="\*\*\*\*">>
\*\*\*
\[商品\](\S+)<<=item_name[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>
<<@if match="\*\*\*\*">>
\*\*\*
\[商品\](\S+)<<=item_name[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>
<<@endif>>
<<@if match="\-\-\-\-\-">>
\-\-\-\-\-
パッケージ
<<@if match="\*\*\*\*">>
\*\*\*
\[商品\](\S+)<<=item_name[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>
<<@if match="\*\*\*\*">>
\*\*\*
\[商品\](\S+)<<=item_name[]>>
\[個数\]([0-9])<<=item_count[]>>個
<<@endif>>
<<@endif>>


合計金額: ([0-9]+)<<=total>>円
'''

    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret['item_name'][0], 'あいうえお')
    eq_(ret['item_count'][0], '2')
    eq_(ret['item_name'][1], 'かきくけこ')
    eq_(ret['item_count'][1], '3')
    eq_(ret['total'], '1000')
Exemplo n.º 24
0
def if_6_test():
    '''
    if 入れ子パターン なし2 limitつかう
    '''

    txt = '''
購入リスト
--------
パッケージ1
 ******
 [商品]あいうえお
 [個数]2個
--------
パッケージ2
 ******
 [商品]さしすせそ
 [個数]4個
 ******
 [商品]たちつてと
 [個数]5個

合計金額: 1000円
'''
    re_txt = '''
購入リスト
<<@if match="\-\-\-\-\-" limit="1">>
\-\-\-\-\-
パッケージ
<<@if match="\*\*\*\*" limit="1">>
\*\*\*
\[商品\](\S+)<<=item_name_p1[]>>
\[個数\]([0-9])<<=item_count_p1[]>>個
<<@endif>>
<<@if match="\*\*\*\*" limit="1">>
\*\*\*
\[商品\](\S+)<<=item_name_p1[]>>
\[個数\]([0-9])<<=item_count_p1[]>>個
<<@endif>>
<<@endif>>
<<@if match="\-\-\-\-\-" limit="1">>
\-\-\-\-\-
パッケージ
<<@if match="\*\*\*\*" limit="1">>
\*\*\*
\[商品\](\S+)<<=item_name_p2[]>>
\[個数\]([0-9])<<=item_count_p2[]>>個
<<@endif>>
<<@if match="\*\*\*\*" limit="1">>
\*\*\*
\[商品\](\S+)<<=item_name_p2[]>>
\[個数\]([0-9])<<=item_count_p2[]>>個
<<@endif>>
<<@endif>>


合計金額: ([0-9]+)<<=total>>円
'''
    text_manager = rerere.TextManager(txt)
    command_manager = rerere.CommandManager(re_txt, text_manager)
    ret = text_manager.execute(command_manager=command_manager)
    eq_(ret['item_name_p1'][0], 'あいうえお')
    eq_(ret['item_count_p1'][0], '2')
    eq_(ret['item_name_p2'][0], 'さしすせそ')
    eq_(ret['item_count_p2'][0], '4')
    eq_(ret['item_name_p2'][1], 'たちつてと')
    eq_(ret['item_count_p2'][1], '5')
    eq_(ret['total'], '1000')