[前][次][番号順一覧][スレッド一覧]

ruby-changes:63733

From: Burdette <ko1@a...>
Date: Tue, 24 Nov 2020 09:34:45 +0900 (JST)
Subject: [ruby-changes:63733] c5fcafd2fd (master): [ruby/csv] Split recipes into three pages: parsing, generating, filtering (#184)

https://git.ruby-lang.org/ruby.git/commit/?id=c5fcafd2fd

From c5fcafd2fd82ddbae38739a874bf84a19b4ef402 Mon Sep 17 00:00:00 2001
From: Burdette Lamar <BurdetteLamar@Y...>
Date: Tue, 13 Oct 2020 20:06:41 -0500
Subject: [ruby/csv] Split recipes into three pages: parsing, generating,
 filtering (#184)

Co-authored-by: Sutou Kouhei <kou@c...>

https://github.com/ruby/csv/commit/f0bab6a592

diff --git a/doc/csv/recipes.rdoc b/doc/csv/recipes.rdoc
deleted file mode 100644
index a620dca..0000000
--- a/doc/csv/recipes.rdoc
+++ /dev/null
@@ -1,525 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/#L0
-== Recipes
-
-All code snippets on this page assume that the following has been executed:
-  require 'csv'
-
-=== Contents
-
-- {Parsing: Source Formats}[#label-Parsing-3A+Source+Formats]
-  - {Parsing from a String}[#label-Parsing+from+a+String]
-    - {Recipe: Parse from String with Headers}[#label-Recipe-3A+Parse+from+String+with+Headers]
-    - {Recipe: Parse from String Without Headers}[#label-Recipe-3A+Parse+from+String+Without+Headers]
-  - {Parsing from a File}[#label-Parsing+from+a+File]
-    - {Recipe: Parse from File with Headers}[#label-Recipe-3A+Parse+from+File+with+Headers]
-    - {Recipe: Parse from File Without Headers}[#label-Recipe-3A+Parse+from+File+Without+Headers]
-  - {Parsing from an IO Stream}[#label-Parsing+from+an+IO+Stream]
-    - {Recipe: Parse from IO Stream with Headers}[#label-Recipe-3A+Parse+from+IO+Stream+with+Headers]
-    - {Recipe: Parse from IO Stream Without Headers}[#label-Recipe-3A+Parse+from+IO+Stream+Without+Headers]
-- {Parsing: Field Converters}[#label-Parsing-3A+Field+Converters]
-  - {Converting Fields to Objects}[#label-Converting+Fields+to+Objects]
-    - {Recipe: Convert Fields to Integers}[#label-Recipe-3A+Convert+Fields+to+Integers]
-    - {Recipe: Convert Fields to Floats}[#label-Recipe-3A+Convert+Fields+to+Floats]
-    - {Recipe: Convert Fields to Numerics}[#label-Recipe-3A+Convert+Fields+to+Numerics]
-    - {Recipe: Convert Fields to Dates}[#label-Recipe-3A+Convert+Fields+to+Dates]
-    - {Recipe: Convert Fields to DateTimes}[#label-Recipe-3A+Convert+Fields+to+DateTimes]
-    - {Recipe: Convert Assorted Fields to Objects}[#label-Recipe-3A+Convert+Assorted+Fields+to+Objects]
-    - {Recipe: Convert Fields to Other Objects}[#label-Recipe-3A+Convert+Fields+to+Other+Objects]
-  - {Recipe: Filter Field Strings}[#label-Recipe-3A+Filter+Field+Strings]
-  - {Recipe: Register Field Converters}[#label-Recipe-3A+Register+Field+Converters]
-  - {Using Multiple Field Converters}[#label-Using+Multiple+Field+Converters]
-    - {Recipe: Specify Multiple Field Converters in Option :converters}[#label-Recipe-3A+Specify+Multiple+Field+Converters+in+Option+-3Aconverters]
-    - {Recipe: Specify Multiple Field Converters in a Custom Converter List}[#label-Recipe-3A+Specify+Multiple+Field+Converters+in+a+Custom+Converter+List]
-- {Generating: Output Formats}[#label-Generating-3A+Output+Formats]
-  - {Generating to a String}[#label-Generating+to+a+String]
-    - {Recipe: Generate to String with Headers}[#label-Recipe-3A+Generate+to+String+with+Headers]
-    - {Recipe: Generate to String Without Headers}[#label-Recipe-3A+Generate+to+String+Without+Headers]
-  - {Generating to a File}[#label-Generating+to+a+File]
-    - {Recipe: Generate to File with Headers}[#label-Recipe-3A+Generate+to+File+with+Headers]
-    - {Recipe: Generate to File Without Headers}[#label-Recipe-3A+Generate+to+File+Without+Headers]
-  - {Generating to IO an Stream}[#label-Generating+to+an+IO+Stream]
-    - {Recipe: Generate to IO Stream with Headers}[#label-Recipe-3A+Generate+to+IO+Stream+with+Headers]
-    - {Recipe: Generate to IO Stream Without Headers}[#label-Recipe-3A+Generate+to+IO+Stream+Without+Headers]
-- {Filtering: Source and Output Formats}[#label-Filtering-3A+Source+and+Output+Formats]
-  - {Filtering String to String}[#label-Filtering+String+to+String]
-    - {Recipe: Filter String to String with Headers}[#label-Recipe-3A+Filter+String+to+String+with+Headers]
-    - {Recipe: Filter String to String Without Headers}[#label-Recipe-3A+Filter+String+to+String+Without+Headers]
-  - {Filtering String to IO Stream}[#label-Filtering+String+to+IO+Stream]
-    - {Recipe: Filter String to IO Stream with Headers}[#label-Recipe-3A+Filter+String+to+IO+Stream+with+Headers]
-    - {Recipe: Filter String to IO Stream Without Headers}[#label-Recipe-3A+Filter+String+to+IO+Stream+Without+Headers]
-  - {Filtering IO Stream to String}[#label-Filtering+IO+Stream+to+String]
-    - {Recipe: Filter IO Stream to String with Headers}[#label-Recipe-3A+Filter+IO+Stream+to+String+with+Headers]
-    - {Recipe: Filter IO Stream to String Without Headers}[#label-Recipe-3A+Filter+IO+Stream+to+String+Without+Headers]
-  - {Filtering IO Stream to IO Stream}[#label-Filtering+IO+Stream+to+IO+Stream]
-    - {Recipe: Filter IO Stream to IO Stream with Headers}[#label-Recipe-3A+Filter+IO+Stream+to+IO+Stream+with+Headers]
-    - {Recipe: Filter IO Stream to IO Stream Without Headers}[#label-Recipe-3A+Filter+IO+Stream+to+IO+Stream+Without+Headers]
-
-=== Parsing: Source Formats
-
-You can parse \CSV data from a \String, from a \File (via its path), or from an \IO stream.
-
-==== Parsing from a \String
-
-You can parse \CSV data from a \String, with or without headers.
-
-===== Recipe: Parse from \String with Headers
-
-Use class method CSV.parse with option +headers+ to read a source \String all at once
-(may have memory resource implications):
-  string = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
-  CSV.parse(string, headers: true) # => #<CSV::Table mode:col_or_row row_count:4>
-
-Use instance method CSV#each with option +headers+ to read a source \String one row at a time:
-  CSV.new(string, headers: true).each do |row|
-    p row
-  end
-Ouput:
-  #<CSV::Row "Name":"foo" "Value":"0">
-  #<CSV::Row "Name":"bar" "Value":"1">
-  #<CSV::Row "Name":"baz" "Value":"2">
-
-===== Recipe: Parse from \String Without Headers
-
-Use class method CSV.parse without option +headers+ to read a source \String all at once
-(may have memory resource implications):
-  string = "foo,0\nbar,1\nbaz,2\n"
-  CSV.parse(string) # => [["foo", "0"], ["bar", "1"], ["baz", "2"]]
-
-Use instance method CSV#each without option +headers+ to read a source \String one row at a time:
-  CSV.new(string).each do |row|
-    p row
-  end
-Output:
-  ["foo", "0"]
-  ["bar", "1"]
-  ["baz", "2"]
-
-==== Parsing from a \File
-
-You can parse \CSV data from a \File, with or without headers.
-
-===== Recipe: Parse from \File with Headers
-
-Use instance method CSV#read with option +headers+ to read a file all at once:
-  string = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
-  path = 't.csv'
-  File.write(path, string)
-  CSV.read(path, headers: true) # => #<CSV::Table mode:col_or_row row_count:4>
-
-Use class method CSV.foreach with option +headers+ to read one row at a time:
-  CSV.foreach(path, headers: true) do |row|
-    p row
-  end
-Output:
-  #<CSV::Row "Name":"foo" "Value":"0">
-  #<CSV::Row "Name":"bar" "Value":"1">
-  #<CSV::Row "Name":"baz" "Value":"2">
-
-===== Recipe: Parse from \File Without Headers
-
-Use class method CSV.read without option +headers+ to read a file all at once:
-  string = "foo,0\nbar,1\nbaz,2\n"
-  path = 't.csv'
-  File.write(path, string)
-  CSV.read(path) # => [["foo", "0"], ["bar", "1"], ["baz", "2"]]
-
-Use class method CSV.foreach without option +headers+ to read one row at a time:
-  CSV.foreach(path) do |row|
-    p row
-  end
-Output:
-  ["foo", "0"]
-  ["bar", "1"]
-  ["baz", "2"]
-
-==== Parsing from an \IO Stream
-
-You can parse \CSV data from an \IO stream, with or without headers.
-
-===== Recipe: Parse from \IO Stream with Headers
-
-Use class method CSV.parse with option +headers+ to read an \IO stream all at once:
-  string = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
-  path = 't.csv'
-  File.write(path, string)
-  File.open(path) do |file|
-    CSV.parse(file, headers: true)
-  end # => #<CSV::Table mode:col_or_row row_count:4>
-
-Use class method CSV.foreach with option +headers+ to read one row at a time:
-  File.open(path) do |file|
-    CSV.foreach(file, headers: true) do |row|
-      p row
-    end
-  end
-Output:
-  #<CSV::Row "Name":"foo" "Value":"0">
-  #<CSV::Row "Name":"bar" "Value":"1">
-  #<CSV::Row "Name":"baz" "Value":"2">
-
-===== Recipe: Parse from \IO Stream Without Headers
-
-Use class method CSV.parse without option +headers+ to read an \IO stream all at once:
-  string = "foo,0\nbar,1\nbaz,2\n"
-  path = 't.csv'
-  File.write(path, string)
-  File.open(path) do |file|
-    CSV.parse(file)
-  end # => [["foo", "0"], ["bar", "1"], ["baz", "2"]]
-
-Use class method CSV.foreach without option +headers+ to read one row at a time:
-  File.open(path) do |file|
-    CSV.foreach(file) do |row|
-      p row
-    end
-  end
-Output:
-  ["foo", "0"]
-  ["bar", "1"]
-  ["baz", "2"]
-
-=== Parsing: Field Converters
-
-You can use field converters to change parsed \String fields into other objects,
-or to otherwise modify the \String fields.
-
-==== Converting Fields to Objects
-
-Use field converters to change parsed \String objects into other, more specific, objects.
-
-There are built-in field converters for converting to objects of certain classes:
-- \Float
-- \Integer
-- \Date
-- \DateTime
-
-Other built-in field converters include:
-- <tt>:numeric</tt>: converts to \Integer and \Float.
-- <tt>:all</tt>: converts to \DateTime, \Integer, \Float.
-
-You can also define field converters to convert to objects of other classes.
-
-===== Recipe: Convert Fields to Integers
-
-Convert fields to \Integer objects using built-in converter <tt>:integer</tt>:
-  source = "Name,Value\nfoo,0\nbar,1\nbaz,2\n"
-  parsed = CSV.parse(source, headers: true, converters: :integer)
-  parsed.map {|row| row['Value'].class} # => [Integer, Integer, Integer]
-
-===== Recipe: Convert Fields to Floats
-
-Convert fields to \Float objects using built-in converter <tt>:float</tt>:
-  source = "Name,Value\nfoo,0\nbar,1\nbaz, (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]