class Muwu::ProjectOptionValidatorValue

Attributes

key_validated[RW]
project[RW]
validation_method_name[RW]
value_provided[RW]

Public Class Methods

new(key_validated, value_provided, project) click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 20
def initialize(key_validated, value_provided, project)
  @key_validated = key_validated.to_s.gsub(/\W/,'_')
  @project = project
  @validation_method_name = "validate_option_#{@key_validated}"
  @value_provided = value_provided
end

Public Instance Methods

validated_value() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 32
def validated_value
  if private_methods.include?(@validation_method_name.to_sym)
    return method(@validation_method_name).call
  else
    @project.exceptions_add ProjectException::OptionNotValidatable.new(@key_validated)
    return nil
  end
end
value_as_array(value) click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 42
def value_as_array(value)
  result = []
  case value
  when String
    result = value.split(/,\s*/).map{ |v| value_as_string(v) }.sort
  when Array
    result = value.map{ |v| value_as_string(v) }.sort
  when FalseClass, TrueClass
    result << value
  end
  result.reject!{ |r| r == '' }
  result
end
value_as_integer(value) click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 57
def value_as_integer(value)
  value.to_i
end
value_as_string(value) click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 62
def value_as_string(value)
  value.to_s.strip.downcase
end
value_as_string_preserving_case(value) click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 67
def value_as_string_preserving_case(value)
  value.to_s.strip
end
value_provided_as_array() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 72
def value_provided_as_array
  value_as_array(@value_provided)
end
value_provided_as_integer() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 77
def value_provided_as_integer
  value_as_integer(@value_provided)
end
value_provided_as_string() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 82
def value_provided_as_string
  value_as_string(@value_provided)
end
value_provided_as_string_preserving_case() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 87
def value_provided_as_string_preserving_case
  value_as_string_preserving_case(@value_provided)
end

Private Instance Methods

validate_option_boolean() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 96
def validate_option_boolean
  case @value_provided
  when false, true
    return @value_provided
  when nil, '', 'nil'
    return nil
  else
    @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
    return nil
  end
end
validate_option_generate_navigators_automatically() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 114
def validate_option_generate_navigators_automatically
  return validate_option_boolean
end
validate_option_generate_subcontents_automatically() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 119
def validate_option_generate_subcontents_automatically
  return validate_option_boolean
end
validate_option_html_head_includes_metadata_tags() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 124
def validate_option_html_head_includes_metadata_tags
  return validate_option_boolean
end
validate_option_html_lang() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 129
def validate_option_html_lang
  case @value_provided
  when nil, 'nil'
    return nil
  else
    value = ISO_639.find(value_provided_as_string)
    if value
      return value.alpha2
    else
      @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
      return nil
    end
  end
end
validate_option_html_uses_javascript_navigation() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 145
def validate_option_html_uses_javascript_navigation
  return validate_option_boolean
end
validate_option_markdown_allows_raw_html() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 150
def validate_option_markdown_allows_raw_html
  return validate_option_boolean
end
validate_option_markdown_renderer() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 155
def validate_option_markdown_renderer
  value = value_provided_as_string
  case value
  when 'commonmarker'
    return value
  when 'motion-markdown-it', 'motion_markdown_it'
    return 'motion-markdown-it'
  else
    @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
    return nil
  end
end
validate_option_outline_text_pathnames() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 169
def validate_option_outline_text_pathnames
  value = value_provided_as_string
  case value
  when 'explicit', 'flexible', 'implicit'
    return value
  else
    @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
    return nil
  end
end
validate_option_output_destination() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 181
def validate_option_output_destination
  value = value_provided_as_string
  case value
  when 'file', 'stdout'
    return value
  else
    @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
    return nil
  end
end
validate_option_output_file_basename() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 193
def validate_option_output_file_basename
  case @value_provided
  when String
    return SanitizerHelper.sanitize_destination_file_basename(File.basename(@value_provided))
  when nil
    return nil
  else
    @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
    return nil
  end
end
validate_option_output_file_css_basename() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 206
def validate_option_output_file_css_basename
  return validate_option_output_file_basename
end
validate_option_output_file_html_basename() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 211
def validate_option_output_file_html_basename
  return validate_option_output_file_basename
end
validate_option_output_file_js_basename() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 216
def validate_option_output_file_js_basename
  return validate_option_output_file_basename
end
validate_option_output_formats() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 221
def validate_option_output_formats
  result = []
  value_provided_as_array.each do |value|
    case value
    when 'css', 'html', 'js'
      result << value
    else
      @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
    end
  end
  return result
end
validate_option_remote_publish() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 235
def validate_option_remote_publish
  return value_provided_as_string_preserving_case
end
validate_option_remote_sync() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 240
def validate_option_remote_sync
  return value_provided_as_string_preserving_case
end
validate_option_render_punctuation_smart() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 245
def validate_option_render_punctuation_smart
  return validate_option_boolean
end
validate_option_render_section_numbers() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 268
def validate_option_render_section_numbers
  return validate_option_boolean
end
validate_option_render_sections_distinctly_depth_max() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 273
def validate_option_render_sections_distinctly_depth_max
  case @value_provided
  when false, nil, 0, '', 'nil'
    return nil
  when Integer
    return @value_provided
  else
    @project.exceptions_add ProjectException::OptionValueNotUnderstood.new(@key_validated, @value_provided)
    return nil
  end
end
validate_option_render_title_section_metadata() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 286
def validate_option_render_title_section_metadata
  case @value_provided
  when nil, '', 'nil'
    return nil
  when Array
    return @value_provided
  when String
    return @value_provided.split(/,\s*/)
  else
    return [@value_provided.to_s].flatten
  end
end
validate_option_rsync_options() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 305
def validate_option_rsync_options
  return value_provided_as_array
end
validate_option_warning_if_parent_heading_lacks_source() click to toggle source
# File lib/muwu/project_options_builder/project_option_validator_value.rb, line 310
def validate_option_warning_if_parent_heading_lacks_source
  return validate_option_boolean
end