awesome-scrub v1.0.0 has been released

sanemat/awesome_scrub

Easy to use String#scrub. Prevent Invalid byte sequence in UTF-8.
Wrap params[:name].respond_to?(:scrub) ? params[:name].scrub : params[:name] to params[:name].awesome_scrub.

Use case

Before:

@name = params[:name].presence || 'nobody'

After:

@name = awesome_scrub(params[:name]).presence || 'noby'

Point

Almost time this is no problem, but params[:name] include invalid byte sequence in UTF-8, like invalid_byte_sequence.presence (invalid_byte_sequence.present?) raises ArgumentError: invalid byte sequence in UTF-8.

This problem’s solution is String#scrub(Feature of Ruby2.1, and string-scrub gem which backport for Ruby2.0), this replaces invalid characters. Feature #6752: Replacing ill-formed subsequencce – ruby-trunk – Ruby Issue Tracking System

This stil has problem for writing code, params[:name] is String or nil, and some case Array, Fixnum, and other object does not have #scrub method.

Work around

name = params[:name].respond_to?(:scrub) ? params[:name].scrub : params[:name]
@name = name.presence || 'nobody'

Solution

@name = awesome_scrub(params[:name]).presence || 'noby'

Usage

Methods

# call scrub
awesome_scrub(args) #=> args.scrub

# call scrub!
awesome_scrub!(args) #=> args.scrub!

Examples

class Foo
  include AwesomeScrub

  def bar
    awesome_scrub(any)
  end
end

OR

class Foo
  extend AwesomeScrub

  def bar
    awesome_scrub(any)
  end
end

OR

AwesomeScrub::awesome_scrub(any)
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中