Re: New CPAN Distribution Help
[email protected] (Tim Ka) Wed, 26 May 2021 15:57:46 +0200
| Newsgroups | perl.module-authors |
|---|---|
| Message-ID | <CALd3OqG906JtErOO0=5fyB+DoeH5Uwaf5-P3JmKsB4U_5ci5kg@mail.gmail.com> |
I split the code into modules. Using a work branch now: https://github.com/poti1/mojo/tree/work/MakeModule ~Tim On Wed, May 26, 2021 at 8:45 AM Tim Ka <[email protected]> wrote: > Hey all, > > I am looking for advice on making my *VERY FIRST* cpan distribution. ☺ > I have few modules which I use for a tool I wrote (pod.pl) and wanted to > share it with the Perl community. > > Here is my github repo <https://github.com/poti1/mojo>. > > It includes: > - Mojo-Pod: A stub module folder (using Module::Starter. I wanted to pull > out the modules into here, but was debating the names to use). > - dir.pl: Original idea. > - *pod.pl <http://pod.pl>*: Tool and Modules inside. Look here. > > ---------------------------------------------------- > Background: > > I had been using Python alot for work in the past year and I really liked > the dir() function to be able to quickly show all the available methods of > a Class or Object. I wrote about it here: > > https://stackoverflow.com/questions/25810035/python-dir-equivalent-in-perl#answer-66832483 > > dir.pl is just a simple example showing the available methods in a > class/object. > > I took the idea from dir.pl and built it into a tool I use quite > regularly now especially when learning Mojo. > > ---------------------------------------------------- > Here are some sample outputs from the tool: > > *Help section* > [image: image.png] > > List all methods with a summary: > *perl pod.pl <http://pod.pl> ojo* > [image: image.png] > > Show the documentation for a specific method: > *perl pod.pl <http://pod.pl> ojo x* > [image: image.png] > > *perl pod.pl <http://pod.pl> Mojo::UserAgent* > [image: image.png] > ---------------------------------------------------- > Modules: > > I created a few modules inside the tool which I wanted to extract into its > own distribution if possible. > > *My::Pod::Simple::SimpleTree* - Take a pod file and return a simple > linear representation of it. > (I built upon the example from Pod::Simple::SimpleTree). > > Sample output can be found in _mock_root(). > [ > [ > "head1", > "NAME", > ], > [ > "Vervatim", > "My new module", > ], > [ > "head1", > " SYNOPSIS ", > ], > ] > > *My::Pod* - Uses the structure generated by My::Pod::Simple::SimpleTree > to create a tree which is structured to include the sub tags like so: > > { > tag => "head1", > text => ["NAME"], > sub => [ > { > tag => "verbatim", > text => ["My new module"], > } > ], > }, > { > tag => "head1", > text => ["SYNOPSIS"], > sub => [ > { > tag => "verbatim", > text => ["Example usage"], > } > ], > } > > The main roles of My::Pod are: > 1. parse the linear (SimpleTree) into a structure. > 2. Allow querying the pod tree. > > ---------------------------------------------------- > *Pod Query API* (as found in _check_sections() ) > [image: image.png] > > So if I want the module name, I could do this: > > *say My::Pod->new("ojo")->find_title;* > > Where *find_title *is: > [image: image.png] > > Similarly one can extract the *method*: > [image: image.png] > > Or the *method summary* (when all methods are listed): > [image: image.png] > > Lastly, using the query API, one can also pull out the *events *listed in > a pod file like so: > [image: image.png] > > > ---------------------------------------------------- > Summary > > Please try of the *pod.pl <http://pod.pl>* script and give me your > feedback. > I'd like to be able to contribute it and/or its sub modules to CPAN if > possible. > > > Kind Regards, > ~Tim >
image.png
(image/png, 48 KB) - not displayed
image.png
(image/png, 13.1 KB) - not displayed
image.png
(image/png, 21.7 KB) - not displayed
image.png
(image/png, 108.4 KB) - not displayed
image.png
(image/png, 14.1 KB) - not displayed
image.png
(image/png, 8.7 KB) - not displayed
image.png
(image/png, 9.5 KB) - not displayed
image.png
(image/png, 11.8 KB) - not displayed
image.png
(image/png, 13.3 KB) - not displayed