def __init__(self, name, leading_space=False, variation_name=None, arg_value=None, casegen=False, randgen=None, percentage_gen=50, parser=None): if variation_name is not None: raise SyntaxError("Word groups cannot have variations, yet '" + name + "' does (unescaped '#'?)") if arg_value is not None: raise SyntaxError("Word groups cannot have an argument, yet '" + name + "' does (unescaped '$'?)") if parser is not None: raise RuntimeError("Internal error: tried to create a word " + "group with a pointer to the parser") if not may_change_leading_case(name): casegen = False super(GroupWordRuleContent, self).__init__(name, leading_space=leading_space, variation_name=None, arg_value=None, casegen=casegen, randgen=randgen, percentage_gen=percentage_gen, parser=None) self.words = name
def generate_all(self): self.check_casegen() generated_examples = [] if self.randgen is not None: generated_examples.append(Example()) intents = self.parser.get_definition(self.name, UnitType.intent) \ .generate_all(self.variation_name, self.arg_value) generated_examples.extend(intents) if self.leading_space: for (i, ex) in enumerate(generated_examples): if may_get_leading_space(ex.text): generated_examples[i].text = ' ' + ex.text if self.casegen: tmp_buffer = [] for ex in generated_examples: if may_change_leading_case(ex.text): tmp_buffer.append(Example(with_leading_lower(ex.text), ex.entities)) tmp_buffer.append(Example(with_leading_upper(ex.text), ex.entities)) else: tmp_buffer.append(ex) generated_examples = tmp_buffer return generated_examples
def can_have_casegen(self): return may_change_leading_case(self.words)
def test_may_change_case(self): strings = ["word", "\ttest", "CAPITAL", "\t Several words"] for s in strings: assert may_change_leading_case(s)
def test_may_not_change_case(self): strings = ["1", " 1", "\t!", "~[alias]", "\t(Why?)"] for s in strings: assert not may_change_leading_case(s)
def test_empty(self): assert not may_change_leading_case("")