rubyhelper 1.4.3 → 1.5.alpha1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5ff2b6a90a5cd6ac356d34c4a2bbbc3481afda74
4
- data.tar.gz: ad5dcfe0ec0ec58735ab27202cfba29153bd5223
3
+ metadata.gz: 35ad4a8c23600591470df5510a9f51b9c4801eaa
4
+ data.tar.gz: 7491fd29cb9622bb6295b7011d859df8ce3edbe7
5
5
  SHA512:
6
- metadata.gz: 8c29938b51916137920eef8285d69bcdf594ead3bf0178c8737cac804866bad8109d28e3a313969c0d5c430c589f0d3239d8a17bd00e5c0c740fcfb0287123ef
7
- data.tar.gz: 49add31aced858af518293ab06bfd9e9564c9a78490c35e1592224ec04c38f4a89fd85ed48220e72fec0d5e54f6f4d4f7aa2fef36f8764581bfe7177dfa61924
6
+ metadata.gz: 385108ecc4dad34199c3bbe1aaae92d6338fb6fa2603d7f2a8844980bb3d0227ddb53ce0487f8c2ace977c9d597d5ca3ebfcf6032abe7072079c8aa6393747d8
7
+ data.tar.gz: 4b7d342d03910a02f3b7a40cba46d15c5f645e38dafd82fb436277b4a8b17256cd1f1453704721d507832ab4c7a1433c595329e1cb5366b236bef2d6fd5cd2e7
checksums.yaml.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # rubyhelper
2
+ [![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/pouleta/rubyhelper?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
2
3
 
3
4
  Last Stable Gem
4
5
  [![Gem Version](https://badge.fury.io/rb/rubyhelper.svg)](http://badge.fury.io/rb/rubyhelper)
data/lib/gem-version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module RubyHelper
2
2
 
3
- VERSION = '1.4.3'
3
+ VERSION = '1.5.alpha1'
4
4
 
5
5
  end
@@ -125,10 +125,10 @@ module ArrayHelper
125
125
  self.do(:strip)
126
126
  end
127
127
 
128
- # see {#split}
128
+ # see {#sptrip}
129
129
  #
130
130
  # @return [Array]
131
- def split!
131
+ def strip!
132
132
  self.replace(self.strip)
133
133
  end
134
134
 
@@ -0,0 +1,44 @@
1
+ #encoding: utf-8
2
+
3
+ module CSVHelper
4
+
5
+ # the function split in multiple csv the current data
6
+ #
7
+ # @param names a list of with every csv you want to create. Every will have the same account of data (except the last) and will be take in the order
8
+ # @return the number of files created
9
+ def split(*names)
10
+ return if names.empty? # if no file, no split
11
+ headers = self.header_row? # check if headers exists
12
+ csv = self.to_a # save the entiere csv
13
+ headers = headers ? csv.first.to_h.keys : nil # if headers exists, save it
14
+ csv_size = csv.size # save the csv size
15
+ chunk_size = csv_size / names.size
16
+ chunk_size = 1 if chunk_size.zero? # min size is 1
17
+
18
+ # keep only the NLINES first chunks
19
+ names[0..csv_size].each_with_index do |name, i|
20
+ CSV.open(name, 'wb') do |f|
21
+ f << headers if headers
22
+ csv[(i*chunk_size)..((i+1)*chunk_size-1)].map(&:fields).each{|l| f << l}
23
+ end
24
+ end
25
+ return [names.size, csv_size].min
26
+ end
27
+
28
+ # see #{split}.
29
+ #
30
+ # @param n [Fixnum] the number of subcsv
31
+ # @param basename [String] the base of each files. will be N_basename
32
+ # @param path [String] the directory to create the files
33
+ def split_in_parts(n=1, basename='temporary.csv', path='/tmp')
34
+ names = 1.upto(n).map do |i|
35
+ Pathname.new(path) + (i.to_s + '_' + basename)
36
+ end
37
+ return split(*names)
38
+ end
39
+
40
+ end
41
+
42
+ class CSV
43
+ prepend CSVHelper
44
+ end
@@ -15,6 +15,22 @@ module HashHelper
15
15
  return self
16
16
  end
17
17
 
18
+ # Rename the keys of a Hash like '{old_ney => new_key}'
19
+ #
20
+ # @param keys [Hash]
21
+ # @return [Hash]
22
+ def rekeys keys={}
23
+ raise ArgumentError, 'keys must be a Hash' unless keys.is_a? Hash
24
+ d = self.dup
25
+ keys.each_key{|old_key| d.delete(old_key)}
26
+ return d.tap{keys.each{|old_key, new_key| d[new_key] = self[old_key]}}
27
+ end
28
+
29
+ # see {Hash#rekeys}
30
+ def rekeys!
31
+ return self.replace(self.rekeys(keys))
32
+ end
33
+
18
34
  end
19
35
 
20
36
  class Hash
@@ -33,7 +33,7 @@ module StringHelper
33
33
  # @param replace [String] if a char is not utf8 valid, character will replace it
34
34
  # @return [String] self changed without accents and non-utf-8 chars
35
35
  def to_plain(case_mod = nil, replace='')
36
- return self.p(replace).utf8(replace).to_case(case_mod)
36
+ return self.p(replace).encode('ASCII', invalid: :replace, undef: :replace, replace: replace).to_case(case_mod)
37
37
  end
38
38
 
39
39
  # see {#to_plain}
@@ -157,7 +157,7 @@ module StringNumericHelper
157
157
  # @return [Float]
158
158
  def ha2m2
159
159
  v = self.get_1float
160
- return String.new if v.empty?
160
+ return 0.0 if v.empty?
161
161
  m2_i = self.index(/m(2|²)/i)
162
162
  ha_i = self.index(/ha|hectar/i)
163
163
  return v.to_fi if ha_i.nil? or (not m2_i.nil? and m2_i < ha_i)
data/lib/rubyhelper.rb CHANGED
@@ -11,6 +11,7 @@ require_relative 'rubyhelper/numeric.rb'
11
11
  require_relative 'rubyhelper/fixnum.rb'
12
12
  require_relative 'rubyhelper/time.rb'
13
13
  require_relative 'rubyhelper/hash.rb'
14
+ require_relative 'rubyhelper/csv.rb'
14
15
 
15
16
  # extension advanced
16
17
  # require_relative 'rubyhelper/argumenterror.rb'
data/rubyhelper.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
  "lib/rubyhelper/fixnum.rb",
21
21
  "lib/rubyhelper/time.rb",
22
22
  "lib/rubyhelper/hash.rb",
23
+ "lib/rubyhelper/csv.rb",
23
24
  # "lib/rubyhelper/argumenterror.rb",
24
25
  "README.md",
25
26
  "Rakefile",
@@ -30,6 +31,7 @@ Gem::Specification.new do |s|
30
31
  "test/test_fixnum.rb",
31
32
  "test/test_string.rb",
32
33
  "test/test_string_numeric.rb",
34
+ "test/test_csv.rb",
33
35
  ]
34
36
  s.homepage = "https://gitlab.com/poulet_a/rubyhelper"
35
37
  s.license = "GNU/GPLv3"
data/test/test_csv.rb ADDED
@@ -0,0 +1,17 @@
1
+ #encoding: utf-8
2
+ require 'minitest/autorun'
3
+ require_relative '../lib/rubyhelper'
4
+
5
+ require 'csv'
6
+ require 'pry'
7
+
8
+ class CSVHelperTest < Minitest::Test
9
+
10
+ # TODO : create a csv, test it, get the results for compare
11
+ def test_split
12
+ d = CSV.open('/tmp/test.csv', headers: true)
13
+ d.split_in_parts(576, '.csv', '/tmp')
14
+ assert_equal(true, true)
15
+ end
16
+
17
+ end
data/test/test_hash.rb CHANGED
@@ -7,11 +7,20 @@ class HashHelperTest < Minitest::Test
7
7
  def test_except
8
8
  assert_equal({ :data => :a, :datb => :b },
9
9
  {
10
- :datx => :x,
11
- :data => :a,
12
- :datb => :b,
13
- :datc => :c,
14
- }.except!(:datx, :datc))
10
+ :datx => :x,
11
+ :data => :a,
12
+ :datb => :b,
13
+ :datc => :c,
14
+ }.except!(:datx, :datc))
15
+ end
16
+
17
+ def test_rekeys
18
+ assert_equal({new1: 1, new2: 42, stage: 1},
19
+ {
20
+ old1: 1,
21
+ old2: 42,
22
+ stage: 1,
23
+ }.rekeys(old1: :new1, old2: :new2))
15
24
  end
16
25
 
17
26
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyhelper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.5.alpha1
5
5
  platform: ruby
6
6
  authors:
7
7
  - poulet_a
@@ -31,7 +31,7 @@ cert_chain:
31
31
  +lG6tRo8QaFrH3afOmy4VUaG84Jm1XjNYnyaOfLb9ItpcQgVySn2c3aJ2PLcPljM
32
32
  EhZUryAiV8KNMQ==
33
33
  -----END CERTIFICATE-----
34
- date: 2014-10-27 00:00:00.000000000 Z
34
+ date: 2014-12-19 00:00:00.000000000 Z
35
35
  dependencies: []
36
36
  description: Improvements and additions by poulet_a to the basic ruby classes
37
37
  email:
@@ -45,6 +45,7 @@ email:
45
45
  - lib/rubyhelper/fixnum.rb
46
46
  - lib/rubyhelper/time.rb
47
47
  - lib/rubyhelper/hash.rb
48
+ - lib/rubyhelper/csv.rb
48
49
  - README.md
49
50
  - Rakefile
50
51
  - rubyhelper.gemspec
@@ -54,6 +55,7 @@ email:
54
55
  - test/test_fixnum.rb
55
56
  - test/test_string.rb
56
57
  - test/test_string_numeric.rb
58
+ - test/test_csv.rb
57
59
  executables: []
58
60
  extensions: []
59
61
  extra_rdoc_files: []
@@ -63,6 +65,7 @@ files:
63
65
  - lib/gem-version.rb
64
66
  - lib/rubyhelper.rb
65
67
  - lib/rubyhelper/array.rb
68
+ - lib/rubyhelper/csv.rb
66
69
  - lib/rubyhelper/fixnum.rb
67
70
  - lib/rubyhelper/hash.rb
68
71
  - lib/rubyhelper/numeric.rb
@@ -71,6 +74,7 @@ files:
71
74
  - lib/rubyhelper/time.rb
72
75
  - rubyhelper.gemspec
73
76
  - test/test_array.rb
77
+ - test/test_csv.rb
74
78
  - test/test_fixnum.rb
75
79
  - test/test_hash.rb
76
80
  - test/test_numeric.rb
@@ -91,14 +95,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
91
95
  version: '0'
92
96
  required_rubygems_version: !ruby/object:Gem::Requirement
93
97
  requirements:
94
- - - ">="
98
+ - - ">"
95
99
  - !ruby/object:Gem::Version
96
- version: '0'
100
+ version: 1.3.1
97
101
  requirements: []
98
102
  rubyforge_project:
99
- rubygems_version: 2.4.2
103
+ rubygems_version: 2.2.2
100
104
  signing_key:
101
105
  specification_version: 4
102
106
  summary: See Changelog
103
107
  test_files: []
104
- has_rdoc:
metadata.gz.sig CHANGED
Binary file