1# Copyright (c) 2009, Tomohiro Kusumi
2# All rights reserved.
3#
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions are met:
6#
7# 1. Redistributions of source code must retain the above copyright notice, this
8#    list of conditions and the following disclaimer.
9# 2. Redistributions in binary form must reproduce the above copyright notice,
10#    this list of conditions and the following disclaimer in the documentation
11#    and/or other materials provided with the distribution.
12#
13# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
14# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
17# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
20# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
24import os
25
26from .. import extension
27
28def get_text(co, fo, args):
29    l = list(co.iter_buffer())
30    assert l
31    title = '', " ", "buffer", "size", "class"
32
33    l1 = [len(extension.get_verbose_path(o)) for o in l]
34    l1.append(len(title[2]))
35    l2 = [len(str(o.get_size())) for o in l]
36    l2.append(len(title[3]))
37
38    f = "{{0:{0}}} {{1}} {{2:<{1}}} {{3:{2}}} {{4}}".format(
39        extension.get_index_width(l), max(l1), max(l2))
40    sl = [f.format(*title)]
41    for i, o in enumerate(l):
42        c = " " if os.path.exists(o.get_path()) else "!"
43        sl.append(f.format(i + 1, c, extension.get_verbose_path(o),
44            o.get_size(), o.get_type()))
45    return sl
46