diff --git a/kettext.pm b/kettext.pm
index 8121e95..4bc3294 100644
--- a/kettext.pm
+++ b/kettext.pm
@@ -393,7 +393,7 @@ sub parseFile {
sub parseOptions {
my $text = $_[0];
my %opts = ();
- while ($text =~ m/(\.)([a-zA-Z]*[^\(])(\()([^\)]*)/g) {
+ while ($text =~ m/(\.|)([a-zA-Z]*[^\(])(\()([^\)]*)/g) {
$opts{$2} = $4;
}
return \%opts;
@@ -492,6 +492,7 @@ sub HTML {
sub convertText {
my $text = $_[0];
my @text_patterns = ('\*\*','\*\*', '\/\/','\/\/', '\[\[','\]\]', '\(\(','\)\)', '``', '``', '__','__');
+ my @default_opts = ("", "", "href", "", "", "");
my @text_replace = ('','', '','', '','', '','', '','
', '','');
my @char_patterns = ('&', '<', '>', '"', '\'', '--');
my @char_replace = ('&', '<', '>', '"', ''', '—');
@@ -511,31 +512,31 @@ sub HTML {
for (my $p = 0; $p <= $#text_patterns; $p+=2) {
my $open = $text_patterns[$p];
my $close = $text_patterns[$p+1];
- while ($new_text =~ m/($open)([^$close]*)($close)(\.\S*\(.*?\)|)/g) {
- #while ($new_text =~ m/($open)([^$close]*)($close)(\.\S*\(.*\)|)/g) {
+ #while ($new_text =~ m/($open)([^$close]*)($close)(\.\S*\(.*?\)|)/g) {
+ while ($new_text =~ m/($open)([^$close]*)($close)((?:\()(.*?)(?:\))|)(\.\S*\(.*?\)|)/g) {
my $converted_text;
if ($p == 4) {
my @media = convertLink($2);
- if ($4) {
- my $ts = substr($media[0], 0, -1);
- my $te = substr($media[0], -1);
- $converted_text = $ts.convertOpts(kettext::parseOptions($4)).$te.$media[1];
- } else {
- $converted_text = $media[0].$media[1];
+ my $ts = substr($media[0], 0, -1);
+ my $te = substr($media[0], -1);
+ my $opts = kettext::parseOptions($6);
+ if ($5) {
+ $opts->{$default_opts[$i]} = $5;
}
- $new_text =~ s/\Q$1$2$3$4\E/$converted_text/g;
+ $converted_text = $ts.convertOpts($opts).$te.$media[1];
+ $new_text =~ s/\Q$1$2$3$4$6\E/$converted_text/g;
} else {
- if ($4) {
- my $ts = substr($text_replace[$i], 0, -1);
- my $te = substr($text_replace[$i], -1);
- $converted_text = $ts.convertOpts(kettext::parseOptions($4)).$te.$2.$text_replace[$i+1];
- } else {
- $converted_text = $text_replace[$i].$2.$text_replace[$i+1];
+ my $ts = substr($text_replace[$p], 0, -1);
+ my $te = substr($text_replace[$p], -1);
+ my $opts = kettext::parseOptions($6);
+ if ($5) {
+ $opts->{$default_opts[$i]} = $5;
}
- $new_text =~ s/\Q$1$2$3$4\E/$converted_text/g;
+ $converted_text = $ts.convertOpts($opts).$te.$2.$text_replace[$p+1];
+ $new_text =~ s/\Q$1$2$3$4$6\E/$converted_text/g;
}
}
- $i +=2;
+ $i++;
}
return $new_text;
}
diff --git a/test/default.ktx b/test/default.ktx
new file mode 100644
index 0000000..83427cb
--- /dev/null
+++ b/test/default.ktx
@@ -0,0 +1,11 @@
+Wat.
+
+This is a [[link]].href(1) wat [[link]].href("yo")
+Okay
+
+[[link]](1)
+
+[[link]](1).alt(yep)
+
+[[Check out this page!]](http://kettek.exoss.net)
+