midwire_common 0.1.12 → 0.1.13

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: dcbd766fa404dee3f40d4d338117022cfa80fa0f
4
- data.tar.gz: 18dcf1ba51b11d5ebadf7bd7f81d5d6e1261bdd8
3
+ metadata.gz: 610b3c6906cff1da83a54ea846a91053db886a99
4
+ data.tar.gz: cce85b69aa0979b7ba4d83099409a3cebf958ebc
5
5
  SHA512:
6
- metadata.gz: c1dbf997be279cb4cc0756f500b05d6319a275871633f3d177aaa7520862f03ff6d64c2a17f70cc6b98588c93761597165999eaac9340a3081330a98547afeda
7
- data.tar.gz: 94b5bf3534b408b44e791f3bad888cbded6af424f1c98ea4c26bb4676df24c733d092b6386c2a5d613b97bfd7de44811407d80e3c82657b901280f576451a004
6
+ metadata.gz: f01eb7ce5297c9c1b99569b9864a136bd58e1614036f007ecc8f5be9f69fd3cdc4f3ebe8592a13eba5385faac9bc5d51cc900d0cf2d5260416e91f01b82581ae
7
+ data.tar.gz: 12e6d698c9c448d03d94ec9f052ae0eb62389f7701c7093bd80668898bbbb04b140838c740cb9eb82908ece1f49a342051034372d8c75fe31904a72538a2a2c1
data/.gitignore CHANGED
@@ -17,4 +17,3 @@ test/version_tmp
17
17
  tmp
18
18
  vendor/ruby
19
19
  /vendor/
20
- .rubocop.yml
data/.rubocop.yml ADDED
@@ -0,0 +1,73 @@
1
+ Style/Documentation:
2
+ Enabled: false
3
+
4
+ Style/AlignParameters:
5
+ EnforcedStyle: with_fixed_indentation
6
+
7
+ Metrics/MethodLength:
8
+ CountComments: false # count full line comments?
9
+ Max: 16
10
+
11
+ Style/RegexpLiteral:
12
+ Enabled: false
13
+
14
+ Encoding:
15
+ Enabled: false
16
+
17
+ # MethodLength:
18
+ # CountComments: false
19
+ # Max: 30
20
+
21
+ #AlignHash:
22
+ # EnforcedColonStyle: table
23
+ # EnforcedHashRocketStyle: table
24
+
25
+ HashSyntax:
26
+ Enabled: true
27
+
28
+ Lambda:
29
+ Description: 'Use the new lambda literal syntax for single-line blocks.'
30
+ Enabled: true
31
+
32
+ LambdaCall:
33
+ Description: 'Use lambda.call(...) instead of lambda.(...).'
34
+ Enabled: true
35
+
36
+ LineLength:
37
+ Max: 80
38
+
39
+ AlignParameters:
40
+ Description: >
41
+ Align the parameters of a method call if they span more
42
+ than one line.
43
+ Enabled: false
44
+
45
+ # Checks formatting of special comments
46
+ CommentAnnotation:
47
+ Keywords:
48
+ - TODO
49
+ - FIXME
50
+ - OPTIMIZE
51
+ - HACK
52
+ - REVIEW
53
+
54
+ AllCops:
55
+ # Include gemspec and Rakefile
56
+ Include:
57
+ - '**/*.gemspec'
58
+ - '**/*.podspec'
59
+ - '**/*.jbuilder'
60
+ - '**/*.rake'
61
+ - '**/Gemfile'
62
+ - '**/Rakefile'
63
+ - '**/Capfile'
64
+ - '**/Guardfile'
65
+ - '**/Podfile'
66
+ - '**/Thorfile'
67
+ - '**/Vagrantfile'
68
+ Exclude:
69
+ - 'vendor/**/*'
70
+ - 'stubs/**/*'
71
+
72
+ Lint/Eval:
73
+ Enabled: false
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.1.2
1
+ 2.1.5
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ *0.1.13* (January 07, 2015)
2
+
3
+ * Upgrade to Ruby 2.x idiosyncracies, i.e., Fixnum already provides 'odd?', 'even?' methods, so I removed those, etc.
4
+ * Fix lots of Rubocop issues.
5
+
1
6
  *0.1.12* (December 22, 2014)
2
7
 
3
8
  * Add diff, apply_diff and apply_diff! instance methods for Hash
data/Gemfile CHANGED
@@ -1,2 +1,2 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
  gemspec
