Example #1
0
 def test_tar(self):
     words = sce.apply_ruleset(['a'], 'a>')
     changed_word = str(words[0])
     self.assertEqual(changed_word, '')
 def test_final_addition_change(self):
     words = sce.apply_ruleset(['ac'], '+b/_#')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'acb')
 def test_final_subtraction_change(self):
     words = sce.apply_ruleset(['bacb'], '-b/_#')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'bac')
Example #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')
Example #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')
Example #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')
Example #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')
Example #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')
Example #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')
Example #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')
Example #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')
Example #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')
Example #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')
Example #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')
Example #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')
Example #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')
Example #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}")
Example #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')
Example #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')
Example #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')
Example #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')
Example #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')
Example #23
0
 def test_basic_metathesis(self):
     words = sce.apply_ruleset(['abba'], 'ab><')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'baba')
Example #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')
Example #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')
Example #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')
Example #27
0
 def test_initial_subtraction_change(self):
     words = sce.apply_ruleset(['babc'], '-b/#_')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'abc')
Example #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')
Example #29
0
 def test_standard_change(self):
     words = sce.apply_ruleset(['a'], 'a>b')
     changed_word = str(words[0])
     self.assertEqual(changed_word, 'b')
Example #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')