Template Toolkit

(русская редакция)

[ Пособия ] [ Руководство ] [ Модули ] [ Библиотеки ] [ Утилиты ] [ Вопросы ] [ Релиз ] [ Perl-ресурсы ]
 
Поиск
Template Toolkit | Модули | Template::Plugin::File

Template::Plugin::File

[ ◄ Template::Plugin::Dumper ] [ Template::Plugin::Filter ► ]
Плагин, предоставляющий информацию о файлах.

Оглавление

ОБЗОР

Индекс ] [ Модули ] [ Наверх ]

    [% USE File(filepath) %]
    [% File.path %]         # полный путь
    [% File.name %]	    # имя файла
    [% File.dir %]          # каталог

ОПИСАНИЕ

Индекс ] [ Модули ] [ Наверх ]

Этот плагин предоставляет абстракцию файла. Его можно использовать, чтобы получить из файловой системы информацию о файлах, или представлять произвольные файлы (например, при создании индексной страницы), которые могут существовать или нет на файловой системе.

Имя файла или путь должны быть указаны в качестве аргумента конструктора, например:

    [% USE File('foo.html') %]
    [% USE File('foo/bar/baz.html') %]
    [% USE File('/foo/bar/baz.html') %]

Файл должен существовать на текущей файловой системе (если только не установлена опция 'nostat', смотри ниже) по абсолютному пути, когда путь начинается с '/' (например, '/foo/bar/baz.html'), или, в противном случае, по пути, относительному к текущему рабочему каталогу. Конструктор выполняет для файла stat() и делает доступным возвращаемый результат через 13 элементов плагина:

    dev ino mode nlink uid gid rdev size
    atime mtime ctime blksize blocks

Например:

    [% USE File('/foo/bar/baz.html') %]
    [% File.mtime %]
    [% File.mode %]
    ...

Дополнительно устанавливаются элементы 'user' и 'group', возвращаемые вызовами getpwuid() и getgrgid() с соответствующими элементами файла 'uid' и 'gid'. На платформах Win32, на которых getpwuid() и getgrid() не доступны, значения этих элементов не определены.

    [% USE File('/tmp/foo.html') %]
    [% File.uid %]	# например, 500
    [% File.user %]     # например, abw

Поиск пользователя/группы можно запретить установкой опции 'noid'.

    [% USE File('/tmp/foo.html', noid=1) %]
    [% File.uid %]	# например, 500
    [% File.user %]     # ничего

Флаг 'isdir' установлен, если файл является каталогом.

    [% USE File('/tmp') %]
    [% File.isdir %]	# 1

Если stat() на файле завершается неудачно (например, файл не существует, недостаточно прав доступа к файлу и т.п.), конструктор возбуждает исключение 'File'. Его можно перехватить внутри блока TRY...CATCH.

    [% TRY %]
       [% USE File('/tmp/myfile') %]
       File exists!
    [% CATCH File %]
       File error: [% error.info %]
    [% END %]

Обратите внимание на регистр типа исключения, 'File' обозначает ошибку, возбужденную плагином 'File', в отличие от обычного исключения 'file', возбуждаемого Template Toolkit.

Обратите внимание, что на плагин 'File' также можно ссылаться по имени в нижнем регистре 'file'. Тем не менее, исключения всегда возбуждаются с типом 'File', независимо от используемого в имени плагина регистра.

    [% USE file('foo.html') %]
    [% file.mtime %]

Как и для любого другого плагина Template Toolkit, альтернативное имя можно указать при создании объекта.

    [% USE foo = file('foo.html') %]
    [% foo.mtime %]

Для предотвращения выполнения stat() на указанном файле, можно указать опцию 'nostat'. В этом случае, файл может не существовать в файловой системе, попытки проверить это предприниматься не будет, и если его нет исключение не будет возбуждено. Значения элементов, устанавливаемые по результатам выполнения stat(), останутся пустыми.

    [% USE file('/some/where/over/the/rainbow.html', nostat=1) %]
    [% file.mtime %]     # ничего

