csvyaml 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c07f82dfd13c43d0246141a6c79d36d42222d00a
4
- data.tar.gz: 45ac0671f99a0d44b7ffd782c6ab3462f1304ba3
3
+ metadata.gz: 8b34d6995287396390a637e0a66a02128789a6d3
4
+ data.tar.gz: 205cf03a3a1ba3e5fc9936b29b94b899bebf7d8a
5
5
  SHA512:
6
- metadata.gz: 0fae80b8706cf2def97794fc32f0aaae92efd3bc403dd9904e7be1370b05b84c4670ba25d4b64ca3aeb3af3135a83ae4c60577904d724678c8b8d48bfed2c593
7
- data.tar.gz: 996746983caeeef7ce305533c5d564e375656cbd4787a8e9698d56fc5f2ba71cb6703fb93e33b672bb0f489ae75bc6269a5cd28d8921d0d758ff4699c8c22cb5
6
+ metadata.gz: '021907b520885283562bce2f14b891ab5e980bdb558dcb7bc0f7a7c79966d8deb87f06e3f191c78bf12ac00163c2e7d4eb96ba4b1f764cd81231c94b460dfcb2'
7
+ data.tar.gz: 6d13ca8c2373c6f67b59b32303d5ced7e365663a2321396d18e8dd0ce5c95606e0972e0c8f6aa4efc00a889f3462aa058e63367348924ebf30254f00b37d5a20
@@ -0,0 +1,116 @@
1
+ CC0 1.0 Universal
2
+
3
+ Statement of Purpose
4
+
5
+ The laws of most jurisdictions throughout the world automatically confer
6
+ exclusive Copyright and Related Rights (defined below) upon the creator and
7
+ subsequent owner(s) (each and all, an "owner") of an original work of
8
+ authorship and/or a database (each, a "Work").
9
+
10
+ Certain owners wish to permanently relinquish those rights to a Work for the
11
+ purpose of contributing to a commons of creative, cultural and scientific
12
+ works ("Commons") that the public can reliably and without fear of later
13
+ claims of infringement build upon, modify, incorporate in other works, reuse
14
+ and redistribute as freely as possible in any form whatsoever and for any
15
+ purposes, including without limitation commercial purposes. These owners may
16
+ contribute to the Commons to promote the ideal of a free culture and the
17
+ further production of creative, cultural and scientific works, or to gain
18
+ reputation or greater distribution for their Work in part through the use and
19
+ efforts of others.
20
+
21
+ For these and/or other purposes and motivations, and without any expectation
22
+ of additional consideration or compensation, the person associating CC0 with a
23
+ Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
24
+ and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
25
+ and publicly distribute the Work under its terms, with knowledge of his or her
26
+ Copyright and Related Rights in the Work and the meaning and intended legal
27
+ effect of CC0 on those rights.
28
+
29
+ 1. Copyright and Related Rights. A Work made available under CC0 may be
30
+ protected by copyright and related or neighboring rights ("Copyright and
31
+ Related Rights"). Copyright and Related Rights include, but are not limited
32
+ to, the following:
33
+
34
+ i. the right to reproduce, adapt, distribute, perform, display, communicate,
35
+ and translate a Work;
36
+
37
+ ii. moral rights retained by the original author(s) and/or performer(s);
38
+
39
+ iii. publicity and privacy rights pertaining to a person's image or likeness
40
+ depicted in a Work;
41
+
42
+ iv. rights protecting against unfair competition in regards to a Work,
43
+ subject to the limitations in paragraph 4(a), below;
44
+
45
+ v. rights protecting the extraction, dissemination, use and reuse of data in
46
+ a Work;
47
+
48
+ vi. database rights (such as those arising under Directive 96/9/EC of the
49
+ European Parliament and of the Council of 11 March 1996 on the legal
50
+ protection of databases, and under any national implementation thereof,
51
+ including any amended or successor version of such directive); and
52
+
53
+ vii. other similar, equivalent or corresponding rights throughout the world
54
+ based on applicable law or treaty, and any national implementations thereof.
55
+
56
+ 2. Waiver. To the greatest extent permitted by, but not in contravention of,
57
+ applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
58
+ unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
59
+ and Related Rights and associated claims and causes of action, whether now
60
+ known or unknown (including existing as well as future claims and causes of
61
+ action), in the Work (i) in all territories worldwide, (ii) for the maximum
62
+ duration provided by applicable law or treaty (including future time
63
+ extensions), (iii) in any current or future medium and for any number of
64
+ copies, and (iv) for any purpose whatsoever, including without limitation
65
+ commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
66
+ the Waiver for the benefit of each member of the public at large and to the
67
+ detriment of Affirmer's heirs and successors, fully intending that such Waiver
68
+ shall not be subject to revocation, rescission, cancellation, termination, or
69
+ any other legal or equitable action to disrupt the quiet enjoyment of the Work
70
+ by the public as contemplated by Affirmer's express Statement of Purpose.
71
+
72
+ 3. Public License Fallback. Should any part of the Waiver for any reason be
73
+ judged legally invalid or ineffective under applicable law, then the Waiver
74
+ shall be preserved to the maximum extent permitted taking into account
75
+ Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
76
+ is so judged Affirmer hereby grants to each affected person a royalty-free,
77
+ non transferable, non sublicensable, non exclusive, irrevocable and
78
+ unconditional license to exercise Affirmer's Copyright and Related Rights in
79
+ the Work (i) in all territories worldwide, (ii) for the maximum duration
80
+ provided by applicable law or treaty (including future time extensions), (iii)
81
+ in any current or future medium and for any number of copies, and (iv) for any
82
+ purpose whatsoever, including without limitation commercial, advertising or
83
+ promotional purposes (the "License"). The License shall be deemed effective as
84
+ of the date CC0 was applied by Affirmer to the Work. Should any part of the
85
+ License for any reason be judged legally invalid or ineffective under
86
+ applicable law, such partial invalidity or ineffectiveness shall not
87
+ invalidate the remainder of the License, and in such case Affirmer hereby
88
+ affirms that he or she will not (i) exercise any of his or her remaining
89
+ Copyright and Related Rights in the Work or (ii) assert any associated claims
90
+ and causes of action with respect to the Work, in either case contrary to
91
+ Affirmer's express Statement of Purpose.
92
+
93
+ 4. Limitations and Disclaimers.
94
+
95
+ a. No trademark or patent rights held by Affirmer are waived, abandoned,
96
+ surrendered, licensed or otherwise affected by this document.
97
+
98
+ b. Affirmer offers the Work as-is and makes no representations or warranties
99
+ of any kind concerning the Work, express, implied, statutory or otherwise,
100
+ including without limitation warranties of title, merchantability, fitness
101
+ for a particular purpose, non infringement, or the absence of latent or
102
+ other defects, accuracy, or the present or absence of errors, whether or not
103
+ discoverable, all to the greatest extent permissible under applicable law.
104
+
105
+ c. Affirmer disclaims responsibility for clearing rights of other persons
106
+ that may apply to the Work or any use thereof, including without limitation
107
+ any person's Copyright and Related Rights in the Work. Further, Affirmer
108
+ disclaims responsibility for obtaining any necessary consents, permissions
109
+ or other rights required for any use of the Work.
110
+
111
+ d. Affirmer understands and acknowledges that Creative Commons is not a
112
+ party to this document and has no duty or obligation with respect to this
113
+ CC0 or use of the Work.
114
+
115
+ For more information, please see
116
+ <http://creativecommons.org/publicdomain/zero/1.0/>
@@ -1,12 +1,13 @@
1
1
  HISTORY.md
2
+ LICENSE.md
2
3
  Manifest.txt
3
4
  README.md
4
5
  Rakefile
6
+ datasets/hello.yaml.csv
7
+ datasets/hello11.yaml.csv
5
8
  lib/csvyaml.rb
6
9
  lib/csvyaml/parser.rb
7
10
  lib/csvyaml/version.rb
8
- test/data/hello.yaml.csv
9
- test/data/hello11.yaml.csv
10
11
  test/helper.rb
11
12
  test/test_parser.rb
12
13
  test/test_parser_misc.rb
data/README.md CHANGED
@@ -9,10 +9,135 @@ csvyaml library / gem - read tabular data in the CSV <3 YAML format, that is, co
9
9
  * forum :: [wwwmake](http://groups.google.com/group/wwwmake)
10
10
 
11
11
 
12
+ ## What's CSV <3 YAML?
13
+
14
+ CSV <3 YAML is a Comma-Separated Values (CSV)
15
+ variant / format / dialect
16
+ where the line-by-line records follow the
17
+ YAML Ain't Markup Language (YAML) encoding rules.
18
+ It's a modern (simple) tabular data format that
19
+ includes arrays, numbers, booleans, nulls, nested structures, comments and more.
20
+ Example:
21
+
22
+
23
+ ```
24
+ # "Vanilla" CSV <3 YAML
25
+
26
+ 1,John,12 Totem Rd. Aspen,true
27
+ 2,Bob,null,false
28
+ 3,Sue,"Bigsby, 345 Carnival, WA 23009",false
29
+ ```
30
+
31
+ or
32
+
33
+ ```
34
+ # CSV <3 YAML with array values
35
+
36
+ 1,directions,[north,south,east,west]
37
+ 2,colors,[red,green,blue]
38
+ 3,drinks,[soda,water,tea,coffe]
39
+ 4,spells,[]
40
+ ```
41
+
42
+ For more see the [official CSV <3 YAML Format documentation »](https://github.com/csvspecs/csv-yaml)
43
+
44
+
12
45
 
13
46
  ## Usage
14
47
 
15
- to be done
48
+ ``` ruby
49
+ txt <<=TXT
50
+ # "Vanilla" CSV <3 YAML
51
+
52
+ 1,John,12 Totem Rd. Aspen,true
53
+ 2,Bob,null,false
54
+ 3,Sue,"Bigsby, 345 Carnival, WA 23009",false
55
+ TXT
56
+
57
+ records = CsvYaml.parse( txt ) ## or CSV_YAML.parse or CSVYAML.parse
58
+ pp records
59
+ # => [[1,"John","12 Totem Rd. Aspen",true],
60
+ # [2,"Bob",nil,false],
61
+ # [3,"Sue","Bigsby, 345 Carnival, WA 23009",false]]
62
+
63
+ # -or-
64
+
65
+ records = CsvYaml.read( "values.yaml.csv" ) ## or CSV_YAML.read or CSVYAML.read
66
+ pp records
67
+ # => [[1,"John","12 Totem Rd. Aspen",true],
68
+ # [2,"Bob",nil,false],
69
+ # [3,"Sue","Bigsby, 345 Carnival, WA 23009",false]]
70
+
71
+ # -or-
72
+
73
+ CsvYaml.foreach( "values.yaml.csv" ) do |rec| ## or CSV_YAML.foreach or CSVYAML.foreach
74
+ pp rec
75
+ end
76
+ # => [1,"John","12 Totem Rd. Aspen",true]
77
+ # => [2,"Bob",nil,false]
78
+ # => [3,"Sue","Bigsby, 345 Carnival, WA 23009",false]
79
+ ```
80
+
81
+
82
+
83
+ ### What about Enumerable?
84
+
85
+ Yes, the reader / parser includes `Enumerable` and runs on `each`.
86
+ Use `new` or `open` without a block
87
+ to get the enumerator (iterator).
88
+ Example:
89
+
90
+
91
+ ``` ruby
92
+ csv = CsvYaml.new( "1,2,3" ) ## or CSV_YAML.new or CSVYAML.new
93
+ it = csv.to_enum
94
+ pp it.next
95
+ # => [1,2,3]
96
+
97
+ # -or-
98
+
99
+ csv = CsvYaml.open( "values.yaml.csv" ) ## or CSV_YAML.open or CSVYAML.open
100
+ it = csv.to_enum
101
+ pp it.next
102
+ # => [1,"John","12 Totem Rd. Aspen",true]
103
+ pp it.next
104
+ # => [2,"Bob",nil,false]
105
+ ```
106
+
107
+
108
+
109
+ ### What about headers?
110
+
111
+ Yes, you can. Use the `CsvHash`
112
+ from the csvreader library / gem
113
+ if the first line is a header (or if missing pass in the headers
114
+ as an array) and you want your records as hashes instead of arrays of strings.
115
+ Example:
116
+
117
+ ``` ruby
118
+ txt <<=TXT
119
+ id,name,address,regular
120
+ 1,John,"12 Totem Rd., Aspen",true
121
+ 2,Bob,null,false
122
+ 3,Sue,"\"Bigsby\", 345 Carnival, WA 23009",false
123
+ TXT
124
+
125
+ records = CsvHash.yaml.parse( txt )
126
+ pp records
127
+
128
+ # => [{"id": 1,
129
+ # "name": "John",
130
+ # "address": "12 Totem Rd. Aspen",
131
+ # "regular": true},
132
+ # {"id": 2,
133
+ # "name": "Bob",
134
+ # "address": null,
135
+ # "regular": false},
136
+ # ... ]
137
+ ```
138
+
139
+ For more see the [official CsvHash documentation in the csvreader library / gem »](https://github.com/csvreader/csvreader)
140
+
16
141
 
17
142
 
18
143
  ## License
File without changes
File without changes
@@ -17,5 +17,5 @@ CSVY = CsvYaml
17
17
  CsvY = CsvYaml
18
18
 
19
19
 
20
-
21
- puts CsvYaml.banner
20
+ # say hello
21
+ puts CsvYaml.banner if $DEBUG || (defined?($RUBYCOCO_DEBUG) && $RUBYCOCO_DEBUG)
@@ -3,8 +3,8 @@
3
3
 
4
4
  class CsvYaml
5
5
 
6
- MAJOR = 0
7
- MINOR = 1
6
+ MAJOR = 1
7
+ MINOR = 0
8
8
  PATCH = 0
9
9
  VERSION = [MAJOR,MINOR,PATCH].join('.')
10
10
 
@@ -12,7 +12,7 @@ require 'csvyaml'
12
12
  ## add test_data_dir helper
13
13
  class CsvYaml
14
14
  def self.test_data_dir
15
- "#{root}/test/data"
15
+ "#{root}/datasets"
16
16
  end
17
17
  end
18
18
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csvyaml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-30 00:00:00.000000000 Z
11
+ date: 2018-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rdoc
@@ -46,18 +46,20 @@ executables: []
46
46
  extensions: []
47
47
  extra_rdoc_files:
48
48
  - HISTORY.md
49
+ - LICENSE.md
49
50
  - Manifest.txt
50
51
  - README.md
51
52
  files:
52
53
  - HISTORY.md
54
+ - LICENSE.md
53
55
  - Manifest.txt
54
56
  - README.md
55
57
  - Rakefile
58
+ - datasets/hello.yaml.csv
59
+ - datasets/hello11.yaml.csv
56
60
  - lib/csvyaml.rb
57
61
  - lib/csvyaml/parser.rb
58
62
  - lib/csvyaml/version.rb
59
- - test/data/hello.yaml.csv
60
- - test/data/hello11.yaml.csv
61
63
  - test/helper.rb
62
64
  - test/test_parser.rb
63
65
  - test/test_parser_misc.rb