JSFiddle - React, Tailwind, and code Playground

by kentaromiura

JavaScript

(function (exports) {
    var set = function(input){
      var output;
      if(Object.create){
        output = Object.create(null);     
        for(var x in input){
            if(input.hasOwnProperty(x)){
             output[x] = input[x]
            }
        }
      }else{
        output = input;
      }
      return output;
    }
    
    var getMethods = function (data) {

        return {
            data: function(value){
                if(arguments.length == 1){
                    data.data = value
                }
                return data.data
            },
            left: function (left) {
                if (arguments.length == 1) {
                    data.left = left == null ? null : left instanceof Leaf? left: new Leaf(left)
                }
                return data.left
            },
          right : function (right) {
                if (arguments.length == 1) {
                    data.right = right == null? null : right instanceof Leaf? right: new Leaf(right)
                }
                return data.right
            },
          plain : function () {
                return set({
                  data: data.data,
                  left: data.left != null? data.left.plain() : null,
                  right: data.right != null? data.right.plain(): null
                })
            },
          has: function(value){
            
            var left, right
            return data.data == value || 
                   !! (data.left && data.left.has(value)) || 
                   !! (data.right && data.right.has(value))
          },
          mirror: function(){
              var result = new Leaf(data.data);
              result.right( data.left && data.left.mirror() )
              result.left( data.right && data.right.mirror() )
              return result
          },
          length: function(){
              return  1 + (data.left != null? this.left().length(): 0) + (data.right != null ? this.right().length(): 0);
     ...