#!/usr/bin/perl # sierotki - skrypt wstawiający znak twardej spacji za krótkimi słowami typu "i", "na" # Autor: Łukasz Grabuń, 2005. package sierotki; use base "HTML::Parser"; use warnings; use CGI qw(:standard); use strict; my $built = ""; my $p = new sierotki; my $encoded = ""; my $html; my $flag = 0; if (param()) { $html = param('html'); $html =~ s/&/&/g; $p->parse($html); ($encoded = $built) =~ s//>/g; } print "Content-Type: text/html; charset=utf-8\n\n"; print < grabun.com | utwardzacz sierotek

grabun.com

Utwardzacz sierotek

Skrypt wstawia encję &nbsp; za tzw. sierotkami.

Uwaga: skrypt jest ciągle w fazie testów. Zachęcam do pobrania kodu i ulepszenia go.


HEADER print <Twój HTML
RESULT print "<\/div><\/body><\/html>"; sub start { my ( $self, $tag, $attr, $attrseq, $origtext ) = @_; $built .= $origtext; } sub text { my ( $self, $text ) = @_; if ($flag) { $text =~ s/^\s/&nbsp;/; $flag=0;} 1 while $text =~ s/(\s|^|;)(na|z|i|w|we|o|ze|a)(\s|\n)/$1$2&nbsp;/ig; if ($text =~ /(\s|^|;)(na|z|i|w|we|o|ze|a)($)/) { $flag = 1; } $built .= $text; } sub declaration { my ($self, $decl ) = @_; $built .= ""; } sub comment { my ( $self, $comment ) = @_; $built .= ""; } sub end { my ( $self, $tag, $origtext ) = @_; $built .= $origtext; }