zhuguifei
2026-03-10 58402bd5e762361363a0f7d7907153c77dbb819f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<pre id="sh_011_smart_tabs_a" class="brush: plain;">
    the        words    in        this    paragraph
    should    look    like    they    are
    evenly    spaced    between    columns
</pre>
 
<pre id="sh_011_smart_tabs_b" class="brush: plain; tab-size: 8;">
    the    words    in    this    paragraph
    should    look    like    they    are
    evenly    spaced    between    columns
</pre>
 
<pre id="sh_011_smart_tabs_c" class="brush: plain; smart-tabs: false">
    the        words    in        this    paragraph
    should    look    out        of        whack
    because    smart    tabs    are        disabled
</pre>
 
<script type="text/javascript">
queue(function()
{
    var $sh;
    
    module('011_smart_tabs');
    
    var evenLines = [
            'the     words   in      this    paragraph',
            'should  look    like    they    are',
            'evenly  spaced  between columns'
        ],
        unevenLines = [
            'the        words    in        this    paragraph',
            'should    look    out        of        whack',
            'because    smart    tabs    are        disabled'
        ]
        ;
        
    function fixSpaces(s)
    {
        s = encodeURIComponent(s).replace(/%C2%A0/g, '%20');
        return unescape(s).replace(/\s+$/g, '');
    };
    
    test('default tab size is 4', function()
    {
        $sh = $('#sh_011_smart_tabs_a');
        
        ok_sh($sh);
        ok_toolbar($sh);
        ok_code($sh);
        
        $sh.find('.code .line').each(function(index)
        {
            var s1 = fixSpaces($(this).text()),
                s2 = fixSpaces(evenLines[index])
                ;
                
            equal(s1, s2, 'Line ' + index);
        });
    });
 
    test('tab size changed to 8', function() 
    {
        $sh = $('#sh_011_smart_tabs_b');
        
        ok_sh($sh);
        ok_toolbar($sh);
        ok_code($sh);
        
        $sh.find('.code .line').each(function(index)
        {
            var s1 = fixSpaces($(this).text()),
                s2 = fixSpaces(evenLines[index])
                ;
                
            equal(s1, s2, 'Line ' + index);
        });
    });
    
    test('smart tabs are off', function() 
    {
        $sh = $('#sh_011_smart_tabs_c');
        
        ok_sh($sh);
        ok_toolbar($sh);
        ok_code($sh);
        
        $sh.find('.code .line').each(function(index)
        {
            var s1 = fixSpaces($(this).text()),
                s2 = fixSpaces(unevenLines[index])
                ;
                
            equal(s1, s2, 'Line ' + index);
        });
    });
});
</script>