# NAME
Test::HTML::Spelling - spelling of HTML documents
# VERSION
version v0.4.0
# SYNOPSIS
```perl
use Test::More;
use Test::HTML::Spelling;
use Test::WWW::Mechanize;
my $sc = Test::HTML::Spelling->new(
ignore_classes => [qw( no-spellcheck )],
check_attributes => [qw( title alt )],
);
$sc->speller->set_option('lang','en_GB');
$sc->speller->set_option('sug-mode','fast');
my $mech = Test::WWW::Mechanize->new();
$mech->get_ok('http://www.example.com/');
$sc->spelling_ok($mech->content, "spelling");
done_testing;
```
# DESCRIPTION
This module parses an HTML document, and checks the spelling of the
text and some attributes (such as the `title` and `alt` attributes).
It will not spellcheck the attributes or contents of elements
(including the contents of child elements) with the class
`no-spellcheck`. For example, elements that contain user input, or
placenames that are unlikely to be in a dictionary (such as timezones)
should be in this class.
It will fail when an HTML document is not well-formed.
# METHODS
## ignore\_classes
This is an accessor method for the names of element classes that will
not be spellchecked. It is also a constructor parameter.
It defaults to `no-spellcheck`.
## check\_attributes
This is an accessor method for the names of element attributes that
will be spellchecked. It is also a constructor parameter.
It defaults to `title` and `alt`.
## ignore\_words
This is an accessor method for setting a hash of words that will be
ignored by the spellchecker. Use it to specify a custom dictionary,
e.g.
```perl
use File::Slurp;
my %dict = map { chomp($_); $_ => 1 } read_file('custom');
$sc->ignore_words( \%dict );
```
## speller
```perl
my $sc = $sc->speller($lang);
```
This is an accessor that gives you access to a spellchecker for a
particular language (where `$lang` is a two-letter ISO 639-1 language
code). If the language is omitted, it returns the default
spellchecker:
```
$sc->speller->set_option('sug-mode','fast');
```
Note that options set for the default spellchecker will not be set for
other spellcheckers. To ensure all spellcheckers have the same
options as the default, use something like the following:
```perl
foreach my $lang (qw( en es fs )) {
$sc->speller($lang)->set_option('sug-mode',
$sc->speller->get_option('sug-mode')
)
}
```
## langs
```perl
my @langs = $sc->langs;
```
Returns a list of languages (as two-letter ISO 639-1 codes) that there
are spellcheckers for.
This can be checked _after_ testing a document to ensure that the
document does not contain markup in unexpected languages.
## check\_spelling
```
if ($sc->check_spelling( $content )) {
..
}
```
Check the spelling of a document, and return true if there are no
spelling errors.
## spelling\_ok
```
$sc->spelling_ok( $content, $message );
```
Parses the HTML file and checks the spelling of the document text and
selected attributes.
# KNOWN ISSUES
## Using Test::HTML::Spelling in a module
Suppose you subclass a module like [Test::WWW::Mechanize](https://metacpan.org/pod/Test::WWW::Mechanize) and add a
`spelling_ok` method that calls ["spelling\_ok"](#spelling_ok). This will work
fine, except that any errors will be reported as coming from your
module, rather than the test scripts that call your method.
To work around this, call the ["check\_spelling"](#check_spelling) method from within
your module.
# SEE ALSO
The following modules have similar functionality:
- [Apache::AxKit::Language::SpellCheck](https://metacpan.org/pod/Apache::AxKit::Language::SpellCheck)
- [HTML::Spelling::Site](https://metacpan.org/pod/HTML::Spelling::Site)
# SOURCE
The development version is on github at [https://github.com/robrwo/Test-HTML-Spelling](https://github.com/robrwo/Test-HTML-Spelling)
and may be cloned from [git://github.com/robrwo/Test-HTML-Spelling.git](git://github.com/robrwo/Test-HTML-Spelling.git)
# BUGS
Please report any bugs or feature requests on the bugtracker website
[https://github.com/robrwo/Test-HTML-Spelling/issues](https://github.com/robrwo/Test-HTML-Spelling/issues)
When submitting a bug or request, please include a test-file or a
patch to an existing test-file that illustrates the bug or desired
feature.
# AUTHOR
Robert Rothenberg
# CONTRIBUTORS
- Interactive Information, Ltd
- Murray Walker
- Rusty Conover
- Shlomi Fish
# COPYRIGHT AND LICENSE
This software is Copyright (c) 2012-2018 by Robert Rothenberg.
This is free software, licensed under:
```
The Artistic License 2.0 (GPL Compatible)
```