Template::Plugin::VimColor - TT plugin for Text::VimColor


Template-Plugin-VimColor documentation Contained in the Template-Plugin-VimColor distribution.

Index


Code Index:

NAME

Top

Template::Plugin::VimColor - TT plugin for Text::VimColor

SYNOPSIS

Top

  // in your template
  [% USE VimColor %]
  <pre>
  [% FILTER vimcolor set_number => 1 -%]
  #!/usr/local/bin/perl
  use strict;
  use warnings;

  print "Hello, World!\n";
  [% END -%]
  </pre>

  // for another language
  <pre>
  [% FILTER vimcolor filetype => 'ruby' -%]
  #!/usr/local/bin/ruby

  puts "Hello, World";
  [% END -%]
  </pre>

DESCRIPTION

Top

This plugin allows you to mark up your code in your document with VimColor style.

You probably need to define styles for marked strings like this,

  <style type="text/css">
  pre { color: #fff; background-color: #000; padding: 10px; }
  span.synComment { color: blue; }
  span.synConstant { color: red; }
  span.synIdentifier { color: aqua; }
  span.synStatement { color: yellow; }
  span.synPreProc { color: fuchsia; }
  span.synType { color: lime; }
  span.synSpecial { color: fuchsia;  }
  span.synUnderlined { color: fuchsia; text-decoration: underline; }
  span.synError { background-color: red; color: white; font-weight: bold; }
  span.synTodo { background-color: yellow; color: black; }
  span.Linenum { color: yellow; }
  </style>

SEE ALSO

Top

Template, Text::VimColor

TODO

Top

Caching the marked output with Cache::Cache like Apache::VimColor. Patches welcome :)

AUTHOR

Top

Naoya Ito <naoya@bloghackers.net>

COPYRIGHT AND LICENSE

Top


Template-Plugin-VimColor documentation Contained in the Template-Plugin-VimColor distribution.

#$Id:$
package Template::Plugin::VimColor;
use strict;
use warnings;

use base qw (Template::Plugin::Filter);
use Text::VimColor;

our $VERSION = 0.01;

sub init {
    my $self = shift;
    $self->{_DYNAMIC} = 1;
    $self->install_filter($self->{_ARGS}->[0] || 'vimcolor');
    $self;
}

sub filter {
    my ($self, $text, $args, $config) = @_;
    my $filetype = delete $config->{filetype} || 'perl';
    my $syntax = Text::VimColor->new(
        string   => \$text,
        filetype => $filetype,
        %$config,
    );

    my $output = $syntax->html;
    $output = _numbered(\$output) if $config->{set_number};
    return $output;
}

sub _numbered {
    my $textref = shift;
    my $ret = '';
    my $cur_line = 0;
    $ret .= sprintf qq{<span class="synLinenum">%5d</span> %s\n}, ++$cur_line, $_
        for split /(?:\r\n|\r|\n)/, $$textref;
    $ret;
}

1;
__END__