Class: JSON::Parser
- Inherits:
-
StringScanner
- Object
- StringScanner
- JSON::Parser
- Defined in:
- lib/parser.rb
Overview
This class implements the JSON parser that is used to parse a JSON string into a Ruby data structure.
Constant Summary collapse
- STRING =
/"((?:[^"\\]|\\.)*)"/- INTEGER =
/-?\d+/- FLOAT =
/-?\d+\.(\d*)(?i:e[+-]?\d+)?/- OBJECT_OPEN =
/\{/- OBJECT_CLOSE =
/\}/- ARRAY_OPEN =
/\[/- ARRAY_CLOSE =
/\]/- PAIR_DELIMITER =
/:/- COLLECTION_DELIMITER =
/,/- TRUE =
/true/- FALSE =
/false/- NULL =
/null/- IGNORE =
%r( (?: //[^\n\r]*[\n\r]| # line comments /\* # c-style comments (?: [^*/]| # normal chars /[^*]| # slashes that do not start a nested comment \*[^/]| # asterisks that do not end this comment /(?=\*/) # single slash before this comment's end )* \*/ # the end of this comment |\s+ # whitespaces )+ )mx
- UNPARSED =
Object.new
Instance Method Summary collapse
-
#parse ⇒ Object
Parses the current JSON string and returns the complete data structure as a result.
Instance Method Details
#parse ⇒ Object
Parses the current JSON string and returns the complete data structure as a result.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/parser.rb', line 36 def parse reset until eos? case when scan(ARRAY_OPEN) return parse_array when scan(OBJECT_OPEN) return parse_object when skip(IGNORE) ; when !((value = parse_value).equal? UNPARSED) return value else raise ParserError, "source '#{peek(20)}' not in JSON!" end end end |