midwire_common 0.1.16 → 0.1.17

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: 8b3ea3a72051d5ddbd9d134ead5755a51d33e921
4
- data.tar.gz: 888d58a8a4f03a580ed33026a27d71d6d5b86866
3
+ metadata.gz: 70e04bafc57480ef9e1be8a862de1884dbdb49e9
4
+ data.tar.gz: e9d8fdae68ba0a603013973be8ed0ba435fe47a0
5
5
  SHA512:
6
- metadata.gz: 2fedc21d6d7bdec9e85588f54fb0b85498110cb4cf9d1745031f1ed119599e587c078bd559d26aeccd2c02be6152fb6ca2097110958e40772116eeb01f758812
7
- data.tar.gz: 0d87037520b53b04b8f48000568196ff5c269053de77a77ef86b2690479a3a5019a7042a1118634c3f649091ae18a60f0c1a9aa99bce2e3a753c7ec590d40377
6
+ metadata.gz: 78c9f3ca123983e09bd591b41340eb101be591c6c5eb0b715a3ba36a49c65278af66f60dd3230cd3ce784233b688c3f0c2fc900c6a247e4055f7a0966c7a9786
7
+ data.tar.gz: 6b85526806618d3d4959790a879f69ba8854baa82056aa57111d5308b6bc52f6e1605ea96de78bdd3a0b645e5c634a32a2675b888607553ee04fef9e3cff1778
data/CHANGELOG CHANGED
@@ -1,3 +1,14 @@
1
+ *0.1.17* (February 01, 2016)
2
+
3
+ * Fix some redundant self references in string.rb
4
+ * Simplify the email regex in string.rb
5
+ * Add 'snakerirze' and 'camelize' methods in string.rb
6
+ * Fix `version:bump` rake task to use single-quote string for VERSION.
7
+ * Remove 'pry' dependency for 'version.rake'
8
+ * Upgrade rubocop version
9
+ * Update the README.
10
+ * Add some specs to cover changes.
11
+
1
12
  *0.1.16* (October 13, 2015)
2
13
 
3
14
  * Add BottomlessHash
data/README.md CHANGED
@@ -1,14 +1,14 @@
1
1
  # Midwire Common Gem
2
2
 
3
- **Version: 0.1.16**
3
+ **Version: 0.1.17**
4
4
 
5
- A handy Ruby library for Midwire development
5
+ A handy, light-weight Ruby library for Midwire development
6
6
 
7
7
  ## Installation
8
8
 
9
9
  Add this line to your application's Gemfile:
10
10
 
11
- gem 'midwire_common', :require => 'midwire_common'
11
+ gem 'midwire_common'
12
12
 
13
13
  And then execute:
14
14
 
@@ -32,12 +32,18 @@ To use the standard class extensions you must include the individual files or 'm
32
32
  To use the rake tasks simply `load` that rake file from within your main `Rakefile`:
33
33
 
34
34
  begin
35
- require "midwire_common/rake_tasks"
35
+ require 'midwire_common/rake_tasks'
36
36
  rescue Exception => e
37
37
  puts ">>> You have to run that under 'bundle exec'"
38
38
  exit
39
39
  end
40
40
 
41
+ Create a `CHANGELOG` file for your project.
42
+
43
+ touch CHANGELOG
44
+
45
+ The `rake version:*` tasks will prompt for CHANGELOG entries. Simply type them in and hit <CTRL>-d on a blank line when finished.
46
+
41
47
  ## Contributing
42
48
 
43
49
  1. Fork it
@@ -1,3 +1,4 @@
1
+ # A light-weight super String class
1
2
  class String
2
3
  class << self
3
4
  def random(count = 6, ranges = [('a'..'z'), ('A'..'Z'), ('0'..'9')])
@@ -20,7 +21,7 @@ class String
20
21
  end
21
22
 
22
23
  def left_trim!
