windows_csv 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile CHANGED
@@ -3,8 +3,6 @@ source "http://rubygems.org"
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
 
6
- gem "csv_lazy", :path => "/Users/kaspernj/Dev/Ruby/csv_lazy"
7
-
8
6
  # Add dependencies to develop your gem here.
9
7
  # Include everything needed to run rake, tests, features, etc.
10
8
  group :development do
data/Gemfile.lock CHANGED
@@ -1,9 +1,3 @@
1
- PATH
2
- remote: /Users/kaspernj/Dev/Ruby/csv_lazy
3
- specs:
4
- csv_lazy (0.0.8)
5
- string-strtr
6
-
7
1
  GEM
8
2
  remote: http://rubygems.org/
9
3
  specs:
@@ -26,14 +20,12 @@ GEM
26
20
  rspec-expectations (2.8.0)
27
21
  diff-lcs (~> 1.1.2)
28
22
  rspec-mocks (2.8.0)
29
- string-strtr (0.0.3)
30
23
 
31
24
  PLATFORMS
32
25
  ruby
33
26
 
34
27
  DEPENDENCIES
35
28
  bundler (>= 1.0.0)
36
- csv_lazy!
37
29
  jeweler (~> 1.8.4)
38
30
  rdoc (~> 3.12)
39
31
  rspec (~> 2.8.0)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
data/lib/windows_csv.rb CHANGED
@@ -5,22 +5,32 @@ class WindowsCsv
5
5
  BOM = "\377\376".force_encoding(Encoding::UTF_16LE) # Byte Order Mark
6
6
  COL_SEP = "\t"
7
7
  QUOTE_CHAR = "\""
8
+ ROW_SEP = "\r\n"
9
+ ARGS = {:col_sep => COL_SEP, :quote_char => QUOTE_CHAR, :row_sep => ROW_SEP}
8
10
 
9
11
  def self.foreach(path, args = {})
10
- require "rubygems"
11
- require "csv_lazy"
12
+ require "csv"
12
13
 
13
14
  File.open(path, "rb:bom|utf-16le") do |fp|
14
- csv_args = {:debug => false, :io => fp, :col_sep => COL_SEP, :quote_char => QUOTE_CHAR}
15
+ csv_args = ARGS.clone
15
16
  csv_args.merge!(args[:csv_args]) if args[:csv_args]
16
17
 
17
- Csv_lazy.new(csv_args) do |row|
18
- real = []
18
+ CSV.foreach(fp, csv_args) do |row|
19
+ if csv_args[:headers]
20
+ real = {}
21
+ else
22
+ real = []
23
+ end
24
+
19
25
  row.each do |col|
20
- real << col
26
+ if csv_args[:headers]
27
+ real[col[0].to_sym] = WindowsCsv.unescape(col[1])
28
+ else
29
+ real << WindowsCsv.unescape(col)
30
+ end
21
31
  end
22
32
 
23
- yield row
33
+ yield real
24
34
  end
25
35
  end
26
36
 
@@ -58,7 +68,7 @@ class WindowsCsv
58
68
  end
59
69
  end
60
70
 
61
- @args[:io].puts CSV.generate_line(encoded, :col_sep => COL_SEP, :quote_char => QUOTE_CHAR).encode(Encoding::UTF_16LE)
71
+ @args[:io].puts CSV.generate_line(encoded, ARGS).encode(Encoding::UTF_16LE)
62
72
 
63
73
  return nil
64
74
  end
@@ -66,4 +76,8 @@ class WindowsCsv
66
76
  def self.escape(str)
67
77
  return str.to_s.gsub("\n", "\\r\\n")
68
78
  end
79
+
80
+ def self.unescape(str)
81
+ return str.to_s.gsub("\\r\\n", "\r\n")
82
+ end
69
83
  end
@@ -13,15 +13,23 @@ describe "WindowsCsv" do
13
13
  WindowsCsv.new(:path => tmpfile) do |csv|
14
14
  csv << ["Name1", "Name2", "Encoding", "Date", "Time", "DateTime", "MultiLine"]
15
15
  csv << ["Kasper", "Christina", "æøå", Date.new, Time.new, DateTime.new, "Multi\nLine"]
16
+ csv << ["Thomas", "Nikolaj", "læp", nil, nil, nil, nil]
16
17
  end
17
18
 
18
- #puts "Path: #{tmpfile}"
19
+ puts "Path: #{tmpfile}"
19
20
 
21
+ count = 0
20
22
  WindowsCsv.foreach(tmpfile, :csv_args => {:headers => true}) do |row|
21
- puts "Row: #{row}"
22
- row[:Name2].should eql("Christina")
23
- row[:Encoding].should eql("æøå")
24
- row[:MultiLine].should eql("Multi\r\nLine")
23
+ count += 1
24
+ #puts "Row: #{row}"
25
+
26
+ if count == 1
27
+ row[:Name2].should eql("Christina")
28
+ row[:Encoding].should eql("æøå")
29
+ row[:MultiLine].should eql("Multi\r\nLine")
30
+ end
25
31
  end
32
+
33
+ count.should eql(2)
26
34
  end
27
35
  end
data/windows_csv.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "windows_csv"
8
- s.version = "0.0.5"
8
+ s.version = "0.0.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["kaspernj"]
@@ -40,20 +40,17 @@ Gem::Specification.new do |s|
40
40
  s.specification_version = 3
41
41
 
42
42
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
43
- s.add_runtime_dependency(%q<csv_lazy>, [">= 0"])
44
43
  s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
45
44
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
46
45
  s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
47
46
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
48
47
  else
49
- s.add_dependency(%q<csv_lazy>, [">= 0"])
50
48
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
51
49
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
52
50
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
53
51
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
54
52
  end
55
53
  else
56
- s.add_dependency(%q<csv_lazy>, [">= 0"])
57
54
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
58
55
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
59
56
  s.add_dependency(%q<bundler>, [">= 1.0.0"])
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: windows_csv
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.5
5
+ version: 0.0.6
6
6
  platform: ruby
7
7
  authors:
8
8
  - kaspernj
@@ -11,22 +11,6 @@ bindir: bin
11
11
  cert_chain: []
12
12
  date: 2013-05-02 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- version_requirements: !ruby/object:Gem::Requirement
16
- none: false
17
- requirements:
18
- - - ! '>='
19
- - !ruby/object:Gem::Version
20
- version: '0'
21
- name: csv_lazy
22
- type: :runtime
23
- prerelease: false
24
- requirement: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
14
  - !ruby/object:Gem::Dependency
31
15
  version_requirements: !ruby/object:Gem::Requirement
32
16
  none: false
@@ -125,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
125
109
  - !ruby/object:Gem::Version
126
110
  segments:
127
111
  - 0
128
- hash: 2666403027336268794
112
+ hash: -649786811259003594
129
113
  version: '0'
130
114
  required_rubygems_version: !ruby/object:Gem::Requirement
131
115
  none: false