data/Guardfile CHANGED
@@ -1,11 +1,14 @@
1
- guard 'rspec', :cli => '--color --format doc', all_on_start: false, all_after_pass: false do
1
+ CLI = 'bundle exec rspec --format doc --color'
2
+
3
+ guard 'rspec', cmd: CLI, all_on_start: false, all_after_pass: false do
2
4
  watch(%r{^spec/.+_spec\.rb$})
3
5
  watch('spec/spec_helper.rb') { 'spec' }
4
6
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
5
7
  watch(%r{^lib/midwire_common/all.rb$}) { 'spec' }
6
8
  end
7
9
 
8
- guard :rubocop do
10
+ guard :rubocop, cli: ['-D'] do
9
11
  watch(%r{.+\.rb$})
12
+ watch(%r{.+\.rake$})
10
13
  watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
11
14
  end
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Midwire Common Gem
2
2
 
3
- **Version: 0.1.12**
3
+ **Version: 0.1.13**
4
4
 
5
5
  A handy Ruby library for Midwire development
6
6
 
data/Rakefile CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
3
- Dir["lib/tasks/**/*.rake"].sort.each { |ext| load ext }
2
+ require 'bundler/gem_tasks'
3
+ Dir['lib/tasks/**/*.rake'].sort.each { |ext| load ext }
4
4
 
5
5
  # RSpec Tasks
6
6
  require 'rspec/core/rake_task'
7
7
  RSpec::Core::RakeTask.new('spec')
8
- task :default => :spec
8
+ task default: :spec
@@ -1,5 +1,5 @@
1
1
  require 'pathname'
2
- require "midwire_common/version"
2
+ require 'midwire_common/version'
3
3
 
4
4
  module Midwire
5
5
  autoload :RakeHelper, 'midwire_common/rake_helper'
@@ -14,23 +14,26 @@ class Array
14
14
  end
15
15
 
16
16
  def sort_case_insensitive
17
- self.sort_by { |x| x.downcase }
17
+ sort_by(&:downcase)
18
18
  end
19
19
 
20
20
  def each_with_first_last(first_code, main_code, last_code)
21
21
  each_with_index do |item, i|
22
22
  case i
23
- when 0 then first_code.call(item)
24
- when size - 1 then last_code.call(item)
25
- else main_code.call(item)
23
+ when 0 then first_code.call(item)
24
+ when size - 1 then last_code.call(item)
25
+ else main_code.call(item)
26
26
  end
27
27
  end
28
28
  end
29
29
 
30
30
  # Binary search returns index if found or nil
31
+ # rubocop:disable Metrics/LineLength
32
+ # rubocop:disable Style/SpaceAfterComma, Style/SpaceAroundOperators, Style/SpaceAfterColon, Style/SpaceAfterSemicolon, Style/Semicolon
31
33
  def bsearch(e, l = 0, u = length - 1)
32
34
  return if l>u;m=(l+u)/2;e<self[m]?u=m-1:l=m+1;e==self[m]?m:bsearch(e,l,u)
33
35
  end
36
+ # rubocop:enable Style/SpaceAfterComma, Style/SpaceAroundOperators, Style/SpaceAfterColon, Style/SpaceAfterSemicolon, Style/Semicolon
34
37
 
35
38
  # Make a string from a multi-dimensional array :
36
39
  # 1 dimension :
@@ -45,4 +48,5 @@ class Array
45
48
  (a.respond_to?(:superjoin) && rest.length > 0) ? a.superjoin(*rest) : a.to_s
46
49
  end.join(d[1]) + d[2]
47
50
  end
51
+ # rubocop:enable Metrics/LineLength
48
52
  end
@@ -25,7 +25,7 @@ module MidwireCommon
25
25
  private
26
26
 
27
27
  def ensure_cache_dir
28
- FileUtils::mkdir_p(@cache_dir) unless File.exist?(@cache_dir)
28
+ FileUtils.mkdir_p(@cache_dir) unless File.exist?(@cache_dir)
29
29
  end
30
30
 
31
31
  def normalize_filename(filename)
@@ -1,7 +1,12 @@
1
1
  module Enumerable
2
2
  # Sort by frequency of occurrence
3
+ # rubocop:disable Style/EachWithObject
3
4
  def sort_by_frequency
4
- histogram = inject(Hash.new(0)) {|hash, x| hash[x] += 1; hash}
5
- sort_by {|x| [histogram[x] * -1, x]}
5
+ histogram = inject(Hash.new(0)) do |hash, x|
6
+ hash[x] += 1
7
+ hash
8
+ end
9
+ sort_by { |x| [histogram[x] * -1, x] }
6
10
  end
11
+ # rubocop:enable Style/EachWithObject
7
12
  end
@@ -1,2 +1 @@
1
1
  require 'midwire_common/file/stat'