23
- self.gsub!(/^[\t\s]+/, '') || ''
24
+ gsub!(/^[\t\s]+/, '') || ''
24
25
  end
25
26
 
26
27
  def right_trim
@@ -29,7 +30,7 @@ class String
29
30
  end
30
31
 
31
32
  def right_trim!
32
- self.gsub!(/[\t\s]+$/, '') || ''
33
+ gsub!(/[\t\s]+$/, '') || ''
33
34
  end
34
35
 
35
36
  def trim
@@ -39,7 +40,7 @@ class String
39
40
 
40
41
  def trim!
41
42
  # remove leading and trailing whitespace
42
- self.left_trim!.right_trim! || ''
43
+ left_trim!.right_trim! || ''
43
44
  end
44
45
 
45
46
  # html = <<-stop.here_with_pipe(delimeter="\n")
@@ -58,51 +59,11 @@ class String
58
59
  (self =~ regex) == 0 ? true : false
59
60
  end
60
61
 
61
- # rubocop:disable Metrics/LineLength
62
62
  def email_address?
63
- # //Email address
64
- # //Use this version to seek out email addresses in random documents and texts.
65
- # //Does not match email addresses using an IP address instead of a domain name.
66
- # //Does not match email addresses on new-fangled top-level domains with more than 4 letters such as .museum.
67
- # //Including these increases the risk of false positives when applying the regex to random documents.
68
- # '\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b'
69
- #
70
- # //Email address (anchored)
71
- # //Use this anchored version to check if a valid email address was entered.
72
- # //Does not match email addresses using an IP address instead of a domain name.
73
- # //Does not match email addresses on new-fangled top-level domains with more than 4 letters such as .museum.
74
- # //Requires the "case insensitive" option to be ON.
75
- # '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$'
76
- #
77
- # //Email address (anchored; no consecutive dots)
78
- # //Use this anchored version to check if a valid email address was entered.
79
- # //Improves on the original email address regex by excluding addresses with consecutive dots such as john@aol...com
80
- # //Does not match email addresses using an IP address instead of a domain name.
81
- # //Does not match email addresses on new-fangled top-level domains with more than 4 letters such as .museum.
82
- # //Including these increases the risk of false positives when applying the regex to random documents.
83
- # '^[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$'
84
- #
85
- # //Email address (no consecutive dots)
86
- # //Use this version to seek out email addresses in random documents and texts.
87
- # //Improves on the original email address regex by excluding addresses with consecutive dots such as john@aol...com
88
- # //Does not match email addresses using an IP address instead of a domain name.
89
- # //Does not match email addresses on new-fangled top-level domains with more than 4 letters such as .museum.
90
- # //Including these increases the risk of false positives when applying the regex to random documents.
91
- # '\b[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}\b'
92
- #
93
- # //Email address (specific TLDs)
94
- # //Does not match email addresses using an IP address instead of a domain name.
95
- # //Matches all country code top level domains, and specific common top level domains.
96
- # '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|biz|info|name|aero|biz|info|jobs|museum|name)$'
97
- #
98
- # //Email address: Replace with HTML link
99
- # '\b(?:mailto:)?([A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4})\b'
100
-
101
- email_regex = %r{^[A-Z0-9._%-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|biz|info|name|aero|jobs|museum|edu|pro)$}xi # Case insensitive
63
+ email_regex = /\A([\w+\-].?)+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
102
64
 
103
65
  (self =~ email_regex) == 0 ? true : false
104
66
  end
105
- # rubocop:enable Metrics/LineLength
106
67
 
107
68
  def zipcode?
108
69
  self =~ %r{^(\d{5})(-\d{4})?$}x ? true : false
@@ -126,7 +87,7 @@ class String
126
87
  end
127
88
 
128
89
  def sanitize!
129
- self.gsub!(/[^a-z0-9,! \-\(\)\:\;\.\&\$]+/i, '')
90
+ gsub!(/[^a-z0-9,! \-\(\)\:\;\.\&\$]+/i, '')
130
91
  end
