Sha256: b514c7e9f065f509c4ae05d8bed4c69c19132867a72585305be78f164aec9f79

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

module PositiveWebSupport::StringExt

  # 16進数の文字列か否かを判定するメソッド
  # @return [Boolean]
  def hex_string?
    /\A[\da-fA-F]+\Z/ === self
  end

# @!group WebColor を表す文字列に対するメソッド

  # WebColor の文字列であるか否かを判定するメソッド
  # @return [Boolean]
  def is_web_color?( with_sharp: nil )
    raise "Error" unless with_sharp.nil? or with_sharp.boolean?

    # nil
    if with_sharp.nil?
      is_web_color_without_sharp? or is_web_color_with_sharp?
    # true
    elsif with_sharp
      is_web_color_with_sharp?
    # false
    else
      is_web_color_without_sharp?
    end
  end

  # WebColor を RgbColor に変換するメソッド
  # @return [::Array <Integer (natural number)>]
  def to_rgb_color
    unless is_web_color?
      raise "Error"
    end
    gsub( /\#/ , "" ).each_char.each_slice(2).map{ | ary | ary.join.hex }
  end

  def to_rgb_color_in_parentheses
    str = to_rgb_color.join( " , " )
    "(#{str})"
  end

  # @!endgroup

  private

  # WebColorの文字列("#"なし)であるか否かを判定するメソッド
  # @return [Boolean]
  def is_web_color_without_sharp?
    hex_string? and length == 6
  end

  # WebColor の文字列("#"あり)であるか否かを判定するメソッド
  # @return [Boolean]
  def is_web_color_with_sharp?
    if /\A\#(.+)\Z/ =~ self
      $1.is_web_color?( with_sharp: false )
    else
      false
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
positive_web_support-0.4.2 lib/positive_web_support/string_ext.rb