Files
perl-HTML-Template-Compiled/perl-HTML-Template-Compiled.spec
2025-08-12 18:14:37 +02:00

157 lines
6.6 KiB
RPMSpec

#
# spec file for package perl-HTML-Template-Compiled
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define cpan_name HTML-Template-Compiled
Name: perl-HTML-Template-Compiled
Version: 1.3.0
Release: 0
# 1.003 -> normalize -> 1.3.0
%define cpan_version 1.003
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Template System Compiles HTML::Template files to Perl code
URL: https://metacpan.org/release/%{cpan_name}
Source0: https://cpan.metacpan.org/authors/id/T/TI/TINITA/%{cpan_name}-%{cpan_version}.tar.gz
Source1: cpanspec.yml
Source100: README.md
BuildArch: noarch
BuildRequires: perl
BuildRequires: perl-macros
BuildRequires: perl(HTML::Entities)
BuildRequires: perl(Parse::RecDescent)
BuildRequires: perl(URI::Escape)
Requires: perl(HTML::Entities)
Requires: perl(Parse::RecDescent)
Requires: perl(URI::Escape)
Provides: perl(HTML::Template::Compiled) = %{version}
Provides: perl(HTML::Template::Compiled::Classic) = %{version}
Provides: perl(HTML::Template::Compiled::Compiler) = %{version}
Provides: perl(HTML::Template::Compiled::Compiler::Classic) = %{version}
Provides: perl(HTML::Template::Compiled::Exception) = %{version}
Provides: perl(HTML::Template::Compiled::Expr) = %{version}
Provides: perl(HTML::Template::Compiled::Expression) = %{version}
Provides: perl(HTML::Template::Compiled::Expression::Conditional) = %{version}
Provides: perl(HTML::Template::Compiled::Expression::Defined) = %{version}
Provides: perl(HTML::Template::Compiled::Expression::Elsif) = %{version}
Provides: perl(HTML::Template::Compiled::Expression::Expressions) = %{version}
Provides: perl(HTML::Template::Compiled::Expression::Function) = %{version}
Provides: perl(HTML::Template::Compiled::Expression::Literal) = %{version}
Provides: perl(HTML::Template::Compiled::Expression::Method) = %{version}
Provides: perl(HTML::Template::Compiled::Expression::SubrefCall) = %{version}
Provides: perl(HTML::Template::Compiled::Expression::Ternary) = %{version}
Provides: perl(HTML::Template::Compiled::Filter) = %{version}
Provides: perl(HTML::Template::Compiled::Formatter) = %{version}
Provides: perl(HTML::Template::Compiled::Lazy) = %{version}
Provides: perl(HTML::Template::Compiled::Parser) = %{version}
Provides: perl(HTML::Template::Compiled::Plugin::XMLEscape) = %{version}
Provides: perl(HTML::Template::Compiled::Token) = %{version}
Provides: perl(HTML::Template::Compiled::Token::Text) = %{version}
Provides: perl(HTML::Template::Compiled::Token::close) = %{version}
Provides: perl(HTML::Template::Compiled::Token::open) = %{version}
Provides: perl(HTML::Template::Compiled::Token::single) = %{version}
Provides: perl(HTML::Template::Compiled::Utils) = %{version}
%undefine __perllib_provides
%{perl_requires}
%description
HTML::Template::Compiled is a template system which can be used for
HTML::Template templates with almost the same API. It offers more flexible
template delimiters, additional tags and features, and by compiling the
template into perl code it can run significantly faster in persistent
environments such as FastCGI or mod_perl.
The goal is to offer more features for flexibility but keep the basic
syntax as easy as it is.
Features at a glance:
* Dot notation for objects, hashes and arrays
* Use expressions without any disadvantages like those in
HTML::Template::Expr
* Write escaping plugins and plugins for new tags
* Alternate delimiters, e.g. '[%if %]' and '<%if %>'
* Avoid 'global_vars' option by using the 'SET_VAR' tag to create aliases.
* Tags ELSIF, EACH, WHILE, COMMENT, WRAPPER, SWITCH/CASE, INCLUDE_VAR
* Chomp newlines/whitespace
For a quick reference, see HTML::Template::Compiled::Reference.
As the basic features work like in HTML::Template, please get familiar with
its documentation before.
HTML::Template::Compiled (HTC) does not implement all features of
HTML::Template (see "COMPATIBILITY"), and it has got some additional
features which are explained below: "ADDITIONAL FEATURES"
See "BENCHMARKS" for some examples on the performance. Since it depends
highly on the options used and on the template size there can be no general
statement on its performance.
You might want to use HTML::Template::Compiled::Lazy for CGI environments
as it doesn't parse the template before calling output. But note that
HTC::Lazy isn't much tested, and I don't use it myself, so there's a lack
of experience. If you use it and have problems, please report.
HTC will use a lot of memory because it keeps all template objects in
memory. If you are on mod_perl, and have a lot of templates, you should
preload them at server startup to be sure that it is in shared memory. At
the moment HTC is not fully tested for keeping all data in shared memory
(e.g. when a copy-on-write occurs), but it seems like it's behaving well.
For preloading you can use HTML::Template::Compiled->preload($cache_dir).
Generating code, writing it on disk and later eval() it can open security
holes, for example if you have more users on the same machine that can
access the same files (usually an http server running as 'www' or
'nobody'). See "SECURITY" for details what you can do to safe yourself.
NOTE: If you don't need any of the additional features listed below and if
you don't need the speed (in many cases it's probably not worth trading
speed for memory), then you might be better off with just using
HTML::Template.
NOTE2: If you have any questions, bug reports, send them to me and not to
Sam Tregar. This module is developed by me at the moment, independently
from HTML::Template, although I try to get most of the tests from it
passing for HTC. See "RESOURCES" for current information.
%prep
%autosetup -n %{cpan_name}-%{cpan_version}
%build
perl Makefile.PL INSTALLDIRS=vendor
%make_build
%check
make test
%install
%perl_make_install
%perl_process_packlist
%perl_gen_filelist
%files -f %{name}.files
%doc Changes examples README
%license LICENSE
%changelog