2
-
@@ -1,9 +1,9 @@
1
1
  class File
2
2
  class Stat
3
3
  def self.device_name(file)
4
- Dir['/dev/*'].inject({}) { |h, v|
4
+ Dir['/dev/*'].inject({}) do |h, v|
5
5
  h.update(File.stat(v).rdev => v)
6
- }.values_at(File.stat(file).dev).first || nil
6
+ end.values_at(File.stat(file).dev).first || nil
7
7
  end
8
8
  end
9
9
  end
@@ -1,18 +1,22 @@
1
1
  class Fixnum
2
2
  # Format a number with commas and a decimal point
3
+ # rubocop:disable Style/PerlBackrefs
3
4
  def commify
4
5
  to_s =~ /([^\.]*)(\..*)?/
5
- int, dec = $1.reverse, $2 ? $2 : ""
6
+ int, dec = $1.reverse, $2 ? $2 : ''
6
7
  while int.gsub!(/(,|\.|^)(\d{3})(\d)/, '\1\2,\3')
7
8
  end
8
9
  int.reverse + dec
9
10
  end
11
+ # rubocop:enable Style/PerlBackrefs
10
12
 
11
- def is_even?
12
- self % 2 == 0
13
- end
13
+ # Ruby 2 has its own methods for these
14
14
 
15
- def is_odd?
16
- !is_even?
17
- end
15
+ # def is_even?
16
+ # self % 2 == 0
17
+ # end
18
+
19
+ # def is_odd?
20
+ # !is_even?
21
+ # end
18
22
  end
@@ -1,10 +1,12 @@
1
1
  class Float
2
2
  # Format a number with commas and a decimal point
3
+ # rubocop:disable Style/PerlBackrefs
3
4
  def commify
4
5
  to_s =~ /([^\.]*)(\..*)?/
5
- int, dec = $1.reverse, $2 ? $2 : ""
6
+ int, dec = $1.reverse, $2 ? $2 : ''
6
7
  while int.gsub!(/(,|\.|^)(\d{3})(\d)/, '\1\2,\3')
7
8
  end
8
9
  int.reverse + dec
9
10
  end
11
+ # rubocop:enable Style/PerlBackrefs
10
12
  end
@@ -1,15 +1,18 @@
1
1
  class Hash
2
+ # rubocop:disable Style/EachWithObject
2
3
  def grep(pattern)
3
- inject([]) do |res, kv|
4
- res << kv if kv[0] =~ pattern or kv[1] =~ pattern
4
+ reduce([]) do |res, kv|
5
+ res << kv if kv[0] =~ pattern || kv[1] =~ pattern
5
6
  res
6
7
  end
7
8
  end
9
+ # rubocop:enable Style/EachWithObject
8
10
 
11
+ # rubocop:disable Metrics/AbcSize, Style/EachWithObject
9
12
  def diff(other)
10
- (self.keys + other.keys).uniq.inject({}) do |memo, key|
13
+ (keys + other.keys).uniq.inject({}) do |memo, key|
11
14
  unless self[key] == other[key]
12
- if self[key].kind_of?(Hash) && other[key].kind_of?(Hash)
15
+ if self[key].is_a?(Hash) && other[key].is_a?(Hash)
13
16
  memo[key] = self[key].diff(other[key])
14
17
  else
15
18
  memo[key] = [self[key], other[key]]
@@ -18,92 +21,91 @@ class Hash
18
21
  memo
19
22
  end
20
23
  end
24
+ # rubocop:enable Metrics/AbcSize, Style/EachWithObject
21
25
 
26
+ # TODO: Spec/Test this method
22
27
  def apply_diff!(changes, direction = :right)
23
28
  path = [[self, changes]]
24
29
  pos, local_changes = path.pop
25
30
  while local_changes
26
- local_changes.each_pair {|key, change|
27
- if change.kind_of?(Array)
31
+ local_changes.each_pair do |key, change|
32
+ if change.is_a?(Array)
28
33
  pos[key] = (direction == :right) ? change[1] : change[0]
29
34
  else
30
35
  path.push([pos[key], change])
31
36
  end
32
- }
37
+ end
33
38
  pos, local_changes = path.pop
34
39
  end
35
40
  self
36
41
  end
37
42
 
43
+ # TODO: Spec/Test this method
44
+ # rubocop:disable Metrics/AbcSize
38
45
  def apply_diff(changes, direction = :right)
39
- cloned = self.clone
46
+ cloned = clone
40
47
  path = [[cloned, changes]]
41
48
  pos, local_changes = path.pop
42
49
  while local_changes
