Exemplo n.º 1
0
    def generate_all(self):
        self.check_casegen()

        generated_examples = []
        if self.randgen is not None:
            generated_examples.append(Example())

        aliases = self.parser \
                      .get_definition(self.name, UnitType.alias) \
                      .generate_all(self.variation_name, self.arg_value)

        generated_examples.extend(aliases)

        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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
 def can_have_casegen(self):
     return may_change_leading_case(self.word)
Exemplo n.º 4
0
 def test_may_change_case(self):
     strings = ["word", "\ttest", "CAPITAL", "\t Several words"]
     for s in strings:
         assert may_change_leading_case(s)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
 def test_empty(self):
     assert not may_change_leading_case("")