Exemplo n.º 1
0
 def test_tar(self):
     words = sce.apply_ruleset(['a'], 'a>')
     changed_word = str(words[0])
     self.assertEqual(changed_word, '')
Exemplo n.º 2
0
 def test_final_addition_change(self):
     words = sce.apply_ruleset(['ac'], '+b/_#')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'acb')
Exemplo n.º 3
0
 def test_final_subtraction_change(self):
     words = sce.apply_ruleset(['bacb'], '-b/_#')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'bac')
Exemplo n.º 4
0
 def test_simple_multrep_in_tar_and_rep(self):
     words = sce.apply_ruleset(['cacbc'], 'a,b>d,e')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'cdcec')
Exemplo n.º 5
0
 def test_complex_multrep_in_tar_and_rep(self):
     words = sce.apply_ruleset(['cacabc'], 'a@-1,b>d,e')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'cacdec')
Exemplo n.º 6
0
 def test_category_metathesis(self):
     ruleset = ['x=a,b', 'y=c,d', '[x][y]><']
     words = sce.apply_ruleset(['acbccbdca'], ruleset)
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'cacbcdbca')
Exemplo n.º 7
0
 def test_at_symbol_with_negative_index(self):
     words = sce.apply_ruleset(['aaaa'], 'a@-1>b')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'aaab')
Exemplo n.º 8
0
 def test_subtract_unnamed_cat(self):
     words = sce.apply_ruleset(['abcd'], '-[b,c]')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'ad')
Exemplo n.º 9
0
 def test_multiple_rules_with_single_ignore_flag(self):
     ruleset = ['a>b', 'b>c ignore', 'c>d']
     words = sce.apply_ruleset(['abcd'], ruleset)
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'bbdd')
Exemplo n.º 10
0
 def test_only_unnamed_cat_in_target(self):
     words = sce.apply_ruleset(['abc'], '[a,b]>c')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'ccc')
Exemplo n.º 11
0
 def test_unnamed_cat_and_non_cat_in_target(self):
     words = sce.apply_ruleset(['abacbccc'], '[a,b]c>d')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'abddcc')
Exemplo n.º 12
0
 def test_subtract_cat(self):
     ruleset = ['x=b,c', '-[x]']
     words = sce.apply_ruleset(['abcd'], ruleset)
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'ad')
Exemplo n.º 13
0
 def test_cat_and_non_cat_in_target(self):
     ruleset = ['x=a,b', 'd[x]>c']
     words = sce.apply_ruleset(['abcdadbdc'], ruleset)
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'abcccdc')
Exemplo n.º 14
0
 def test_only_cat_in_target(self):
     ruleset = ['x=a,b', '[x]>c']
     words = sce.apply_ruleset(['abc'], ruleset)
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'ccc')
Exemplo n.º 15
0
 def test_single_rule_with_ignore_flag(self):
     words = sce.apply_ruleset(['a'], 'a>b ignore')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'a')
Exemplo n.º 16
0
 def test_unconditional_stop_flag(self):
     ruleset = ['a>b stop', 'b>c']
     words = sce.apply_ruleset(['abc'], ruleset)
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'bbc')
Exemplo n.º 17
0
import copy

from context import conlanger
from conlanger import core, sce

words = []
with open('input.txt', 'r') as f:
    for line in f:
        words.append(core.Word(lexeme=line[:-1]))

with open('rules.txt', 'r') as f:
    parsed_words = sce.apply_ruleset(copy.deepcopy(words), f.read(), debug=True)

for word_in, word_out in zip(words, parsed_words):
    print(f"{word_in} → {word_out}")
Exemplo n.º 18
0
 def test_non_matching_conditional_stop_flag(self):
     ruleset = ['a>b/_# stop', 'b>c']
     words = sce.apply_ruleset(['abc'], ruleset)
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'acc')
Exemplo n.º 19
0
 def test_nonce_category_metathesis(self):
     words = sce.apply_ruleset(['acbccbdca'], '[a,b][c,d]><')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'cacbcdbca')
Exemplo n.º 20
0
 def test_non_matching_ditto_flag(self):
     ruleset = ['a>b/_#', '+d ditto']
     words = sce.apply_ruleset(['abc'], ruleset)
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'abc')
Exemplo n.º 21
0
 def test_at_symbol_with_pipe(self):
     words = sce.apply_ruleset(['aaaa'], 'a@0|2>b')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'baba')
Exemplo n.º 22
0
 def test_null_value_repeat_flag(self):
     words = sce.apply_ruleset(['baaa'], 'a>b/b_ repeat')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'bbbb')
Exemplo n.º 23
0
 def test_basic_metathesis(self):
     words = sce.apply_ruleset(['abba'], 'ab><')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'baba')
Exemplo n.º 24
0
 def test_overflowing_repeat_flag(self):
     words = sce.apply_ruleset(['baaa'], 'a>b/c_ repeat')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'baaa')
Exemplo n.º 25
0
 def test_medial_addition_change(self):
     words = sce.apply_ruleset(['ac'], '+b/a_c')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'abc')
Exemplo n.º 26
0
 def test_given_value_age_flag(self):
     ruleset = ['a>b age:2', 'b>a']
     words = sce.apply_ruleset(['aaa'], ruleset)
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'bbb')
Exemplo n.º 27
0
 def test_initial_subtraction_change(self):
     words = sce.apply_ruleset(['babc'], '-b/#_')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'abc')
Exemplo n.º 28
0
 def test_null_value_age_flag(self):
     ruleset = ['a>b age', '+a/_b', '+a/_b', '+a/_b']
     words = sce.apply_ruleset(['a'], ruleset)
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'bbbbbbbb')
Exemplo n.º 29
0
 def test_standard_change(self):
     words = sce.apply_ruleset(['a'], 'a>b')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'b')
Exemplo n.º 30
0
 def test_tar_rep_env_exc_else(self):
     words = sce.apply_ruleset(['baba'], 'a>d/b_!_#>c')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'bdbc')