def run(self, edit, **args): view = self.view selections = view.sel() case = args.get("case") for selection in selections : scope = view.scope_name(selection.begin()).strip() scope_splitted = scope.split(" ") if case == "del_multi_line_comment" : item = Util.get_region_scope_first_match(view, scope, selection, "comment.block.js") if item : region_scope = item.get("region") new_str = item.get("region_string_stripped") new_str = new_str[2:-2].strip() view.replace(edit, region_scope, new_str) elif case == "del_single_line_comment" : item = Util.get_region_scope_first_match(view, scope, selection, "comment.line.double-slash.js") if item : region_scope = item.get("region") lines = item.get("region_string").split("\n") body = list() for line in lines: body.append(line.strip()[2:].lstrip()) new_str = "\n".join(body) view.replace(edit, region_scope, new_str) elif case == "strip_quoted_string" : result = Util.firstIndexOfMultiple(scope_splitted, ("string.quoted.double.js", "string.quoted.single.js", "string.template.js")) selector = result.get("string") item = Util.get_region_scope_first_match(view, scope, selection, selector) if item : region_scope = item.get("region") new_str = item.get("region_string") new_str = new_str[1:-1] view.replace(edit, region_scope, new_str)
def run(self, edit, **args): from node.main import NodeJS node = NodeJS() view = self.view selections = view.sel() for selection in selections : scope = view.scope_name(selection.begin()).strip() result = Util.get_region_scope_first_match(view, scope, selection, "meta.brackets.js") if result : region = result.get("region") array_string = result.get("region_string_stripped") from node.main import NodeJS node = NodeJS() case = args.get("case") sort_func = "" if case == "compare_func_desc" : sort_func = "function(x,y){return y-x;}" elif case == "compare_func_asc" : sort_func = "function(x,y){return x-y;}" elif case == "alpha_asc" : sort_func = "" elif case == "alpha_desc" : sort_func = "" sort_result = node.eval("var array = "+array_string+"; console.log(array.sort("+sort_func+")"+( ".reverse()" if case == "alpha_desc" else "" )+")").strip() view.replace(edit, region, sort_result)
def run(self, edit, **args): view = self.view selections = view.sel() for selection in selections : scope = view.scope_name(selection.begin()).strip() depth_level = Util.split_string_and_find(scope, "meta.object-literal.js") item_object_literal = Util.get_region_scope_first_match(view, scope, selection, "meta.object-literal.js") if item_object_literal : scope = item_object_literal.get("scope") object_literal_region = item_object_literal.get("region") selection = item_object_literal.get("selection") object_literal = item_object_literal.get("region_string_stripped") from node.main import NodeJS node = NodeJS() object_literal = json.loads(node.eval("JSON.stringify("+object_literal+")", "print")) object_literal = [(key, json.dumps(value)) for key, value in object_literal.items()] list_ordered = ("keyword.operator.assignment.js", "variable.other.readwrite.js", "storage.type.js") items = Util.find_regions_on_same_depth_level(view, scope, selection, list_ordered, depth_level, False) if items : last_selection = items[-1:][0].get("selection") class_name = items[1].get("region_string_stripped") regions = [(item.get("region")) for item in items] regions.append(object_literal_region) regions = Util.cover_regions(regions) parameters = list() constructor_body = list() get_set = list() for parameter in object_literal: parameters.append( parameter[0] + ( "="+parameter[1] if json.loads(parameter[1]) != "required" else "") ) constructor_body.append( "\t\tthis."+parameter[0]+" = "+parameter[0]+";" ) get_set.append("\tget "+parameter[0]+"() {\n\t\treturn this."+parameter[0]+";\n\t}") get_set.append("\tset "+parameter[0]+"("+parameter[0]+") {\n\t\tthis."+parameter[0]+" = "+parameter[0]+";\n\t}") parameters = ", ".join(parameters) constructor_body = '\n'.join(constructor_body) get_set = '\n\n'.join(get_set) js_syntax = "class "+class_name+" {\n" js_syntax += "\n\tconstructor ("+parameters+") {\n" js_syntax += constructor_body js_syntax += "\n\t}\n\n" js_syntax += get_set js_syntax += "\n}" js_syntax = Util.add_whitespace_indentation(view, regions, js_syntax) view.replace(edit, regions, js_syntax)
def run(self, edit, **args): view = self.view selections = view.sel() for selection in selections : scope = view.scope_name(selection.begin()).strip() scope_splitted = scope.split(" ") case = args.get("case") if case == "split" : result = Util.firstIndexOfMultiple(scope_splitted, ("string.quoted.double.js", "string.quoted.single.js", "string.template.js")) scope_string = scope_splitted[result.get("index")] selector = result.get("string") item = Util.get_region_scope_first_match(view, scope, selection, selector) if item : lines = item.get("region_string_stripped")[1:-1].split("\n") str_splitted = list() str_splitted.append("var str = \"\"") for line in lines : line = line if scope_string == "string.template.js" else line.strip()[0:-1] line = line.strip() if line : str_splitted.append( "str += "+"%r"%line ) str_splitted = "\n".join(str_splitted) str_splitted = Util.add_whitespace_indentation(view, selection, str_splitted, "\n") view.replace(edit, item.get("region"), str_splitted)