예제 #1
0
    def apply(self, element) -> Element:
        has_head = Util.has_head_element(element)
        if has_head:
            new_form_element = element.parent.wrap(element.prev, element.end,
                                                   Form)
            new_form = new_form_element.code
            new_form.prepend(
                Identifier("@" + element.text + element.end.text,
                           element.range))
            # @[] head BEGIN_MACRO('[') begin ... end END_MACRO(']')
        else:
            new_form_element = element.parent.wrap(element, element.end, Form)
            new_form = new_form_element.code
            new_form.prepend(
                Identifier(element.text + element.end.text, element.range))
            # @[] BEGIN_MACRO('[') begin head ... end END_MACRO(']')

        begin_element = element.next
        last_element = new_form.last
        new_form.remove(element)  # remove BEGIN_MACRO('[')
        new_form.remove(new_form.last)  # remove END_MACRO(']')
        if begin_element is last_element:  # if we have something like a[] or a{} or so...
            return new_form_element.next
        else:
            # return Util.join_all_args(new_form_element, begin_element, "head-prefixed parenthesized form", 2 if has_head else 1)
            Util.explode_list_of_args(begin_element)
            return new_form_element.next
예제 #2
0
    def apply(self, element) -> Element:
        has_head = Util.has_head_element(element)
        if has_head:
            new_form_element = element.parent.wrap(element.prev, element.end, Form)
            new_form = new_form_element.code
            new_form.prepend(Identifier("@" + element.text + element.end.text, element.range))
            # @[] head BEGIN_MACRO('[') begin ... end END_MACRO(']')
        else:
            new_form_element = element.parent.wrap(element, element.end, Form)
            new_form = new_form_element.code
            new_form.prepend(Identifier(element.text + element.end.text, element.range))
            # @[] BEGIN_MACRO('[') begin head ... end END_MACRO(']')


        begin_element = element.next
        last_element = new_form.last
        new_form.remove(element) # remove BEGIN_MACRO('[')
        new_form.remove(new_form.last)  # remove END_MACRO(']')
        if begin_element is last_element: # if we have something like a[] or a{} or so...
            return new_form_element.next
        else:
            # return Util.join_all_args(new_form_element, begin_element, "head-prefixed parenthesized form", 2 if has_head else 1)
            Util.explode_list_of_args(begin_element)
            return new_form_element.next
예제 #3
0
 def applies(self, element):
     return Util.is_opening_delimiter(
         element, '(') and not Util.has_head_element(element)
예제 #4
0
 def applies(self, element):
     return Util.is_opening_delimiter(element, '(') and not Util.has_head_element(element)