示例#1
0
    def run(self, edit):

        regions = self.view.sel()

        if len(regions) == 1 and regions[0].empty():
            # Selection is empty, use the entire buffer.
            regions = [sublime.Region(0, self.view.size())]

        for region in regions:
            input_lines = [
                self.view.substr(r) for r in self.view.lines(region)
            ]
            sorted_lines = sort_lines(input_lines)

            # Fetch the actual line ending characters used, assuming the same is
            # used througout the entire region.
            first_line = self.view.substr(self.view.full_line(0))
            stripped_line = first_line.rstrip()
            line_ending_length = len(first_line) - len(stripped_line)
            line_ending = first_line[len(first_line) - line_ending_length:]

            output = line_ending.join(sorted_lines)

            # If the end of the region had a line ending character, we re-add it here
            if self.view.substr(region).endswith(line_ending):
                output += line_ending

            self.view.replace(edit, region, output)
 def test_sort_with_multiple_int_groups(self):
     input_lines = [
         '1 1',
         '3 2',
         '2 3',
     ]
     expected_output_lines = [
         '1 1',
         '2 3',
         '3 2',
     ]
     self.assertEqual(sort_lines(input_lines), expected_output_lines)
 def test_simple_sort_with_alpha(self):
     input_lines = [
         '1 a',
         '3 b',
         '2 c',
     ]
     expected_output_lines = [
         '1 a',
         '2 c',
         '3 b',
     ]
     self.assertEqual(sort_lines(input_lines), expected_output_lines)
 def test_simple_sort(self):
     input_lines = [
         '1',
         '3',
         '2',
     ]
     expected_output_lines = [
         '1',
         '2',
         '3',
     ]
     self.assertEqual(sort_lines(input_lines), expected_output_lines)
 def test_sort_with_alphanumeric_partial_formatting(self):
     input_lines = [
         '2 a',
         '1 b2',
         '1 b.',
     ]
     expected_output_lines = [
         '1 b2',
         '1 b.',
         '2 a',
     ]
     self.assertEqual(sort_lines(input_lines), expected_output_lines)
 def test_sort_with_decimals(self):
     input_lines = [
         '1.5',
         '1',
         '2.5',
         '2',
     ]
     expected_output_lines = [
         '1',
         '1.5',
         '2',
         '2.5',
     ]
     self.assertEqual(sort_lines(input_lines), expected_output_lines)
 def test_sort_with_negatives(self):
     input_lines = [
         '1',
         '-2',
         '2',
         '-1',
         '3',
     ]
     expected_output_lines = [
         '-2',
         '-1',
         '1',
         '2',
         '3',
     ]
     self.assertEqual(sort_lines(input_lines), expected_output_lines)
 def test_sort_with_negatives_and_alpha(self):
     input_lines = [
         '1 a',
         '-2 b',
         '2 c',
         '-1 d',
         '3 e',
     ]
     expected_output_lines = [
         '-2 b',
         '-1 d',
         '1 a',
         '2 c',
         '3 e',
     ]
     self.assertEqual(sort_lines(input_lines), expected_output_lines)
    def run(self, edit):

        regions = self.view.sel()

        if len(regions) == 1 and regions[0].empty():
            # Selection is empty, use the entire buffer.
            regions = [sublime.Region(0, self.view.size())]

        for region in regions:
            input_lines = [self.view.substr(r) for r in self.view.lines(region)]
            sorted_lines = sort_lines(input_lines)

            output = LINE_ENDING_CHARACTER.join(sorted_lines)

            # If the end of the region had a line ending character, we re-add it here
            if self.view.substr(region).endswith(LINE_ENDING_CHARACTER):
                output += LINE_ENDING_CHARACTER

            self.view.replace(edit, region, output)
示例#10
0
 def test_sort_with_negatives_and_alpha(self):
     input_lines = ["1 a", "-2 b", "2 c", "-1 d", "3 e"]
     expected_output_lines = ["-2 b", "-1 d", "1 a", "2 c", "3 e"]
     self.assertEqual(sort_lines(input_lines), expected_output_lines)
示例#11
0
 def test_sort_with_negative_decimals(self):
     input_lines = ["2", "1.2", "1", "0", "-1", "-1.2", "-2"]
     expected_output_lines = ["-2", "-1.2", "-1", "0", "1", "1.2", "2"]
     self.assertEqual(sort_lines(input_lines), expected_output_lines)
示例#12
0
 def test_sort_with_negatives(self):
     input_lines = ["1", "-2", "2", "-1", "3"]
     expected_output_lines = ["-2", "-1", "1", "2", "3"]
     self.assertEqual(sort_lines(input_lines), expected_output_lines)
示例#13
0
 def test_sort_with_multiple_int_groups(self):
     input_lines = ["1 1", "3 2", "2 3"]
     expected_output_lines = ["1 1", "2 3", "3 2"]
     self.assertEqual(sort_lines(input_lines), expected_output_lines)
示例#14
0
 def test_sort_with_decimals(self):
     input_lines = ["1.5", "1", "2.5", "2"]
     expected_output_lines = ["1", "1.5", "2", "2.5"]
     self.assertEqual(sort_lines(input_lines), expected_output_lines)
示例#15
0
 def test_simple_sort_with_alpha(self):
     input_lines = ["1 a", "3 b", "2 c"]
     expected_output_lines = ["1 a", "2 c", "3 b"]
     self.assertEqual(sort_lines(input_lines), expected_output_lines)
示例#16
0
 def test_simple_sort(self):
     input_lines = ["1", "3", "2"]
     expected_output_lines = ["1", "2", "3"]
     self.assertEqual(sort_lines(input_lines), expected_output_lines)