midwire_common 0.1.12 → 0.1.13

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