array_hasher 0.1.4 → 0.1.5

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: a911e20523c7d6e32acd5b9b7966c42fac7a4162
4
- data.tar.gz: 0d368a949b832854f4fcf251d352e6f74bd03985
3
+ metadata.gz: 868889e1655542a502402c3f2a56165c6369ce58
4
+ data.tar.gz: 23e7cdc0eba7154d4f6a8c6d4f81b277d3f36a1a
5
5
  SHA512:
6
- metadata.gz: 6569caa11bc8414f3e37cca4fcbf28a6322de6c5da967a7ea6e45715213fe8aee9a45540c873e0cf4e0bed79729a88e7e2c5b73e8a901d3790cad009c9ffa710
7
- data.tar.gz: 7fbb2f6f968265a22ea30ebe188fbd5237d19bb353248851352aa8eeb8bb5c73ef425584f8e3ebcaec60211d7155c43bd64eac5a6dc1952fbacff8441978b832
6
+ metadata.gz: c7c8f29194a9849255c009791bcd2b9cf462b8b6ba398b4522e395d3c669a73df2d1c4f3fc0871c684f95808b79291541642e8a6c8bb56d27c3217b121289db5
7
+ data.tar.gz: 6e60a0a9378c926b0c43d10869dd4395be582b17d9e9f045a99d0b0804d2adb50508df23f60a4e5dd00c41b1f983014e38552802d80046041a513f5643f9cede
@@ -0,0 +1,138 @@
1
+ ---
2
+ # https://github.com/rails/rails/blob/master/.rubocop.yml
3
+ #
4
+ AllCops:
5
+ TargetRubyVersion: 2.4
6
+ # RuboCop has a bunch of cops enabled by default. This setting tells RuboCop
7
+ # to ignore them, so only the ones explicitly set in this file are enabled.
8
+ DisabledByDefault: true
9
+
10
+ # Prefer &&/|| over and/or.
11
+ Style/AndOr:
12
+ Enabled: true
13
+
14
+ # Do not use braces for hash literals when they are the last argument of a
15
+ # method call.
16
+ Style/BracesAroundHashParameters:
17
+ Enabled: true
18
+
19
+ # Align `when` with `case`.
20
+ Layout/CaseIndentation:
21
+ Enabled: true
22
+ EnforcedStyle: end
23
+ IndentOneStep: false
24
+
25
+ # Align comments with method definitions.
26
+ Layout/CommentIndentation:
27
+ Enabled: true
28
+
29
+ Layout/EmptyLineAfterMagicComment:
30
+ Enabled: true
31
+
32
+ # No extra empty lines.
33
+ Layout/EmptyLines:
34
+ Enabled: true
35
+
36
+ # In a regular class definition, no empty lines around the body.
37
+ Layout/EmptyLinesAroundClassBody:
38
+ Enabled: true
39
+
40
+ # In a regular method definition, no empty lines around the body.
41
+ Layout/EmptyLinesAroundMethodBody:
42
+ Enabled: true
43
+
44
+ # In a regular module definition, no empty lines around the body.
45
+ Layout/EmptyLinesAroundModuleBody:
46
+ Enabled: true
47
+
48
+ # Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }.
49
+ Style/HashSyntax:
50
+ Enabled: true
51
+
52
+ # Method definitions after `private` or `protected` isolated calls need one
53
+ # extra level of indentation.
54
+ Layout/IndentationConsistency:
55
+ Enabled: true
56
+ # EnforcedStyle: rails
57
+
58
+ # Two spaces, no tabs (for indentation).
59
+ Layout/IndentationWidth:
60
+ Enabled: true
61
+
62
+ Layout/SpaceAfterColon:
63
+ Enabled: true
64
+
65
+ Layout/SpaceAfterComma:
66
+ Enabled: true
67
+
68
+ Layout/SpaceAroundEqualsInParameterDefault:
69
+ Enabled: true
70
+
71
+ Layout/SpaceAroundKeyword:
72
+ Enabled: true
73
+
74
+ Layout/SpaceAroundOperators:
75
+ Enabled: true
76
+
77
+ Layout/SpaceBeforeFirstArg:
78
+ Enabled: true
79
+
80
+ # Defining a method with parameters needs parentheses.
81
+ Style/MethodDefParentheses:
82
+ Enabled: true
83
+
84
+ # str = "abcda"
85
+ # str.gsub!("c", "b") # will raise a error, we cannot change string literal
86
+ Style/FrozenStringLiteralComment:
87
+ Enabled: true
88
+ EnforcedStyle: always
89
+ Include:
90
+ - 'app/**/*'
91
+ - 'lib/**/*'
92
+
93
+ # Use `foo {}` not `foo{}`.
94
+ Layout/SpaceBeforeBlockBraces:
95
+ Enabled: true
96
+
97
+ # Use `foo { bar }` not `foo {bar}`.
98
+ Layout/SpaceInsideBlockBraces:
99
+ Enabled: true
100
+
101
+ # Use `{ a: 1 }` not `{a:1}`.
102
+ Layout/SpaceInsideHashLiteralBraces:
103
+ Enabled: true
104
+
105
+ Layout/SpaceInsideParens:
106
+ Enabled: true
107
+
108
+ # Check quotes usage according to lint rule below.
109
+ # Style/StringLiterals:
110
+ # Enabled: true
111
+ # EnforcedStyle: double_quotes
112
+
113
+ # Detect hard tabs, no hard tabs.
114
+ Layout/Tab:
115
+ Enabled: true
116
+
117
+ # Blank lines should not have any spaces.
118
+ Layout/TrailingBlankLines:
119
+ Enabled: true
120
+
121
+ # No trailing whitespace.
122
+ Layout/TrailingWhitespace:
123
+ Enabled: true
124
+
125
+ # Use quotes for string literals when they are enough.
126
+ # Style/UnneededPercentQ:
127
+ # Enabled: true
128
+
129
+ # Align `end` with the matching keyword or starting expression except for
130
+ # assignments, where it should be aligned with the LHS.
131
+ Lint/EndAlignment:
132
+ Enabled: true
133
+ EnforcedStyleAlignWith: variable
134
+
135
+ # Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
136
+ Lint/RequireParentheses:
137
+ Enabled: true
138
+
@@ -13,4 +13,6 @@ rvm:
13
13
  before_install:
