class RuboCop::Cop::SketchupBugs::RenderMode

A regression was introduced in SketchUp 2017 that cause invalid render modes to crash SketchUp. The crash might not happen exactly when the new mode is set, but later when the viewport re-draws.

Valid render modes are: (Internal enum names in parentheses)

@example This obsolete render mode will crash SketchUp 2017 and newer

Sketchup.active_model.rendering_options["RenderMode"] = 4

@example This invalid render mode will crash SketchUp 2017 and newer

Sketchup.active_model.rendering_options["RenderMode"] = 99

Constants

MSG_INVALID
MSG_OBSOLETE
RENDER_MODE_OBSOLETE
RENDER_MODE_VALID

Public Instance Methods

on_send(node) click to toggle source
# File lib/rubocop/sketchup/cop/bugs/render_mode.rb, line 51
def on_send(node)
  return unless valid_for_target_sketchup_version?

  value = set_render_mode(node)
  return if value.nil?
  return if RENDER_MODE_VALID.include?(value)

  value_node = node.arguments.last
  message = obsolete?(value) ? MSG_OBSOLETE : MSG_INVALID
  add_offense(value_node, message: message)
end

Private Instance Methods

obsolete?(value) click to toggle source
# File lib/rubocop/sketchup/cop/bugs/render_mode.rb, line 65
def obsolete?(value)
  RENDER_MODE_OBSOLETE.include?(value)
end