rubyhelper 1.4.3 → 1.5.alpha1

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: 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