14
14
  - gem install bundler --no-doc
15
15
 
16
- script: bundle exec rspec
16
+ script:
17
+ - bundle exec rspec
18
+ - bundle exec rubocop
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in array_hasher.gemspec
6
6
  gemspec
@@ -1,12 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- array_hasher (0.1.4)
4
+ array_hasher (0.1.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
+ ast (2.4.0)
9
10
  diff-lcs (1.3)
11
+ parallel (1.12.1)
12
+ parser (2.5.3.0)
13
+ ast (~> 2.4.0)
14
+ powerpack (0.1.2)
15
+ rainbow (3.0.0)
10
16
  rake (10.5.0)
11
17
  rspec (3.6.0)
12
18
  rspec-core (~> 3.6.0)
@@ -21,6 +27,15 @@ GEM
21
27
  diff-lcs (>= 1.2.0, < 2.0)
22
28
  rspec-support (~> 3.6.0)
23
29
  rspec-support (3.6.0)
30
+ rubocop (0.52.1)
31
+ parallel (~> 1.10)
32
+ parser (>= 2.4.0.2, < 3.0)
33
+ powerpack (~> 0.1)
34
+ rainbow (>= 2.2.2, < 4.0)
35
+ ruby-progressbar (~> 1.7)
36
+ unicode-display_width (~> 1.0, >= 1.0.1)
37
+ ruby-progressbar (1.10.0)
38
+ unicode-display_width (1.4.0)
24
39
 
25
40
  PLATFORMS
26
41
  ruby
@@ -30,6 +45,7 @@ DEPENDENCIES
30
45
  bundler (~> 1.16.a)
31
46
  rake (~> 10.0)
32
47
  rspec (~> 3.0)
48
+ rubocop (~> 0.52.1)
33
49
 
34
50
  BUNDLED WITH
35
51
  1.16.0
data/README.md CHANGED
@@ -114,7 +114,7 @@ ArrayHasher.new_formatter(format)
114
114
 
115
115
 
116
116
  ### Examples
117
-
117
+
118
118
  See [Here](./examples)
119
119
 
120
120
  ## Default Types
@@ -123,6 +123,8 @@ See [Here](./examples)
123
123
  * `float` # convert string to float
124
124
  * `string`: # to_s
125
125
  * `time` # Time.parse(string)
126
+ * `date` # Date.parse(string)
127
+ * `json` # JSON.parse(string)
126
128
  * `Proc` # format the value with your proc. we can define a Proc in our code only.
127
129
 
128
130
 
data/Rakefile CHANGED
@@ -3,4 +3,4 @@ require "rspec/core/rake_task"
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
@@ -24,4 +24,5 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "bundler", "~> 1.16.a"
25
25
  spec.add_development_dependency "rake", "~> 10.0"
26
26
  spec.add_development_dependency "rspec", "~> 3.0"
27
+ spec.add_development_dependency "rubocop", "~> 0.52.1"
27
28
  end
@@ -2,8 +2,6 @@ require 'bundler/setup'
2
2
  require 'array_hasher'
3
3
 
4
4
  f = ArrayHasher.new_formatter([
5
- [:a, :int], [:b, :float], [:c, proc {|v| v.split(',') }], [:d, nil, range: 3..-1]
5
+ [:a, :int], [:b, :float], [:c, proc { |v| v.split(',') }], [:d, nil, range: 3..-1]
6
6
  ])
7
7
  puts f.parse(['number: 123', '$ 123.1', 'a,b,c', 'd1', 'd2', 'd3'])
8
-
9
-
@@ -7,8 +7,7 @@ ArrayHasher.csv_each(File.expand_path('../test.csv', __FILE__)) do |line|
7
7
  end
8
8
 
9
9
  puts "\nDefined 'bookname' wrap with <>"
10
- ext_types = {bookname: proc {|v| "<#{v}>" }}
10
+ ext_types = { bookname: proc { |v| "<#{v}>" } }
11
11
  ArrayHasher.csv_each(File.expand_path('../test.csv', __FILE__), ext_types) do |line|
12
12
  puts line
13
13
  end
14
-
@@ -1,8 +1,7 @@
1
1
  f = ArrayHasher.new_formatter([
2
2
  [:a, :int], [:b, :float], [:c, :my_arr], [:d, nil, range: 3..-1]
3
3
  ])
4
- f.define_type(:my_arr) {|v| v.split(',').map(&:to_i) }
4
+ f.define_type(:my_arr) { |v| v.split(',').map(&:to_i) }
5
5
  # or
6
6
  # f.types[:my_arr] = proc {|v| v.split(',').map(&:to_i) }
7
7
  puts f.parse(['number: 123', '$ 123.1', '1,2,3', 'd1', 'd2', 'd3'])
8
-
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "array_hasher/version"
2
4
 
3
5
  require "array_hasher/formatter"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'time'
2
4
 
3
5
  module ArrayHasher
@@ -7,10 +9,12 @@ module ArrayHasher
7
9
  REGEXP_EMPTY = /\A\s*\z/
8
10
 
9
11
  TYPES = {
10
- int: Proc.new {|v| (v.nil? || v =~ REGEXP_EMPTY) ? nil : v.gsub(/[^\d]+/, '').to_i },
11
- float: Proc.new {|v| (v.nil? || v =~ REGEXP_EMPTY) ? nil : v.gsub(/[^\d\.]+/, '').to_f },
12
- string: Proc.new {|v| v.to_s },
13
- time: Proc.new {|v| v ? Time.parse(v) : nil }
12
+ int: Proc.new { |v| (v.nil? || v =~ REGEXP_EMPTY) ? nil : v.gsub(/[^\d]+/, '').to_i },
13
+ float: Proc.new { |v| (v.nil? || v =~ REGEXP_EMPTY) ? nil : v.gsub(/[^\d\.]+/, '').to_f },
14
+ string: Proc.new { |v| v.to_s },
15
+ time: Proc.new { |v| v ? Time.parse(v) : nil },
16
+ json: Proc.new { |v| v ? JSON.parse(v) : nil },
17
+ date: Proc.new { |v| v ? Date.parse(v) : nil }
14
18
  }
15
19
 
16
20
  # cols:
@@ -29,7 +33,7 @@ module ArrayHasher
29
33
  [
30
34
  name ? name.to_sym : nil,
31
35
  (type.nil? || type.is_a?(Proc)) ? type : type.to_sym,
32
- (opts || {}).each_with_object({}) {|kv, r| r[kv[0].to_sym] = kv[1] }
36
+ (opts || {}).each_with_object({}) { |kv, r| r[kv[0].to_sym] = kv[1] }
33
37
  ]
34
38
  end
35
39
  end
@@ -59,4 +63,3 @@ module ArrayHasher
59
63
  end
60
64
  end
61
65
  end
62
-
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ArrayHasher
2
- VERSION = "0.1.4"
4
+ VERSION = "0.1.5"
3
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: array_hasher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - jiangzhi.xie
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-06 00:00:00.000000000 Z
11
+ date: 2018-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.52.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.52.1
55
69
  description: Convert array to hash according to your defined formatter
56
70
  email:
57
71
  - xiejiangzhi@gmail.com
@@ -61,6 +75,7 @@ extra_rdoc_files: []
61
75
  files:
62
76
  - ".gitignore"
63
77
  - ".rspec"
78
+ - ".rubocop.yml"
64
79
  - ".travis.yml"
65
80
  - Gemfile
66
81
  - Gemfile.lock