131
92
 
132
93
  def shorten(maxcount = 30)
@@ -151,4 +112,16 @@ class String
151
112
  def escape_double_quotes
152
113
  gsub(/["]/, '\\\\\"')
153
114
  end
115
+
116
+ def snakerize
117
+ gsub(/::/, '/')
118
+ .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
119
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
120
+ .tr('-', '_')
121
+ .downcase
122
+ end
123
+
124
+ def camelize
125
+ gsub(/\/(.?)/) { '::' + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
126
+ end
154
127
  end
@@ -1,6 +1,6 @@
1
1
  original_verbosity = $VERBOSE
2
2
  $VERBOSE = nil
3
3
  module MidwireCommon
4
- VERSION = "0.1.16"
4
+ VERSION = '0.1.17'
5
5
  end
6
6
  $VERBOSE = original_verbosity
@@ -2,7 +2,6 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'readline'
4
4
  require 'fileutils'
5
- require 'pry'
6
5
  require 'midwire_common/string'
7
6
 
8
7
  module Bundler
@@ -47,10 +46,8 @@ namespace :version do
47
46
  Rake::Task['version:changes'].invoke
48
47
  end
49
48
 
50
- # rubocop:disable Style/Blocks
51
49
  desc 'Alias for :bump_patch'
52
50
  task bump: :bump_patch do; end
53
- # rubocop:enable Style/Blocks
54
51
 
55
52
  desc 'Increment the minor version and write changes to the changelog'
56
53
  task :bump_minor do
@@ -81,9 +78,9 @@ namespace :version do
81
78
  end
82
79
 
83
80
  def module_name
84
- if PROJECT_NAME.match(/-/)
81
+ if PROJECT_NAME =~ /-/
85
82
  PROJECT_NAME.split('-').map(&:capitalize).join('::')
86
- elsif PROJECT_NAME.match(/_/)
83
+ elsif PROJECT_NAME =~ /_/
87
84
  PROJECT_NAME.split('_').map(&:capitalize).join
88
85
  else
89
86
  PROJECT_NAME.capitalize
@@ -98,7 +95,7 @@ namespace :version do
98
95
 
99
96
  def write_version(version_array)
100
97
  version = version_array.join('.')
101
- new_version = %(VERSION = "#{version}")
98
+ new_version = %( VERSION = '#{version}')
102
99
  lines = File.readlines(version_file_path)
103
100
  File.open(version_file_path, 'w') do |f|
104
101
  lines.each do |line|
@@ -115,7 +112,7 @@ namespace :version do
115
112
  # read current changelog
116
113
  old = File.read("#{PROJECT_ROOT}/CHANGELOG").to_s.chomp
117
114
  text_array.push(old)
118
- File.open("#{PROJECT_ROOT}/CHANGELOG", 'w') do |f|
115
+ File.open("#{PROJECT_ROOT}/CHANGELOG", 'w') do |f|
119
116
  text_array.flatten.each do |line|
120
117
  f.puts(line)
121
118
  end
@@ -158,7 +155,7 @@ namespace :version do
158
155
  return true unless current_branch == 'master'
159
156
  puts(branch_warning_message)
160
157
  while (line = $stdin.gets.chomp)
161
- return true if line.match(/[yY]/)
158
+ return true if line =~ /[yY]/
162
159
  puts 'Aborting version bump.'
163
160
  return false
164
161
  end
@@ -21,9 +21,9 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency 'guard-bundler', '~> 2.1'
22
22
  spec.add_development_dependency 'guard-rspec', '~> 4.5'
23
23
  spec.add_development_dependency 'guard-rubocop', '~> 1.2'
24
- spec.add_development_dependency 'pry', '~> 0.10'
24
+ spec.add_development_dependency 'pry-nav', '~> 0.2'
25
25
  spec.add_development_dependency 'rake', '~> 10.1'
26
- spec.add_development_dependency 'rubocop', '~> 0.28'
26
+ spec.add_development_dependency 'rubocop', '~> 0.36'
27
27
 
28
28
  spec.add_dependency 'thor', '~> 0.19'
29
29
  end
@@ -3,9 +3,9 @@
3
3
  # rubocop:disable Metrics/LineLength
4
4
  require 'spec_helper'
5
5
 
6
- describe String do
6
+ RSpec.describe String do
7
7
  it 'is a String' do
8
- String.new.should be_a String
8
+ ''.should be_a String
9
9
  end
10
10
 
11
11
  it 'generates a random string' do
@@ -61,7 +61,7 @@ describe String do
61
61
  |<script type="text/javascript">
62
62
  |</script>
63
63
  STOP
64
- html.should == "<!-- Begin: comment --> <script type=\"text/javascript\"> </script>"
64
+ html.should == '<!-- Begin: comment --> <script type="text/javascript"> </script>'
65
65
  end
66
66
 
67
67
  it 'here_with_pipe - with linefeeds' do
@@ -79,7 +79,7 @@ describe String do
79
79
  |<script type="text/javascript">
80
80
  |</script>
81
81
  STOP
82
- html.should == "<!-- Begin: comment --><script type=\"text/javascript\"></script>"
82
+ html.should == '<!-- Begin: comment --><script type="text/javascript"></script>'
83
83
  end
84
84
 
85
85
  it 'format_phone returns a formatted phone number string' do
@@ -124,7 +124,7 @@ describe String do
124
124
 
125
125
  it 'escapes double quotes' do
126
126
  expect('this is a "test"'.escape_double_quotes)
127
- .to eq("this is a \\\\\"test\\\\\"")
127
+ .to eq('this is a \\\\"test\\\\"')
128
128
  end
129
129
  end
130
130
  end
@@ -141,7 +141,6 @@ describe String do
141
141
  it 'knows if it is an email address or not' do
142
142
  'abcd_9191'.email_address?.should eq(false)
143
143
  'abcd@9191'.email_address?.should eq(false)
144
- 'abcd@9191.poop'.email_address?.should eq(false)
145
144
  'abcd@9191.info'.email_address?.should eq(true)
146
145
  'abcd-asdf@9191.com'.email_address?.should eq(true)
147
146
  'abcd_asdf@9191.com'.email_address?.should eq(true)
@@ -170,5 +169,25 @@ describe String do
170
169
  ' 12341. '.numeric?.should eq(false)
171
170
  end
172
171
  end
172
+
173
+ context '.snakerize' do
174
+ it 'changes CamelCased string to snake_cased' do
175
+ expect('CamelCased'.snakerize).to eq('camel_cased')
176
+ end
177
+
178
+ it 'handles doulbe-colon' do
179
+ expect('Camel::CasedTwo'.snakerize).to eq('camel/cased_two')
180
+ end
181
+ end
182
+
183
+ context '.camelize' do
184
+ it 'changes snake cased string to camelized' do
185
+ expect('camel_cased'.camelize).to eq('CamelCased')
186
+ end
187
+
188
+ it 'handles slash' do
189
+ expect('camel/cased_two'.camelize).to eq('Camel::CasedTwo')
190
+ end
191
+ end
173
192
  end
174
193
  # rubocop:enable Metrics/LineLength
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: midwire_common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.16
4
+ version: 0.1.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Blackburn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-13 00:00:00.000000000 Z
11
+ date: 2016-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -95,19 +95,19 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.2'
97
97
  - !ruby/object:Gem::Dependency
98
- name: pry
98
+ name: pry-nav
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0.10'
103
+ version: '0.2'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0.10'
110
+ version: '0.2'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rake
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '0.28'
131
+ version: '0.36'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '0.28'
138
+ version: '0.36'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: thor
141
141
  requirement: !ruby/object:Gem::Requirement