Class: Coder::Cleaner::Java
- Inherits:
-
Object
- Object
- Coder::Cleaner::Java
- Defined in:
- lib/coder/cleaner/java.rb
Class Method Summary collapse
Instance Method Summary collapse
- #clean(str) ⇒ Object
-
#initialize(encoding) ⇒ Java
constructor
A new instance of Java.
Constructor Details
#initialize(encoding) ⇒ Java
Returns a new instance of Java.
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/coder/cleaner/java.rb', line 18 def initialize(encoding) @encoding = encoding.to_s.upcase @nullbyte = "\0" @charset = ::Java::JavaNioCharset::Charset.for_name(encoding) @decoder = @charset.new_decoder @decoder.on_malformed_input(::Java::JavaNioCharset::CodingErrorAction::IGNORE) @decoder.on_unmappable_character(::Java::JavaNioCharset::CodingErrorAction::IGNORE) @nullbyte.encode! encoding if @nullbyte.respond_to? :encode! rescue ::Java::JavaNioCharset::UnsupportedCharsetException, ::Java::JavaNioCharset::IllegalCharsetNameException raise Coder::InvalidEncoding, "unknown encoding name - #{encoding}" rescue ::Java::JavaLang::RuntimeException => e raise Coder::Error, e., e.backtrace end |
Class Method Details
.available? ⇒ Boolean
7 8 9 10 11 12 |
# File 'lib/coder/cleaner/java.rb', line 7 def self.available? require 'java' !!::Java::JavaNioCharset::Charset rescue LoadError, NameError false end |
.supports?(encoding) ⇒ Boolean
14 15 16 |
# File 'lib/coder/cleaner/java.rb', line 14 def self.supports?(encoding) encoding.to_s =~ /^utf-8$/i end |
Instance Method Details
#clean(str) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/coder/cleaner/java.rb', line 32 def clean(str) buffer = ::Java::JavaNio::ByteBuffer.wrap(str.to_java_bytes) string = @decoder.decode(buffer).to_s Coder.force_encoding!(string, @encoding).gsub(@nullbyte, '') rescue ::Java::JavaLang::RuntimeException => e raise Coder::Error, e., e.backtrace end |