Module: TJSON
- Defined in:
- lib/tjson.rb,
lib/tjson/object.rb,
lib/tjson/version.rb,
lib/tjson/datatype.rb,
lib/tjson/datatype/array.rb,
lib/tjson/datatype/float.rb,
lib/tjson/datatype/binary.rb,
lib/tjson/datatype/object.rb,
lib/tjson/datatype/string.rb,
lib/tjson/datatype/integer.rb,
lib/tjson/datatype/timestamp.rb
Overview
Tagged JSON with Rich Types
Defined Under Namespace
Constant Summary collapse
- Error =
Base class of all TJSON errors
Class.new(StandardError)
- EncodingError =
Invalid string encoding
Class.new(Error)
- ParseError =
Failure to parse TJSON document
Class.new(Error)
- TypeError =
Invalid types
Class.new(ParseError)
- DuplicateNameError =
Duplicate object name
Class.new(ParseError)
- MAX_NESTING =
Maximum allowed nesting (TODO: use TJSON-specified maximum)
100
- VERSION =
"0.3.0"
Class Method Summary collapse
-
.generate(obj) ⇒ String
Generate TJSON from a Ruby Hash (TJSON only allows objects as toplevel values).
-
.parse(string) ⇒ Object
Parse the given UTF-8 string as TJSON.
-
.pretty_generate(obj) ⇒ String
Generate TJSON from a Ruby Hash (TJSON only allows objects as toplevel values).
Class Method Details
.generate(obj) ⇒ String
Generate TJSON from a Ruby Hash (TJSON only allows objects as toplevel values)
66 67 68 69 |
# File 'lib/tjson.rb', line 66 def self.generate(obj) raise TypeError, "toplevel type must be a Hash" unless obj.is_a?(Hash) JSON.generate(TJSON::DataType.generate(obj)) end |
.parse(string) ⇒ Object
Parse the given UTF-8 string as TJSON
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/tjson.rb', line 38 def self.parse(string) begin utf8_string = string.encode(Encoding::UTF_8) rescue ::EncodingError => ex raise TJSON::EncodingError, ex., ex.backtrace end begin object = ::JSON.parse( utf8_string, max_nesting: MAX_NESTING, allow_nan: false, symbolize_names: false, create_additions: false, object_class: TJSON::Object ) rescue ::JSON::ParserError => ex raise TJSON::ParseError, ex., ex.backtrace end raise TJSON::TypeError, "invalid toplevel type: #{object.class}" unless object.is_a?(TJSON::Object) object end |
.pretty_generate(obj) ⇒ String
Generate TJSON from a Ruby Hash (TJSON only allows objects as toplevel values)
75 76 77 78 |
# File 'lib/tjson.rb', line 75 def self.pretty_generate(obj) raise TypeError, "toplevel type must be a Hash" unless obj.is_a?(Hash) JSON.pretty_generate(TJSON::DataType.generate(obj)) end |