Add TUWF 1.2
This commit is contained in:
parent
54947f15c2
commit
2192e68775
8 changed files with 58 additions and 13 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,2 +1,3 @@
|
||||||
*.gz
|
*.gz
|
||||||
*.zip
|
*.zip
|
||||||
|
download/doc
|
||||||
|
|
|
||||||
7
dat/ncdu
7
dat/ncdu
|
|
@ -57,10 +57,11 @@ L<Puppy Linux|http://www.murga-linux.com/puppy/viewtopic.php?t=35024> -
|
||||||
L<Solaris|http://www.opencsw.org/packages/ncdu> -
|
L<Solaris|http://www.opencsw.org/packages/ncdu> -
|
||||||
L<Slackware|http://slackbuilds.org/repository/14.2/system/ncdu/> -
|
L<Slackware|http://slackbuilds.org/repository/14.2/system/ncdu/> -
|
||||||
L<Slax Linux|http://www.slax.org/modules.php?detail=ncdu> -
|
L<Slax Linux|http://www.slax.org/modules.php?detail=ncdu> -
|
||||||
L<Ubuntu|http://packages.ubuntu.com/search?searchon=sourcenames&keywords=ncdu>
|
L<Ubuntu|http://packages.ubuntu.com/search?searchon=sourcenames&keywords=ncdu> -
|
||||||
|
L<Void Linux|https://www.voidlinux.eu/packages/>
|
||||||
|
|
||||||
Packages for CentOS, RHEL and (open)SUSE can be found on the
|
Packages for RHEL and (open)SUSE can be found on the
|
||||||
L<Open Build Service|https://build.opensuse.org/package/show?package=ncdu&project=utilities>.
|
L<Open Build Service|https://software.opensuse.org//download.html?project=utilities&package=ncdu>.
|
||||||
|
|
||||||
Packages for NetBSD, DragonFlyBSD, MirBSD and others can be found on
|
Packages for NetBSD, DragonFlyBSD, MirBSD and others can be found on
|
||||||
L<pkgsrc|http://pkgsrc.se/sysutils/ncdu>.
|
L<pkgsrc|http://pkgsrc.se/sysutils/ncdu>.
|
||||||
|
|
|
||||||
14
dat/tuwf
14
dat/tuwf
|
|
@ -9,26 +9,24 @@ websites, it is also perfectly suited for small single-file websites.
|
||||||
|
|
||||||
=over
|
=over
|
||||||
|
|
||||||
=item * Very small, and no extra modules required,
|
=item * Very small, and no extra modules required for the base functionality,
|
||||||
|
|
||||||
=item * Easy URI-to-function mapping using regular expressions,
|
=item * Easy built-in routing,
|
||||||
|
|
||||||
=item * Handy form validation functions,
|
=item * Handy form validation functions,
|
||||||
|
|
||||||
=item * Easy XML/XHTML output generation functions,
|
=item * Easy XML/HTML generation,
|
||||||
|
|
||||||
=item * Response buffering and output compression,
|
=item * Response buffering and output compression,
|
||||||
|
|
||||||
=item * Easy access to GET/POST data and cookies,
|
=item * Easy access to request data,
|
||||||
|
|
||||||
=item * Support for CGI and FastCGI - optimized for FastCGI,
|
=item * Support for CGI, FastCGI and a built-in web server,
|
||||||
|
|
||||||
=item * Uses UTF-8 for all text,
|
=item * Uses UTF-8 for all text,
|
||||||
|
|
||||||
=item * Convenient SQL execution functions and correct transaction handling,
|
=item * Convenient SQL execution functions and correct transaction handling,
|
||||||
|
|
||||||
=item * Promotes code re-use,
|
|
||||||
|
|
||||||
=item * Open source (duh!) and available under a liberal MIT license.
|
=item * Open source (duh!) and available under a liberal MIT license.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
@ -39,7 +37,7 @@ information and details.
|
||||||
|
|
||||||
=head2 Download
|
=head2 Download
|
||||||
|
|
||||||
B<Latest packaged version:> 1.1 ([dllink TUWF-1.1.tar.gz download]
|
B<Latest packaged version:> 1.2 ([dllink TUWF-1.2.tar.gz download]
|
||||||
- L<CPAN mirror|http://search.cpan.org/dist/TUWF/>)
|
- L<CPAN mirror|http://search.cpan.org/dist/TUWF/>)
|
||||||
|
|
||||||
TUWF is also available on a git repository at L<https://g.blicky.net/tuwf.git/>.
|
TUWF is also available on a git repository at L<https://g.blicky.net/tuwf.git/>.
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,27 @@
|
||||||
|
1.2 - 2018-02-18
|
||||||
|
- Add tuwf() exported function as alias to $self or $TUWF::OBJ
|
||||||
|
- Add TUWF::get/put/post/etc() as better alternative to TUWF::register()
|
||||||
|
- Add TUWF::hook() as better alternative to (pre|post)_request_handler
|
||||||
|
- Add capture() to access route captures
|
||||||
|
- Add standandlone HTTP dev server (requires HTTP::Server::Simple)
|
||||||
|
- Add pass() and done() methods to prematurely abort the current handler
|
||||||
|
- Add 'import_modules' setting
|
||||||
|
- TUWF::Request: Add reqJSON()
|
||||||
|
- TUWF::Request: Disallow control characters in HTTP request data
|
||||||
|
- TUWF::Response: Add resJSON()
|
||||||
|
- TUWF::Response: Add resBinary()
|
||||||
|
- TUWF::Response: Add resFile() + mime_types/mime_default settings
|
||||||
|
- TUWF::Response: Allow setting headers before resRedirect()
|
||||||
|
- TUWF::Response: resRedirect() now sets a relative 'Location' HTTP header
|
||||||
|
- TUWF::DB: Add DB query logging and profiling to non-TUWF database functions
|
||||||
|
- TUWF::DB: Add dbVal()
|
||||||
|
- TUWF::XML: Add functional-style DSL
|
||||||
|
- TUWF::XML: Add HTML5 support
|
||||||
|
- TUWF::XML: Add different naming convention support
|
||||||
|
- TUWF::XML: Add 'mkclass' utility function
|
||||||
|
- Improved error pages
|
||||||
|
- Various documentation improvements
|
||||||
|
|
||||||
1.1 - 2017-11-26
|
1.1 - 2017-11-26
|
||||||
- Disallow exclamation mark in email address validation
|
- Disallow exclamation mark in email address validation
|
||||||
- Add reqProtocol() method
|
- Add reqProtocol() method
|
||||||
|
|
|
||||||
16
download/TUWF-1.2.tar.gz.asc
Normal file
16
download/TUWF-1.2.tar.gz.asc
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCgAdFiEEdEYNMrgIEOupr6LpYjlMaYwnOfoFAlqJW1IACgkQYjlMaYwn
|
||||||
|
OfoX8xAAtvV3oCpZqDEEJl50MJTy8dncFo3nMxKfD7xbsv4pKbPh6sj3kEd+PcdM
|
||||||
|
kbQxECdKZbNx8LgtjW7jNwIsU6SoEV4WZUWN3dZiVEGr+qF5Gc9101M1c5z99BPU
|
||||||
|
D+2QjjbcHB1MepcRaKe76eT1+KLm/nA5OqfNgQ1z626r31JriB4d+Ppd8GlDfCDq
|
||||||
|
UALjjv0qzwVEr4YBdeXClDYJ1vorEGoOyt/gqBuged86NDaeyqkZ2c/2y2HeB8If
|
||||||
|
B2PCZbYx7DFAcOz7XSJuVkeHLUvOlK3zknWMZXXeK01ev+evuVgGwe8dktQGL01P
|
||||||
|
dRl+vpJi++eFhJ57zwXYvAFlW9KWuor3YnPJms2eOZAZyHKc2WXjN581YT/Xt1s1
|
||||||
|
+r5qndZXUfgrk8tUANRKff5oaZ9xwoZ1XqBu3M3Dqrtl2RCj3TLg8KXuh19Sy0KQ
|
||||||
|
ijz1/7ZlIRXVAo+mqmb2ZE8OfqXrGRwXdCWJTZ9LsHnkY+kPfB8FdoUP93vrkV7Z
|
||||||
|
1Fu0T2Et7UWKj6Xr4qyBf/CjJZK9cy1EXfnrKVJQa5YkRVqQbnnzKFI5gv7U+GgO
|
||||||
|
hJG4Tr84bv3xJEGtcMyMrgnAcag8+7KZYiM2yd/fp7wUtxs1BJczyxevVhWMKcSM
|
||||||
|
dNsVm76AF8vsC7CCOOCXJZ9w4DfDyEWkyV4dKbFk60hkslj7BnI=
|
||||||
|
=YQqj
|
||||||
|
-----END PGP SIGNATURE-----
|
||||||
1
download/TUWF-1.2.tar.gz.md5
Normal file
1
download/TUWF-1.2.tar.gz.md5
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
5028482611a415c22993adab05b9698e TUWF-1.2.tar.gz
|
||||||
1
download/TUWF-1.2.tar.gz.sha1
Normal file
1
download/TUWF-1.2.tar.gz.sha1
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
3b336c065e9f8a37b2f387f9ff645c2ab2da5485 TUWF-1.2.tar.gz
|
||||||
|
|
@ -12,6 +12,7 @@ BEGIN { ($ROOT = abs_path $0) =~ s{index\.cgi$}{}; }
|
||||||
|
|
||||||
|
|
||||||
my @changes = (
|
my @changes = (
|
||||||
|
[ '2018-02-18', '/tuwf', 'TUWF 1.2 released' ],
|
||||||
[ '2018-01-29', '/ncdu', 'ncdu 1.13 released' ],
|
[ '2018-01-29', '/ncdu', 'ncdu 1.13 released' ],
|
||||||
[ '2018-01-24', '/nginx-confgen', 'nginx-confgen 1.1 released' ],
|
[ '2018-01-24', '/nginx-confgen', 'nginx-confgen 1.1 released' ],
|
||||||
[ '2018-01-19', '/nginx-confgen', 'New project: nginx-confgen' ],
|
[ '2018-01-19', '/nginx-confgen', 'New project: nginx-confgen' ],
|
||||||
|
|
@ -117,7 +118,7 @@ TUWF::register(
|
||||||
qr{nginx-confgen/man} => sub { podpage(shift, 'nginx-confgen-man', 'nginx-confgen', 'man', 'The nginx-confgen(1) Man Page', 1) },
|
qr{nginx-confgen/man} => sub { podpage(shift, 'nginx-confgen-man', 'nginx-confgen', 'man', 'The nginx-confgen(1) Man Page', 1) },
|
||||||
qr{nginx-confgen/changes} => sub { changelog(shift, 'nginx-confgen-changelog', undef, 'nginx-confgen', 'changes', 'nginx-confgen Changelog', 1) },
|
qr{nginx-confgen/changes} => sub { changelog(shift, 'nginx-confgen-changelog', undef, 'nginx-confgen', 'changes', 'nginx-confgen Changelog', 1) },
|
||||||
qr{tuwf} => sub { podpage(shift, 'tuwf', 'tuwf', '', 'The Ultimate Website Framework') },
|
qr{tuwf} => sub { podpage(shift, 'tuwf', 'tuwf', '', 'The Ultimate Website Framework') },
|
||||||
qr{tuwf/man(?:/(db|misc|request|response|xml))?} => \&tuwfmanual,
|
qr{tuwf/man(?:/(db|intro|misc|request|response|xml))?} => \&tuwfmanual,
|
||||||
qr{tuwf/changes} => sub { changelog(shift, 'tuwf-changelog', 'TUWF', 'tuwf', 'changes', 'TUWF Changelog') },
|
qr{tuwf/changes} => sub { changelog(shift, 'tuwf-changelog', 'TUWF', 'tuwf', 'changes', 'TUWF Changelog') },
|
||||||
qr{ylib} => sub { podpage(shift, 'ylib/README.pod', 'ylib', '', 'Ylib') },
|
qr{ylib} => sub { podpage(shift, 'ylib/README.pod', 'ylib', '', 'Ylib') },
|
||||||
qr{yxml} => sub { podpage(shift, 'yxml', 'yxml', '', 'Yxml - A small, fast and correct* XML parser') },
|
qr{yxml} => sub { podpage(shift, 'yxml', 'yxml', '', 'Yxml - A small, fast and correct* XML parser') },
|
||||||
|
|
@ -202,7 +203,7 @@ sub tuwfmanual {
|
||||||
$mod .= '/'.($mod{$man} || ucfirst $man) if $man;
|
$mod .= '/'.($mod{$man} || ucfirst $man) if $man;
|
||||||
(my $pm = $mod) =~ s/\//::/;
|
(my $pm = $mod) =~ s/\//::/;
|
||||||
$s->htmlHeader(title => $pm.' Documentation', page => 'tuwf', sec => 'man', sec2 => $man);
|
$s->htmlHeader(title => $pm.' Documentation', page => 'tuwf', sec => 'man', sec2 => $man);
|
||||||
(my $f = $INC{"$mod.pm"}) =~ s/\.pm$/.pod/;
|
(my $f = $INC{"TUWF.pm"}) =~ s/TUWF\.pm$/$mod.pod/;
|
||||||
$s->htmlPOD($f, 1);
|
$s->htmlPOD($f, 1);
|
||||||
$s->htmlFooter;
|
$s->htmlFooter;
|
||||||
}
|
}
|
||||||
|
|
@ -414,6 +415,7 @@ sub htmlPOD {
|
||||||
$p->{podhtml_LOT} = {
|
$p->{podhtml_LOT} = {
|
||||||
'TUWF' => '/tuwf/man',
|
'TUWF' => '/tuwf/man',
|
||||||
'TUWF::DB' => '/tuwf/man/db',
|
'TUWF::DB' => '/tuwf/man/db',
|
||||||
|
'TUWF::Intro' => '/tuwf/man/intro',
|
||||||
'TUWF::Misc' => '/tuwf/man/misc',
|
'TUWF::Misc' => '/tuwf/man/misc',
|
||||||
'TUWF::Request' => '/tuwf/man/request',
|
'TUWF::Request' => '/tuwf/man/request',
|
||||||
'TUWF::Response' => '/tuwf/man/response',
|
'TUWF::Response' => '/tuwf/man/response',
|
||||||
|
|
@ -550,6 +552,7 @@ sub htmlMenu {
|
||||||
$m->('/tuwf/man', 'Manual', $o{sec} eq 'man', sub {
|
$m->('/tuwf/man', 'Manual', $o{sec} eq 'man', sub {
|
||||||
$m->('/tuwf/man', 'Main', $o{sec} eq 'man' && !$o{sec2});
|
$m->('/tuwf/man', 'Main', $o{sec} eq 'man' && !$o{sec2});
|
||||||
$m->('/tuwf/man/db', '::DB', $o{sec} eq 'man' && $o{sec2} eq 'db');
|
$m->('/tuwf/man/db', '::DB', $o{sec} eq 'man' && $o{sec2} eq 'db');
|
||||||
|
$m->('/tuwf/man/intro', '::Intro', $o{sec} eq 'man' && $o{sec2} eq 'intro');
|
||||||
$m->('/tuwf/man/misc', '::Misc', $o{sec} eq 'man' && $o{sec2} eq 'misc');
|
$m->('/tuwf/man/misc', '::Misc', $o{sec} eq 'man' && $o{sec2} eq 'misc');
|
||||||
$m->('/tuwf/man/request', '::Request', $o{sec} eq 'man' && $o{sec2} eq 'request');
|
$m->('/tuwf/man/request', '::Request', $o{sec} eq 'man' && $o{sec2} eq 'request');
|
||||||
$m->('/tuwf/man/response', '::Response', $o{sec} eq 'man' && $o{sec2} eq 'response');
|
$m->('/tuwf/man/response', '::Response', $o{sec} eq 'man' && $o{sec2} eq 'response');
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue