Skip to content

[ENH] Javascript Condition with else decoration (JSConditionElse) #830

@GoogleCodeExporter

Description

@GoogleCodeExporter
I was trying to implement a classical "if {...} else {...}" object using 
JSDecorations.
Then I found there is a JSCondition, but there is no way to describe an "else" 
statement.

Also there is an JSIfThenElse decoration, but it is implemented as a ternary 
operator (x ? y : z) instead of 'if(x){ y} else {z}'

So I added an extension to JSObject, named #condition:else: and also a 
JSConditionElse decoration which produces the expected output.

Can this be added to the main trunk of the Javascript-Core package?

The changes are attached.


With these modifications I was able to transform this Javascript:
    $('#ajaxId tbody').on( 'click', 'tr', function () {
        if ( $(this).hasClass('selected') ) {
            $(this).removeClass('selected');
        }
        else {
            $('#ajaxId tr.selected').removeClass('selected');
            $(this).addClass('selected');
        }
    } );

Into this:

    | selClass |
    selClass := 'selected'.
    ^ (html jQuery: '#' , self ajaxId , ' tbody')
        on: 'click'
        selector: 'tr'
        do:
            ((html jQuery this removeClass: selClass)
                condition: (html jQuery this hasClass: selClass)
                else:
                    (JSScript new
                        add: ((html jQuery: '#' , self ajaxId , ' tr.' , selClass) removeClass: selClass);
                        add: (html jQuery this addClass: selClass);
                        yourself))

Original issue reported on code.google.com by emaring...@gmail.com on 30 Sep 2014 at 3:06

Attachments:

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions