Class: Coder::Cleaner::Builtin
- Inherits:
-
Object
- Object
- Coder::Cleaner::Builtin
- Defined in:
- lib/coder/cleaner/builtin.rb
Constant Summary collapse
- OPTIONS =
{ :undef => :replace, :invalid => :replace, :replace => "" }
Class Method Summary collapse
Instance Method Summary collapse
- #clean(str) ⇒ Object
-
#initialize(encoding) ⇒ Builtin
constructor
A new instance of Builtin.
Constructor Details
#initialize(encoding) ⇒ Builtin
Returns a new instance of Builtin.
29 30 31 32 33 34 35 |
# File 'lib/coder/cleaner/builtin.rb', line 29 def initialize(encoding) @encoding = encoding.to_s.upcase @dummy = @encoding == 'UTF-8' ? 'UTF-16BE' : 'UTF-8' @dummy ||= @encoding check_encoding end |
Class Method Details
.available? ⇒ Boolean
8 9 10 |
# File 'lib/coder/cleaner/builtin.rb', line 8 def self.available? has_encoding? and mri? end |
.has_encoding? ⇒ Boolean
22 23 24 25 26 27 |
# File 'lib/coder/cleaner/builtin.rb', line 22 def self.has_encoding? defined? Encoding.find and defined? EncodingError and String.method_defined? :encode and String.method_defined? :force_encoding end |
.mri? ⇒ Boolean
12 13 14 |
# File 'lib/coder/cleaner/builtin.rb', line 12 def self.mri? !defined?(RUBY_ENGINE) or RUBY_ENGINE == 'ruby' end |
.supports?(encoding) ⇒ Boolean
16 17 18 19 20 |
# File 'lib/coder/cleaner/builtin.rb', line 16 def self.supports?(encoding) Encoding.find(encoding) rescue ArgumentError false end |
Instance Method Details
#clean(str) ⇒ Object
37 38 39 40 41 42 |
# File 'lib/coder/cleaner/builtin.rb', line 37 def clean(str) str = str.dup.force_encoding(@encoding) str.encode(@dummy, OPTIONS).encode(@encoding).gsub("\0".encode(@encoding), "") rescue EncodingError => e raise Coder::Error, e. end |