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 )