summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2020-07-04 20:12:55 +0900
committerGitHub <noreply@github.com>2020-07-04 20:12:55 +0900
commitf3d42d6c4cdd14122bac61aac9510c40bfd7d2cd (patch)
tree0ce6b47ac79f4557cfbe907ad5c09961ed9a45ef
parent617428650d48db8a4b5439968e441f859605c6f3 (diff)
parent33e64ef255948923c26ef4f6eb9c2909f30e7b46 (diff)
downloadjson-f3d42d6c4cdd14122bac61aac9510c40bfd7d2cd.tar.gz
Merge pull request #433 from BurdetteLamar/master
Enhance RDoc for JSON.parse
-rw-r--r--lib/json/common.rb49
1 files changed, 40 insertions, 9 deletions
diff --git a/lib/json/common.rb b/lib/json/common.rb
index 132e9c8..5ef3ac2 100644
--- a/lib/json/common.rb
+++ b/lib/json/common.rb
@@ -4,13 +4,16 @@ require 'json/generic_object'
module JSON
class << self
+ # :call-seq:
+ # JSON[object] -> new_array or new_string
+ #
# If +object+ is a
- # {String-convertible object}[doc/implicit_conversion_rdoc.html#label-String-Convertible+Objects]
- # (implementing +to_str+), calls JSON.parse with +object+ and +opts+:
+ # {String-convertible object}[doc/implicit_conversion_rdoc.html#label-String-Convertible+Objects],
+ # calls JSON.parse with +object+ and +opts+ (see method #parse):
# json = '[0, 1, null]'
# JSON[json]# => [0, 1, nil]
#
- # Otherwise, calls JSON.generate with +object+ and +opts+:
+ # Otherwise, calls JSON.generate with +object+ and +opts+ (see method #generate):
# ruby = [0, 1, nil]
# JSON[ruby] # => '[0,1,null]'
def [](object, opts = {})
@@ -171,10 +174,24 @@ module JSON
# For examples of parsing for all \JSON data types, see
# {Parsing \JSON}[#module-JSON-label-Parsing+JSON].
#
- # ====== Exceptions
+ # Parses nested JSON objects:
+ # source = <<-EOT
+ # {
+ # "name": "Dave",
+ # "age" :40,
+ # "hats": [
+ # "Cattleman's",
+ # "Panama",
+ # "Tophat"
+ # ]
+ # }
+ # EOT
+ # ruby = JSON.parse(source)
+ # ruby # => {"name"=>"Dave", "age"=>40, "hats"=>["Cattleman's", "Panama", "Tophat"]}
#
- # Raises an exception if +source+ is not valid JSON:
+ # ---
#
+ # Raises an exception if +source+ is not valid JSON:
# # Raises JSON::ParserError (783: unexpected token at ''):
# JSON.parse('')
#
@@ -201,12 +218,24 @@ module JSON
Parser.new(source, **(opts||{})).parse
end
- # Parses the content of a file (see parse method documentation for more information).
+ # :call-seq:
+ # CSV.load_file(path, opts={}) -> object
+ #
+ # Calls:
+ # parse(File.read(path), opts)
+ #
+ # See method #parse.
def load_file(filespec, opts = {})
parse(File.read(filespec), opts)
end
- # Parses the content of a file (see parse! method documentation for more information).
+ # :call-seq:
+ # CSV.load_file!(path, opts = {})
+ #
+ # Calls:
+ # CSV.parse!(File.read(path, opts))
+ #
+ # See method #parse!
def load_file!(filespec, opts = {})
parse!(File.read(filespec), opts)
end
@@ -247,8 +276,6 @@ module JSON
#
# Raises an exception if any formatting option is not a \String.
#
- # ====== Exceptions
- #
# Raises an exception if +obj+ contains circular references:
# a = []; b = []; a.push(b); b.push(a)
# # Raises JSON::NestingError (nesting of 100 is too deep):
@@ -280,6 +307,9 @@ module JSON
module_function :unparse
# :startdoc:
+ # :call-seq:
+ # JSON.fast_generate(obj, opts) -> new_string
+ #
# Arguments +obj+ and +opts+ here are the same as
# arguments +obj+ and +opts+ in JSON.generate.
#
@@ -398,6 +428,7 @@ module JSON
#
# This method is part of the implementation of the load/dump interface of
# Marshal and YAML.
+ #
def load(source, proc = nil, options = {})
opts = load_default_options.merge options
if source.respond_to? :to_str