.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Perl::Critic::Policy::Documentation::PodSpelling 3pm" .TH Perl::Critic::Policy::Documentation::PodSpelling 3pm "2020-05-17" "perl v5.30.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Perl::Critic::Policy::Documentation::PodSpelling \- Check your spelling. .SH "AFFILIATION" .IX Header "AFFILIATION" This Policy is part of the core Perl::Critic distribution. .SH "DESCRIPTION" .IX Header "DESCRIPTION" Did you write the documentation? Check. .PP Did you document all of the public methods? Check. .PP Is your documentation readable? Hmm... .PP Ideally, we'd like Perl::Critic to tell you when your documentation is inadequate. That's hard to code, though. So, inspired by Test::Spelling, this module checks the spelling of your \s-1POD.\s0 It does this by pulling the prose out of the code and passing it to an external spell checker. It skips over words you flagged to ignore. If the spell checker returns any misspelled words, this policy emits a violation. .PP If anything else goes wrong \*(-- we can't locate the spell checking program or (gasp!) your module has no \s-1POD\s0 \*(-- then this policy passes. .PP To add exceptions on a module-by-module basis, add \*(L"stopwords\*(R" as described in Pod::Spell. For example: .PP .Vb 1 \& =for stopwords gibbles \& \& =head1 Gibble::Manip \-\- manipulate your gibbles \& \& =cut .Ve .SH "CONFIGURATION" .IX Header "CONFIGURATION" This policy can be configured to tell which spell checker to use or to set a global list of spelling exceptions. To do this, put entries in a \fI.perlcriticrc\fR file like this: .PP .Vb 4 \& [Documentation::PodSpelling] \& spell_command = aspell list \& stop_words = gibbles foobar \& stop_words_file = some/path/with/stop/words.txt .Ve .PP The default spell command is \f(CW\*(C`aspell list\*(C'\fR and it is interpreted as a shell command. We parse the individual arguments via Text::ParseWords so feel free to use quotes around your arguments. If the executable path is an absolute file name, it is used as-is. If it is a relative file name, we employ File::Which to convert it to an absolute path via the \&\f(CW\*(C`PATH\*(C'\fR environment variable. As described in Pod::Spell and Test::Spelling, the spell checker must accept text on \s-1STDIN\s0 and print misspelled words one per line on \s-1STDOUT.\s0 .PP You can specify global stop words via the \f(CW\*(C`stop_words\*(C'\fR and \&\f(CW\*(C`stop_words_file\*(C'\fR options. The former is simply split up on whitespace. The latter is looked at line by line, with anything after an octothorp (\*(L"#\*(R") removed and then leading and trailing whitespace removed. Silly example valid file contents: .PP .Vb 1 \& # It\*(Aqs a comment! \& \& foo \& arglbargl # Some other comment. \& bar .Ve .PP The values from \f(CW\*(C`stop_words\*(C'\fR and \f(CW\*(C`stop_words_file\*(C'\fR are merged together into a single list of exemptions. .SH "NOTES" .IX Header "NOTES" A spell checking program is not included with Perl::Critic. .PP The results of failures for this policy can be confusing when \fIaspell\fR complains about words containing punctuation such as hyphens and apostrophes. In this situation \fIaspell\fR will often only emit part of the word that it thinks is misspelled. For example, if you ask \fIaspell\fR to check \&\*(L"foobie-bletch\*(R", the output only complains about \*(L"foobie\*(R". Unfortunately, you'll have to look through your \s-1POD\s0 to figure out what the real word that \&\fIaspell\fR is complaining about is. One thing to try is looking at the output of \f(CW\*(C`perl \-MPod::Spell \-e \*(Aqprint Pod::Spell\->new()\->parse_from_file("lib/Your/Module.pm")\*(Aq\*(C'\fR to see what is actually being checked for spelling. .SH "PREREQUISITES" .IX Header "PREREQUISITES" This policy will disable itself if File::Which is not available. .SH "CREDITS" .IX Header "CREDITS" Initial development of this policy was supported by a grant from the Perl Foundation. .SH "AUTHOR" .IX Header "AUTHOR" Chris Dolan .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright (c) 2007\-2011 Chris Dolan. Many rights reserved. .PP This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of this license can be found in the \s-1LICENSE\s0 file included with this module