Module: JSON::TruffleRuby::Generator::GeneratorMethods::String

Defined in:
lib/json/truffle_ruby/generator.rb

Defined Under Namespace

Modules: Extend

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(modul) ⇒ Object

Extends modul with the String::Extend module.



582
583
584
# File 'lib/json/truffle_ruby/generator.rb', line 582

def self.included(modul)
  modul.extend Extend
end

Instance Method Details

#to_json(state = nil, *args) ⇒ Object

This string should be encoded with UTF-8 A call to this method returns a JSON string encoded with UTF16 big endian characters as u????.



551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
# File 'lib/json/truffle_ruby/generator.rb', line 551

def to_json(state = nil, *args)
  state = State.from_state(state)
  if encoding == ::Encoding::UTF_8
    unless valid_encoding?
      raise GeneratorError, "source sequence is illegal/malformed utf-8"
    end
    string = self
  else
    string = encode(::Encoding::UTF_8)
  end
  if state.ascii_only?
    %("#{JSON::TruffleRuby::Generator.utf8_to_json_ascii(string, state.script_safe)}")
  else
    %("#{JSON::TruffleRuby::Generator.utf8_to_json(string, state.script_safe)}")
  end
rescue Encoding::UndefinedConversionError => error
  raise ::JSON::GeneratorError, error.message
end

#to_json_raw(*args) ⇒ Object

This method creates a JSON text from the result of a call to to_json_raw_object of this String.



599
600
601
# File 'lib/json/truffle_ruby/generator.rb', line 599

def to_json_raw(*args)
  to_json_raw_object.to_json(*args)
end

#to_json_raw_objectObject

This method creates a raw object hash, that can be nested into other data structures and will be unparsed as a raw string. This method should be used, if you want to convert raw strings to JSON instead of UTF-8 strings, e. g. binary data.



590
591
592
593
594
595
# File 'lib/json/truffle_ruby/generator.rb', line 590

def to_json_raw_object
  {
    JSON.create_id  => self.class.name,
    'raw'           => self.unpack('C*'),
  }
end