Все плагины File независимо от опции 'nostat', имеют ряд элементов, связанных с указанным исходным путем к файлу.

  • path

    Полный исходный путь к файлу, переданный конструктору.

        [% USE file('/foo/bar.html') %]
        [% file.path %]	# /foo/bar.html
  • name

    Имя файла без предшествующих каталогов.

        [% USE file('/foo/bar.html') %]
        [% file.name %]	# bar.html
  • dir

    Каталожная часть пути без имени файла.

        [% USE file('/foo/bar.html') %]
        [% file.name %]	# /foo
  • ext

    Расширение файла, если таковое существует, завершающее путь после '.' (которая в расширение не включается).

        [% USE file('/foo/bar.html') %]
        [% file.ext %]	# html
  • home

    Содержит строку вида '../..', представляющую путь наверх от файла к корневому каталогу.

        [% USE file('bar.html') %]
        [% file.home %]	# nothing
        [% USE file('foo/bar.html') %]
        [% file.home %]	# ..
        [% USE file('foo/bar/baz.html') %]
        [% file.home %]	# ../..
  • root

    Элемент 'root' может быть указан в качестве аргумента конструктора, обозначая корневой каталог, в котором названный файл находится. В противном случае уставливается пустым.

        [% USE file('foo/bar.html', root='/tmp') %]
        [% file.root %]	# /tmp
  • abs

    Вовращает абсолютный путь к файлу, полученный из опций 'root' и 'path'.

        [% USE file('foo/bar.html', root='/tmp') %]
        [% file.path %]	# foo/bar.html
        [% file.root %]	# /tmp
        [% file.abs %]	# /tmp/foo/bar.html

В дополнение предоставляются следующие методы:

  • rel(path)

    Возвращает относительный путь от текущего файла к другому пути, указанному в качестве аргумента. Он конструируется добавлением пути 'path' к элементу 'home'.

        [% USE file('foo/bar/baz.html') %]
        [% file.rel('wiz/waz.html') %]	# ../../wiz/waz.html

ПРИМЕРЫ

Индекс ] [ Модули ] [ Наверх ]

    [% USE file('/foo/bar/baz.html') %]
    [% file.path %]	  # /foo/bar/baz.html
    [% file.dir %]        # /foo/bar
    [% file.name %]	  # baz.html
    [% file.home %]       # ../..
    [% file.root %]       # ''
    [% file.abspath %]    # /foo/bar/baz.html
    [% file.ext %]        # html
    [% file.mtime %]	  # 987654321
    [% file.atime %]      # 987654321
    [% file.uid %]	  # 500
    [% file.user %]	  # abw
    [% USE file('foo.html') %]
    [% file.path %]	  # foo.html
    [% file.dir %]        # ''
    [% file.name %]	  # foo.html
    [% file.root %]       # ''
    [% file.home %]       # ''
    [% file.abspath %]    # foo.html
    [% USE file('foo/bar/baz.html') %]
    [% file.path %]	  # foo/bar/baz.html
    [% file.dir %]        # foo/bar
    [% file.name %]	  # baz.html
    [% file.root %]       # ''
    [% file.home %]       # ../..
    [% file.abspath %]    # foo/bar/baz.html
    [% USE file('foo/bar/baz.html', root='/tmp') %]
    [% file.path %]	  # foo/bar/baz.html
    [% file.dir %]        # foo/bar
    [% file.name %]	  # baz.html
    [% file.root %]       # /tmp
    [% file.home %]       # ../..
    [% file.abspath %]    # /tmp/foo/bar/baz.html
    # вычисляем другие пути к файлам относительно этого файла и его корневого каталога
    [% USE file('foo/bar/baz.html', root => '/tmp/tt2') %]
    [% file.path('baz/qux.html') %]	    # ../../baz/qux.html
    [% file.dir('wiz/woz.html') %]          # ../../wiz/woz.html

АВТОРЫ

Индекс ] [ Модули ] [ Наверх ]

Михаэль Стивенс (Michael Stevens <michael@etla.org>) написал исходный базовый плагин Directory. Энди Уардли (Andy Wardley <abw@wardley.org>) разделил его на отдельные плагины File и Directory, добавил немного кода и документации по поддержке VIEW, и сделал несколько небольших правок.

ВЕРСИЯ

Индекс ] [ Модули ] [ Наверх ]

2.65, поставляется в составе Template Toolkit версии 2.14, дата релиза - 4 октября 2004.

АВТОРСКИЕ ПРАВА

Индекс ] [ Модули ] [ Наверх ]

Этот модуль является свободно-распространяемым программным обеспечением; вы можете распространять и/или модифицировать его на тех же условиях, что и Perl.

СМОТРИ ТАКЖЕ

Индекс ] [ Модули ] [ Наверх ]

Template::Plugin, Template::Plugin::Directory, Template::View

[ ◄ Template::Plugin::Dumper ] [ Template::Plugin::Filter ► ]

[ Пособия ] [ Руководство ] [ Модули ] [ Библиотеки ] [ Утилиты ] [ Вопросы ] [ Релиз ] [ Perl-ресурсы ]

http://www.template-toolkit.ru/