class Jekyll::GlossaryTooltip::OptionsParser

Stripped down & modified version of github.com/ayastreb/jekyll-maps/blob/master/lib/jekyll-maps/options_parser.rb

Constants

ARGS_ALLOWED
ARGS_PATTERN

Public Class Methods

parse(raw_options) click to toggle source
# File lib/jekyll-glossary_tooltip/options_parser.rb, line 16
def parse(raw_options)
  options = {
    term_query: nil,
    display: nil
  }
  opt_segments = raw_options.strip.split(",")
  raise Errors::OptionsNoTermNameInTag unless opt_segments.length.positive?

  options[:term_query] = opt_segments[0]
  opt_segments.shift
  parse_segments(options, opt_segments)
  options
end
parse_segments(options, opt_segments) click to toggle source
# File lib/jekyll-glossary_tooltip/options_parser.rb, line 30
def parse_segments(options, opt_segments)
  opt_segments.each do |opt_segment|
    raise Errors::OptionsBadTagArgumentFormat, options[:term_name] unless opt_segment =~ ARGS_PATTERN

    arg_name = Regexp.last_match(1)
    arg_value = Regexp.last_match(2)
    raise Errors::OptionsUnknownTagArgument, arg_name unless ARGS_ALLOWED.include?(arg_name)

    options[arg_name.to_sym] = arg_value
  end
end