smalruby/smalruby-editor

View on GitHub
app/models/concerns/ruby_to_block/block/hardware_rgb_led_set_color.rb

Summary

Maintainability
A
0 mins
Test Coverage
# -*- coding: utf-8 -*-
module RubyToBlock
  module Block
    class HardwareRgbLedSetColor < CharacterMethodCall
      # rubocop:disable LineLength
      blocknize '^\s*' + CHAR_RE + 'rgb_led_(anode|cathode)\("(D[39])"\).color\s*=\s*\[(\d+),\s*(\d+),\s*(\d+)\]\s*$',
                statement: true
      # rubocop:enable LineLength

      def self.process_match_data(md, context)
        md2 = regexp.match(md[type])

        color = [md2[4], md2[5], md2[6]].map(&:to_i)
        return false if color.any? { |c| c < 0 || c > 255 }
        color_code = '#' + color.map { |c| sprintf('%02x', c) }.join
        block = new(fields: { AC: md2[2], PIN: md2[3], COLOUR: color_code })

        add_character_method_call_block(context, md2[1], block)
        true
      end
    end
  end
end