$versija = "(C) karlo\@lanet.lv v.0.0.1. 2019.11.06";

print '-' x 60  . "\n";
print " Programma domaata HTMl koda izkrāsošanai.\n";
print "   $versija\n";
print '-' x 60  . "\n";

### Licence ############################################
# 2019. karlo@lanet.lv                      CC-BY-SA   #
########################################################

# Daži mainīgie ########################################################

#pagaidu simboli
# <
$atver3 = '◀';
# >
$aizver3 = '▶';
# &
$un = '⌘';
# "
$peedinjas = '″';
# =
$vienaads = '⇄';
# <!--
$pieziime_s = '↘';
# -->
$pieziime_b = '↗';

#Iekrāsošanai izmantotās klases
$kraaso{komanda} = 'cmd';
$kraaso{mainiigais} = 'var';
$kraaso{veertiiba} = 'val';
$kraaso{skaitlis} = 'vald';
$kraaso{aizver} = 'stop';
$kraaso{pieziime} = 'rem';
$kraaso{stili} = 'styles';
$kraaso{paziime} = 'vars';
$kraaso{izskats} = 'vals';
$pirmsklases1 = '<span class';
$pirmsklases2 = '>';
$peecklases = '</span>';

########################################################################

# Komandrindas parametri
if (@ARGV != 2) {
	print '-' x 60  . "\n" .
		"Programmas lietošana:\n" .
		"perl $0 HTML_datne Izskaistinātā_HTML_datne\n" .
		'-' x 60 . "\n";
	exit;
}

$kuru_lasiit = $ARGV[0];
$kur_rakstiit = $ARGV[1];
print "Tiks ielasīts no $kuru_lasiit.\n";
print "Tiks ierakstts datnē $kur_rakstiit.\n\n";

if ( -e $kur_rakstiit ) {
	print " Fails $kur_rakstiit jau eksistē\n\n";
	exit;
}

open FAILS, $kuru_lasiit;

# Atver failu, kur ierakstiit
open(IZKRAASOTS, ">$kur_rakstiit") or die;
@teksts = <FAILS>;
close FAILS;

# Apvieno visu vienā mainīgajā
$viss_kods = join '', @teksts;


# Jāatrod, kurus simbolus izmantot kā pagaidu simbolus
die "Kļūda: Atverošo trīstūriekavu aizstājējsimbols '$atver3' ir tekstā.\n" if ($viss_kods =~ /$atver3/);
die "Kļūda: Aizverošo trīstūriekavu aizstājējsimbols '$aizver3' ir tekstā.\n" if ($viss_kods =~ /$aizver3/);
die "Kļūda: Un zīmes aizstājējsimbols '$un' ir tekstā.\n" if ($viss_kods =~ /$un/);
die "Kļūda: Pēdiņu aizstājējsimbols '$peedinjas' ir tekstā.\n" if ($viss_kods =~ /$peedinjas/);
die "Kļūda: Vienādības zīmes aizstājējsimbols '$vienaads' ir tekstā.\n" if ($viss_kods =~ /$vienaads/);
die "Kļūda: Piezīmes sākuma aizstājējsimbols '$vienaads' ir tekstā.\n" if ($viss_kods =~ /$pieziime_s/);
die "Kļūda: Piezīmes beigu aizstājējsimbols '$vienaads' ir tekstā.\n" if ($viss_kods =~ /$pieziime_b/);


$viss_kods =~ s/<!--/$pieziime_s/g;
$viss_kods =~ s/-->/$pieziime_b/g;
$viss_kods =~ s/</$atver3/g;
$viss_kods =~ s/>/$aizver3/g;
$viss_kods =~ s/&/$un/g;
$viss_kods =~ s/"/$peedinjas/g;

#TAG
$viss_kods =~ s/$atver3(\s*)(\w+)($aizver3|\s)/$atver3$1$pirmsklases1$vienaads$kraaso{komanda}$pirmsklases2$2$peecklases$3/g;
$viss_kods =~ s/$atver3(\s*)\/(\w+)($aizver3|\s)/$atver3$1$pirmsklases1$vienaads$kraaso{aizver}$pirmsklases2\/$peecklases$pirmsklases1$vienaads$kraaso{komanda}$pirmsklases2$2$peecklases$3/g;
#mainīgie
$viss_kods =~ s/(\s+)(\w+)=/$1$pirmsklases1$vienaads$kraaso{mainiigais}$pirmsklases2$2$peecklases=/g;
#vērtības
$viss_kods =~ s/=$peedinjas(\d+)([^$peedinjas]*)$peedinjas/$vienaads$peedinjas$pirmsklases1$vienaads$kraaso{skaitlis}$pirmsklases2$1$2$peecklases$peedinjas/g;
$viss_kods =~ s/=(\d+)([^\s$aizver3]*)($aizver3|\s)/$vienaads$pirmsklases1$vienaads$kraaso{skaitlis}$pirmsklases2$1$2$peecklases$3/g;
$viss_kods =~ s/=$peedinjas([^$peedinjas]+)$peedinjas/$vienaads$peedinjas$pirmsklases1$vienaads$kraaso{veertiiba}$pirmsklases2$1$peecklases$peedinjas/g;
$viss_kods =~ s/=([^\s$aizver3]*)($aizver3|\s)/$vienaads$pirmsklases1$vienaads$kraaso{veertiiba}$pirmsklases2$1$peecklases$2/g;
#Iekrāso stilu definējumus
#Jabūt katram savā rindiņā
$viss_kods =~ s/^(\s*)([^:]+):([^\n;]+);(\s*)$/$1$pirmsklases1$vienaads$kraaso{paziime}$pirmsklases2$2$peecklases:$pirmsklases1$vienaads$kraaso{izskats}$pirmsklases2$3$peecklases\;$4/mg;
$viss_kods =~ s/^(\s*)([^\{\n]+)\{(\s*)$/$1$pirmsklases1$vienaads$kraaso{stili}$pirmsklases2$2$peecklases\{$4/mg;

# Beigās atgriež vai aizstāj speciālos simbolus
$viss_kods =~ s/$atver3/&lt;/g;
$viss_kods =~ s/$aizver3/&gt;/g;
$viss_kods =~ s/$un/&amp;/g;
$viss_kods =~ s/$peedinjas/&quot;/g;
$viss_kods =~ s/$vienaads/=/g;
$viss_kods =~ s/$pieziime_s/<div class=$kraaso{pieziime}>&lt;!--/g;
$viss_kods =~ s/$pieziime_b/--&gt;<\/div>/g;

# Ieraksta rezultātu datnē 
print IZKRAASOTS $viss_kods;
close IZKRAASOTS;