43
- local_changes.each_pair {|key, change|
44
- if change.kind_of?(Array)
50
+ local_changes.each_pair do |key, change|
51
+ if change.is_a?(Array)
45
52
  pos[key] = (direction == :right) ? change[1] : change[0]
46
53
  else
47
54
  pos[key] = pos[key].clone
48
55
  path.push([pos[key], change])
49
56
  end
50
- }
57
+ end
51
58
  pos, local_changes = path.pop
52
59
  end
53
60
  cloned
54
61
  end
62
+ # rubocop:enable Metrics/AbcSize
55
63
 
56
64
  # Usage { :a => 1, :b => 2, :c => 3}.except(:a) -> { :b => 2, :c => 3}
57
65
  def except(*keys)
58
- self.reject { |k,v|
59
- keys.flatten.include? k.to_sym
60
- }
66
+ reject { |k, _v| keys.flatten.include? k.to_sym }
61
67
  end
62
68
 
63
69
  # Usage { :a => 1, :b => 2, :c => 3}.only(:a) -> {:a => 1}
64
70
  def only(*keys)
65
- self.dup.reject { |k,v|
66
- !keys.flatten.include? k.to_sym
67
- }
71
+ dup.reject { |k, _v| !keys.flatten.include? k.to_sym }
68
72
  end
69
73
 
70
74
  # Usage h = { :a => 1, :b => 2, :c => 3}.pop(:a) -> {:a => 1}
71
75
  # ... and now h == { :b => 2, :c => 3}
72
76
  def pop(*keys)
73
- r = self.reject { |k,v|
74
- !keys.flatten.include? k.to_sym
75
- }
76
- self.reject! { |k,v|
77
- keys.flatten.include? k.to_sym
78
- }
77
+ r = reject { |k, _v| !keys.flatten.include? k.to_sym }
78
+ self.reject! { |k, _v| keys.flatten.include? k.to_sym }
79
79
  r
80
80
  end
81
81
 
82
82
  # Usage { :a => 1, :b => 2, :c => 3}.to_query_string #= a=1&b=2&c=3
83
83
  def to_query_string
84
84
  require 'uri'
85
- collect do |k, v|
85
+ map do |k, v|
86
86
  "#{URI.encode(k.to_s)}=#{URI.encode(v.to_s)}"
87
- end.join("&")
87
+ end.join('&')
88
88
  end
89
89
 
90
+ # rubocop:disable Style/RescueModifier
90
91
  def symbolize_keys!
91
92
  keys.each do |key|
92
93
  self[(key.to_sym rescue key) || key] = delete(key)
93
94
  end
94
95
  self
95
96
  end
97
+ # rubocop:enable Style/RescueModifier
96
98
 
97
99
  def symbolize_keys
98
100
  dup.symbolize_keys!
99
101
  end
100
102
 
103
+ # Recursively change keys to symbols
104
+ # Modifies the hash keys in place.
101
105
  def recursively_symbolize_keys!
102
106
  self.symbolize_keys!
103
- self.values.each do |v|
104
- if v.is_a? Hash
105
- v.recursively_symbolize_keys!
106
- end
107
+ values.each do |v|
108
+ v.recursively_symbolize_keys! if v.is_a? Hash
107
109
  end
108
110
  self
109
111
  end
@@ -3,6 +3,7 @@ require 'midwire_common'
3
3
 
4
4
  module MidwireCommon
5
5
  # RakeHelper helps to automate gem release and versioning tasks
6
+ # rubocop:disable Metrics/ClassLength
6
7
  class RakeHelper
7
8
  include Rake::DSL if defined? Rake::DSL
8
9
 
@@ -118,7 +119,11 @@ module MidwireCommon
118
119
  |Running `#{cmd}' failed.
119
120
  | Run this command directly for more detailed output.
120
121
  string
121
- code == 0 ? out : raise(out.empty? ? msg : out)
122
+ if code == 0
123
+ out
124
+ else
125
+ fail(out.empty? ? msg : out)
126
+ end
122
127
  end
123
128
 
124
129
  def sh_with_code(cmd, &block)
@@ -127,11 +132,10 @@ module MidwireCommon
127
132
  Bundler.ui.debug(cmd)
128
133
  Dir.chdir(base) do
129
134
  outbuf = `#{cmd}`
130
- if $? == 0
131
- block.call(outbuf) if block
132
- end
135
+ block.call(outbuf) if block if $CHILD_STATUS == 0
133
136
  end
134
- [outbuf, $?]
137
+ [outbuf, $CHILD_STATUS]
135
138
  end
136
139
  end
140
+ # rubocop:enable Metrics/ClassLength
137
141
  end