Class: ValidateWebsite::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/validate_website/option_parser.rb

Overview

Internal class for parse command line args

Constant Summary collapse

VALID_TYPES =
[:crawl, :static].freeze
DEFAULT_OPTIONS =
{
  site: 'http://localhost/',
  pattern: '**/*.html',
  exclude: nil,
  user_agent: nil,
  markup: true,
  css_syntax: false,
  # crawler: log not found url (404 status code)
  # static: log not found url (not on filesystem, `pwd` considered
  # as root " / ")
  not_found: false,
  file: nil,
  # regex to ignore certain validation errors
  ignore: nil,
  color: true,
  # internal verbose for ValidateWebsite
  verbose: false
}.freeze

Class Method Summary collapse

Class Method Details

.boolean_options(o) ⇒ Object



67
68
69
70
71
72
73
74
# File 'lib/validate_website/option_parser.rb', line 67

def self.boolean_options(o)
  o.bool('-n', '--not-found',
         "Log not found url (default: #{DEFAULT_OPTIONS[:not_found]})",
         default: DEFAULT_OPTIONS[:not_found])
  o.bool('--color',
         "Show colored output (default: #{DEFAULT_OPTIONS[:color]})",
         default: DEFAULT_OPTIONS[:color])
end

.command_line_parse_crawl(_args) ⇒ Hash

Parse command line for validate-website bin

Returns:

  • (Hash)


96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/validate_website/option_parser.rb', line 96

def self.command_line_parse_crawl(_args)
  default_args do |o|
    o.string('-s', '--site',
             "Website to crawl (default: #{DEFAULT_OPTIONS[:site]})",
             default: DEFAULT_OPTIONS[:site])
    o.string('-u', '--user-agent',
             'Change user agent',
             default: DEFAULT_OPTIONS[:user_agent])
    o.regexp('-e', '--exclude', 'Url to exclude (ex: "redirect|news")')
    o.string('-c', '--cookies', 'Set defaults cookies')
  end
end

.command_line_parse_static(_args) ⇒ Hash

Parse command line for validate-website-static bin

Returns:

  • (Hash)


112
113
114
115
116
117
118
119
120
121
122
# File 'lib/validate_website/option_parser.rb', line 112

def self.command_line_parse_static(_args)
  default_args do |o|
    o.string('-s', '--site',
             "Website to crawl (default: #{DEFAULT_OPTIONS[:site]})",
             default: DEFAULT_OPTIONS[:site])
    o.string('-p', '--pattern',
             "Filename pattern (default: #{DEFAULT_OPTIONS[:pattern]})",
             default: DEFAULT_OPTIONS[:pattern])
    o.regexp('-e', '--exclude', 'Url to exclude (ex: "redirect|news")')
  end
end

.default_argsObject



40
41
42
43
44
45
46
47
48
49
# File 'lib/validate_website/option_parser.rb', line 40

def self.default_args
  Slop.parse do |o|
    yield o if block_given?
    markup_syntax(o)
    boolean_options(o)
    ignore_html5_options(o)
    verbose_option(o)
    version_help(o)
  end
end

.ignore_html5_options(o) ⇒ Object



51
52
53
54
55
56
# File 'lib/validate_website/option_parser.rb', line 51

def self.ignore_html5_options(o)
  o.regexp('-i', '--ignore',
           'Validation errors to ignore (ex: "valign|autocorrect")')
  o.string('-5', '--html5-validator-service-url',
           'Change default html5 validator service URL')
end

.markup_syntax(o) ⇒ Object



58
59
60
61
62
63
64
65
# File 'lib/validate_website/option_parser.rb', line 58

def self.markup_syntax(o)
  o.bool('-m', '--markup',
         "Markup validation (default: #{DEFAULT_OPTIONS[:markup]})",
         default: DEFAULT_OPTIONS[:markup])
  o.bool('--css-syntax',
         "Css validation (default: #{DEFAULT_OPTIONS[:css_syntax]})",
         default: DEFAULT_OPTIONS[:css_syntax])
end

.parse(options, type) ⇒ Object

Generic parse method for crawl or static options

Raises:

  • (ArgumentError)


29
30
31
32
33
34
35
36
37
38
# File 'lib/validate_website/option_parser.rb', line 29

def self.parse(options, type)
  raise ArgumentError unless VALID_TYPES.include?(type)
  # We are in command line (ARGV)
  if options.is_a?(Array)
    send("command_line_parse_#{type}", options)
  else
    # for testing or Ruby usage with a Hash
    DEFAULT_OPTIONS.merge(options)
  end
end

.verbose_option(o) ⇒ Object



76
77
78
79
80
# File 'lib/validate_website/option_parser.rb', line 76

def self.verbose_option(o)
  o.bool('-v', '--verbose',
         "Show validator errors (default: #{DEFAULT_OPTIONS[:verbose]})",
         default: DEFAULT_OPTIONS[:verbose])
end

.version_help(o) ⇒ Object



82
83
84
85
86
87
88
89
90
91
# File 'lib/validate_website/option_parser.rb', line 82

def self.version_help(o)
  o.on('--version', 'Display version.') do
    puts ValidateWebsite::VERSION
    exit
  end
  o.on('-h', '--help', 'Display this help message.') do
    puts o
    exit
  end
end