@Override
    public Map<String, ?> resourceMap( DrawingContext context )
        throws MojoExecutionException
    {
        for ( String range : StringUtils.split( ranges, ',' ) )
        {
            try
            {
                String[] members = StringUtils.split( range, '-' );

                if ( ArrayUtils.isEmpty( members ) || members.length > 2 )
                {
                    throw new MojoExecutionException( "Invalid range [" + range + "]." );
                }

                if ( StringUtils.isNumeric( members[0] ) )
                {
                    if ( members.length == 1 )
                    {
                        final int from = Integer.parseInt( members[0] );

                        return numericRangeResources( from, from, context );
                    }
                    else
                    {
                        return numericRangeResources(
                                Integer.parseInt( members[0] ),
                                Integer.parseInt( members[1] ),
                                context );
                    }
                }
                else
                {
                    if ( members.length == 1 )
                    {
                        final char from = members[0].charAt( 0 );

                        return charRangeResources( from, from, context );
                    }
                    else
                    {
                        return charRangeResources(
                                members[0].charAt( 0 ),
                                members[1].charAt( 0 ),
                                context );
                    }
                }
            }
            catch ( NumberFormatException e )
            {
                throw new MojoExecutionException( "Unable to parse range " + range + "." );
            }
        }

        return null;
    }