logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Locale::Maketext::Extract::Plugin::Base - Base module for format parser plugins

Authors

       •   Clinton Gormley <drtech@cpan.org>

       •   Audrey Tang <cpan@audreyt.org>

Description

       All format parser plugins in Locale::Maketext::Extract inherit from
       Locale::Maketext::Extract::Plugin::Base.

       If you want to write your own custom parser plugin, you will need to inherit from this module, and
       provide "file_types()" and "extract()" methods, as shown above.

Methods

new()
               $plugin = My::Parser->new(
                   @file_types         # Optionally specify a list of recognised file types
               )

       add_entry()
               $plugin->add_entry($str,$line,$vars)

       "entries()"
               $entries = $plugin->entries;

       "clear()"
               $plugin->clear

           Clears all stored entries.

       file_types()
               @default_file_types = $plugin->file_types

           Returns a list of recognised file types that your module knows how to parse.

           Each file type can be one of:

           •   A plain string

                  'pl'  => base filename is matched against qr/\.pl$/
                  '*'   => all files are accepted

           •   A regex

                  qr/\.tt2?\./ => base filename is matched against this regex

           •   A codref

                   sub {}  => this codref is called as $coderef->($base_filename,$path_to_file)
                              It should return true or false

       extract()
               $plugin->extract($filecontents);

           extract() is the method that will be called to process the contents of the current file.

           When it finds a string that should be extracted, it should call

              $self->add_entry($string,$line,$vars])

           where $vars refers to any arguments that are being passed to the localise function. For instance:

              l("You found [quant,_1,file,files]",files_found)

                string: "You found [quant,_1,file,files]"
                vars  : (files_found)

           IMPORTANT:  a  single  plugin  instance  is  used  for  all  files,  so  if you plan on storing state
           information in the $plugin object, this should be cleared out at the beginning of "extract()"

       known_file_type()
               if ($plugin->known_file_type($filename_with_path)) {
                   ....
               }

           Determines whether the current file should be handled by this parser, based either  on  the  list  of
           file_types specified when this object was created, or the default file_types specified in the module.

Name

       Locale::Maketext::Extract::Plugin::Base - Base module for format parser plugins

See Also

       xgettext.pl
           for extracting translatable strings from common template systems and perl source files.

       Locale::Maketext::Lexicon
       Locale::Maketext::Extract::Plugin::Perl
       Locale::Maketext::Extract::Plugin::PPI
       Locale::Maketext::Extract::Plugin::TT2
       Locale::Maketext::Extract::Plugin::YAML
       Locale::Maketext::Extract::Plugin::FormFu
       Locale::Maketext::Extract::Plugin::Mason
       Locale::Maketext::Extract::Plugin::TextTemplate
       Locale::Maketext::Extract::Plugin::Generic

Synopsis

           package My::Parser::Plugin;
           use base qw(Locale::Maketext::Extract::Plugin::Base);

           sub file_types {
               return [qw( ext ext2 )]
           }

           sub extract {
               my $self = shift;
               local $_ = shift;

               my $line = 1;

               while (my $found = $self->routine_to_extract_strings) {
                   $self->add_entry($str,[$filename,$line,$vars])
               }

               return;
           }

Version

       version 1.00

See Also