Tk-MarkdownTk
view release on metacpan or search on metacpan
lib/Tk/MarkdownTk.pm view on Meta::CPAN
package Tk::MarkdownTk;
use 5.006;
use strict;
use warnings FATAL => 'all';
=head1 NAME
Tk::MarkdownTk - a Tk::Markdown with tk widget tag support
=head1 VERSION
Version 0.07
=cut
our $VERSION = '0.07';
use Tk::Markdown;
use base qw(Tk::Derived Tk::Markdown);
Construct Tk::Widget 'MarkdownTk';
=head1 SYNOPSIS
use Tk;
use Tk::MarkdownTk;
my $mw = new MainWindow();
my $mdt = $mw->MarkdownTk();
$mdt->insert(q{
some markdown here
with tags like this: <Tk::Button -text="Click me!">
});
=head1 SUBROUTINES/METHODS
=head2 insert
Whenever insert is called on the MarkdownTk,
some translation is done on the text in order to
diplay it nicely as markdown. Tables are reformatted
(if the line starts with a bar) and headers are
tagged with different fonts.
This module is currently under development and
there's plenty to do, e.g. links, images, etc.
In MarkdownTk, html-ish tags are also transformed
into Tk widgets.
=cut
sub insert
{
my ($self,$index,$content) = @_;
my $res = $self->SUPER::insert($index,Tk::Markdown::FormatMarkdown($content));
if(! $self->{inserting}){ ### don't allow recursion...
$self->{inserting} = 1;
$self->PaintMarkdown();
$self->TransformTk();
$self->see("1.0");
$self->{inserting} = 0;
}
return $res;
}
=head2 TransformTk
This is called internally. It parses out HTML-like tags that define Widgets to be drawn
in the text.
eg
( run in 2.868 seconds using v1.01-cache-2.11-cpan-13bb782fe5a )