corelib 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -8,6 +8,7 @@ InstalledFiles
8
8
  _yardoc
9
9
  coverage
10
10
  doc/
11
+ .idea/
11
12
  lib/bundler/man
12
13
  pkg
13
14
  rdoc
File without changes
@@ -1,8 +1,16 @@
1
+ #See bottom of http://stackoverflow.com/questions/4527992/require-all-files-in-sub-directory
2
+ #Dir[File.join(".", "**/*.rb")].each { |f| require f unless f[/^\.\/spec\//]}
3
+
4
+ #Old Way
1
5
  require "corelib/version"
2
6
  require "corelib/array/alias"
3
7
  require "corelib/array/core"
8
+ require "corelib/array/helpers"
4
9
  require "corelib/array/math"
5
10
  require "corelib/boolean/true"
6
11
  require "corelib/boolean/false"
12
+ require "corelib/hash/core"
13
+ require "corelib/nil/core"
14
+ require "corelib/object/core"
7
15
  require "corelib/numeric/core"
8
16
  require "corelib/string/core"
@@ -1,4 +1,29 @@
1
1
  class Array
2
2
 
3
+ def to_yes_no(options={})
4
+ self.collect {|e| e.to_yes_no(options)}
5
+ end
6
+
7
+ def add_blank_option(options={})
8
+ doit = options.fetch(:doit, true)
9
+ value = options.fetch(:value, 0)
10
+ label = options.fetch(:label, "")
11
+ self.insert(0, [label, value]) if doit
12
+ self
13
+ end
14
+
15
+ #This method iterates over the Array as normal #each method. For each iteration
16
+ #set two variables in the block, |item, flag|. item will be set tot he current item
17
+ #in the iteration; flag will be set to "false" on all iterations except the last iteration
18
+ def each_with_end_flag
19
+ my_size = self.size
20
+ self.each_with_index do |item, index|
21
+ index + 1 == my_size ? yield(item, true) : yield(item, false)
22
+ end
23
+ end
24
+
25
+ def not_empty?
26
+ !self.empty?
27
+ end
3
28
 
4
29
  end
@@ -0,0 +1,64 @@
1
+ class Array
2
+
3
+ def options_label_for(value)
4
+ sub = self.find {|each| each[1] == value}
5
+ return nil if sub.nil?
6
+ sub[0]
7
+ end
8
+
9
+ def self.us_state_options(options={})
10
+ abbrev = options.fetch(:abbrev, false)
11
+ options[:abbrev] = abbrev #In case abbrev is not in options, set it to the default so sub routines can access
12
+
13
+ list = abbrev ? us_state_options_abbrev_raw : us_state_options_raw
14
+ list.format_raw_us_state_list(options)
15
+ end
16
+
17
+ def self.us_state_options_raw
18
+ [['Alabama', 'AL'], ['Alaska', 'AK'], ['Arizona', 'AZ'], ['Arkansas', 'AR'], ['California', 'CA'], ['Colorado', 'CO'],
19
+ ['Connecticut', 'CT'], ['D.C.', 'DC'], ['Delaware', 'DE'], ['Florida', 'FL'], ['Georgia', 'GA'], ['Hawaii', 'HI'], ['Idaho', 'ID'],
20
+ ['Illinois', 'IL'], ['Indiana', 'IN'], ['Iowa', 'IA'], ['Kansas', 'KS'], ['Kentucky', 'KY'], ['Louisiana', 'LA'],
21
+ ['Maine', 'ME'], ['Maryland', 'MD'], ['Massachusetts', 'MA'], ['Michigan', 'MI'], ['Minnesota', 'MN'], ['Mississippi', 'MS'],
22
+ ['Missouri', 'MO'], ['Montana', 'MT'], ['Nebraska', 'NE'], ['Nevada', 'NV'], ['New Hampshire', 'NH'], ['New Jersey', 'NJ'],
23
+ ['New Mexico', 'NM'], ['New York', 'NY'], ['North Carolina', 'NC'], ['North Dakota', 'ND'], ['Ohio', 'OH'], ['Oklahoma', 'OK'],
24
+ ['Oregon', 'OR'], ['Pennsylvania', 'PA'], ['Rhode Island', 'RI'], ['South Carolina', 'SC'], ['South Dakota', 'SD'],
25
+ ['Tennessee', 'TN'], ['Texas', 'TX'], ['Utah', 'UT'], ['Vermont', 'VT'], ['Virginia', 'VA'], ['Washington', 'WA'],
26
+ ['West Virginia', 'WV'], ['Wisconsin', 'WI'], ['Wyoming', 'WY']]
27
+ end
28
+
29
+ def self.us_state_options_abbrev_raw
30
+ [['AL', 'AL'], ['AK', 'AK'], ['AZ', 'AZ'], ['AR', 'AR'], ['CA', 'CA'], ['CO', 'CO'],
31
+ ['CT', 'CT'], ['DC', 'DC'], ['DE', 'DE'], ['FL', 'FL'], ['GA', 'GA'], ['HI', 'HI'], ['ID', 'ID'],
32
+ ['IL', 'IL'], ['IN', 'IN'], ['IA', 'IA'], ['KS', 'KS'], ['KY', 'KY'], ['LA', 'LA'],
33
+ ['ME', 'ME'], ['MD', 'MD'], ['MA', 'MA'], ['MI', 'MI'], ['MN', 'MN'], ['MS', 'MS'],
34
+ ['MO', 'MO'], ['MT', 'MT'], ['NE', 'NE'], ['NV', 'NV'], ['NH', 'NH'], ['NJ', 'NJ'],
35
+ ['NM', 'NM'], ['NY', 'NY'], ['NC', 'NC'], ['ND', 'ND'], ['OH', 'OH'], ['OK', 'OK'],
36
+ ['OR', 'OR'], ['PA', 'PA'], ['RI', 'RI'], ['SC', 'SC'], ['SD', 'SD'],
37
+ ['TN', 'TN'], ['TX', 'TX'], ['UT', 'UT'], ['VT', 'VT'], ['VA', 'VA'], ['WA', 'WA'],
38
+ ['WV', 'WV'], ['WI', 'WI'], ['WY', 'WY'],]
39
+ end
40
+
41
+ def format_raw_us_state_list(options={})
42
+ add_blank = options.fetch(:blank, "true")
43
+ blank_value = options.fetch(:blank_value, 0)
44
+ blank_label = options.fetch(:blank_label, "")
45
+ blank_position = options.fetch(:blank_position, 0)
46
+ self.insert(blank_position, [blank_label, blank_value]) if add_blank
47
+ change_us_state_list_label_case(options)
48
+ self
49
+ end
50
+
51
+ private
52
+
53
+ def change_us_state_list_label_case(options)
54
+ abbrev = options.fetch(:abbrev)
55
+ label_format = abbrev ? options.fetch(:format, "Up") : options.fetch(:format, "Cap")
56
+ return self if (label_format == "Up") and abbrev
57
+ return self if (label_format == "Cap") and !abbrev
58
+
59
+ self.each {|opt| opt[0].upcase!} if label_format == "Up"
60
+ self.each {|opt| opt[0].capitalize!} if label_format == "Cap"
61
+ self.each {|opt| opt[0].downcase!} if label_format == "Down"
62
+ end
63
+
64
+ end
@@ -1,9 +1,17 @@
1
1
  class FalseClass
2
2
 
3
- def to_yes_no(format="C")
4
- return "no" if format == "L"
5
- return "NO" if format == "U"
6
- "No"
3
+ #Cap, Down, Up
4
+ def to_yes_no(options={})
5
+ value = options.fetch(:if_no, "No")
6
+ FalseClass.format_to_yes_no(value, options)
7
7
  end
8
8
 
9
+ def self.format_to_yes_no(value, options)
10
+ return value if !options.has_key?(:format) #If format is unspecified, use the default
11
+ format = options[:format]
12
+ return value.upcase if format == "Up"
13
+ return value.downcase if format == "Down"
14
+ value.capitalize #format has to be capital at this point (or an invalid format, so we will assume capital)
15
+ end
16
+
9
17
  end
@@ -1,10 +1,9 @@
1
1
  class TrueClass
2
2
 
3
3
  #format accepts (C-Capitalized, U-Uppercase, L-Lowercase)
4
- def to_yes_no(format="C")
5
- return "yes" if format == "L"
6
- return "YES" if format == "U"
7
- "Yes"
8
- end
4
+ def to_yes_no(options={})
5
+ value = options.fetch(:if_yes, "Yes")
6
+ FalseClass.format_to_yes_no(value, options)
7
+ end
9
8
 
10
9
  end
@@ -0,0 +1,17 @@
1
+ class Hash
2
+
3
+ def not_empty?
4
+ !self.empty?
5
+ end
6
+
7
+ #This method iterates over the Array as normal #each method. For each iteration
8
+ #set two variables in the block, |item, flag|. item will be set tot he current item
9
+ #in the iteration; flag will be set to "false" on all iterations except the last iteration
10
+ def each_with_end_flag
11
+ my_size = self.size
12
+ self.each_with_index do |item, index|
13
+ index + 1 == my_size ? yield(item, true) : yield(item, false)
14
+ end
15
+ end
16
+
17
+ end
@@ -0,0 +1,11 @@
1
+ class NilClass
2
+
3
+ def to_yes_no(options={})
4
+ options.fetch(:if_nil, "")
5
+ end
6
+
7
+ def not_nil?
8
+ false
9
+ end
10
+
11
+ end
@@ -1,8 +1,8 @@
1
1
  class Numeric
2
2
 
3
3
  #format accepts (C-Capitalized, U-Uppercase, L-Lowercase)
4
- def to_yes_no(format="C")
5
- (self == 1 || self == 1.0).to_yes_no(format)
4
+ def to_yes_no(options={})
5
+ (self == 1 || self == 1.0).to_yes_no(options)
6
6
  end
7
7
 
8
8
  #Assumes numeric value is in seconds
@@ -0,0 +1,7 @@
1
+ class Object
2
+
3
+ def not_nil?
4
+ true
5
+ end
6
+
7
+ end
@@ -1,23 +1,63 @@
1
1
  class String
2
2
 
3
- #format accepts (C-Capitalized, U-Uppercase, L-Lowercase)
4
- def to_yes_no(format="C", strict=false)
5
- self.to_bool(strict).to_yes_no(format)
3
+ #Does the same thing as String#contact, but allows a separator to be inserted between the
4
+ #two strings.
5
+ def concat_with(str, separator="")
6
+ return self if str.nil? or str.empty?
7
+ return self.concat(str) if self.empty?
8
+ self.concat(separator) if !separator.empty?
9
+ self.concat(str)
10
+ end
11
+
12
+ def to_yes_no(options={})
13
+ self.to_bool(options).to_yes_no(options)
6
14
  end
7
15
 
8
16
  #true will always be returned if we can clearly match one of the true cases
9
17
  #In unstrict mode, the string is assumed false if we cannot match true
10
18
  #In strict mode, the string must clearly match a false condition to return false
11
19
  #otherise an error is raised
12
- def to_bool(strict=false)
13
- return true if self =~ (/\A(true|t|yes|y|1)\Z/i)
20
+ def to_bool(options={})
21
+ strip = options.fetch(:strip, true)
22
+ strict = options.fetch(:strict, false)
23
+ str = strip ? self.strip : self
24
+ return true if str =~ /\A(true|t|yes|y|1)\Z/i
25
+
26
+ if strict
27
+ return false if str.empty? || str =~ /\A(false|f|no|n|0)\Z/i
28
+ raise ArgumentError.new("cannot convert \"#{str}\" to boolean")
29
+ end
30
+
31
+ false
32
+ end
33
+
34
+ def not_empty?
35
+ !self.empty?
36
+ end
37
+
38
+ #Returns the subset of a string from [0, position] if string[position] is a space.
39
+ #If string[max] is not a space, it is assumed we are in the middle of a word.
40
+ #and the logic will increase position a little bit to not break in the middle of a word.
41
+ def excerpt_to_end_of_word(position=nil)
42
+ return self if position.nil? or position >= self.size
43
+
44
+ char = self[position]
45
+ return self[0, position].rstrip if char == " "
46
+
47
+ self[0,index_of_next_space_from(position)].rstrip
48
+ end
14
49
 
15
- if strict
16
- return false if self.empty? || self =~ (/\A(false|f|no|n|0)\Z/i)
17
- raise ArgumentError.new("cannot convert \"#{self}\" to boolean")
18
- end
50
+ #Given a position, return the position of the next space
51
+ def index_of_next_space_from(position)
52
+ return nil if self.empty? or position.nil?
53
+ return nil if position >= self.size
19
54
 
20
- false
21
- end
55
+ idx = position
56
+ (self.size - position).times do
57
+ idx = idx + 1
58
+ return idx if self[idx] == " "
59
+ end
60
+ idx
61
+ end
22
62
 
23
63
  end
@@ -1,3 +1,3 @@
1
1
  module Corelib
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -1,7 +1,19 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Array do
4
- describe "#sum" do
4
+ describe "#to_yes_no" do
5
+ it "converts correctly" do
6
+ [false, true].to_yes_no.should == ["No", "Yes"]
7
+ [1, 0].to_yes_no.should == ["Yes", "No"]
8
+ ["false", "t"].to_yes_no.should == ["No", "Yes"]
9
+ end
10
+ it "converts correctly with options" do
11
+ #This only tests that the options array is correctly passed along
12
+ #All the various options are tested in other tests
13
+ [false, true].to_yes_no(:format => "Up").should == ["NO", "YES"]
14
+ end
15
+ end
16
+ describe "#sum" do
5
17
  it 'sums correctly with all positive or all negative numbers' do
6
18
  [0, 1,2,3,10,100, 5].sum.should == 121
7
19
  [0, -1,-2,-3, -10, -100, -6].sum.should == -122
@@ -12,5 +24,50 @@ describe Array do
12
24
  it 'throws an error with letters & numbers in strict mode' do
13
25
  lambda {[0, "a","should be 0","", nil, 3, 9].sum({:strict => true})}.should raise_error TypeError
14
26
  end
15
- end
27
+ end
28
+
29
+ describe "#add_blank_option" do
30
+ it 'adds blank to front of array' do
31
+ array = [["Label 1", 1], ["Label 2", 2]]
32
+ array.add_blank_option
33
+ array.first[0].should == ""
34
+ array.first[1].should == 0
35
+ end
36
+ it 'does not add blank to front of array when doit is false' do
37
+ array = [["Label 1", 1], ["Label 2", 2]]
38
+ array.add_blank_option(:doit => false)
39
+ array.first[0].should == "Label 1"
40
+ array.first[1].should == 1
41
+ end
42
+ it 'handles specified label correctly' do
43
+ array = [["Label 1", 1], ["Label 2", 2]]
44
+ array.add_blank_option(:label => "Custom")
45
+ array.first[0].should == "Custom"
46
+ array.first[1].should == 0
47
+ end
48
+ it 'handles specified value correctly' do
49
+ array = [["Label 1", 1], ["Label 2", 2]]
50
+ array.add_blank_option(:value => 5)
51
+ array.first[0].should == ""
52
+ array.first[1].should == 5
53
+ end
54
+ end
55
+
56
+ describe "#each_with_end_flag" do
57
+ it 'works' do
58
+ passes = []
59
+ ["a", "b", "c"].each_with_end_flag do |item, flag|
60
+ passes.push(item) if flag
61
+ end
62
+ passes.size.should == 1
63
+ end
64
+ end
65
+
66
+ describe "#not_empty?" do
67
+ it "works" do
68
+ [].not_empty?.should == false
69
+ [1].not_empty?.should == true
70
+ end
71
+ end
72
+
16
73
  end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe Array do
4
+ describe "#us_state_options" do
5
+ it "has the right number of entries" do
6
+ Array.us_state_options.size.should == 52
7
+ Array.us_state_options(:blank => false).size.should == 51
8
+ end
9
+ it "returns the correct list" do
10
+ Array.us_state_options[1][0].should == "Alabama"
11
+ Array.us_state_options(:abbrev => true)[1][0].should == "AL"
12
+ end
13
+ it "formats correctly" do
14
+ Array.us_state_options(:format => "Up")[1][0].should == "ALABAMA"
15
+ Array.us_state_options(:format => "Down")[1][0].should == "alabama"
16
+ Array.us_state_options(:format => "Cap")[1][0].should == "Alabama"
17
+ Array.us_state_options(:format => "Up", :abbrev => true)[1][0].should == "AL"
18
+ Array.us_state_options(:format => "Down", :abbrev => true)[1][0].should == "al"
19
+ Array.us_state_options(:format => "Cap", :abbrev => true)[1][0].should == "Al"
20
+ end
21
+ end
22
+
23
+ describe "#options_label_for" do
24
+ it "returns the correct label" do
25
+ Array.us_state_options.options_label_for("AK").should == "Alaska"
26
+ end
27
+ it "returns nil when nothing is found" do
28
+ Array.us_state_options.options_label_for("invalid").should == nil
29
+ end
30
+ end
31
+
32
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe FalseClass do
4
+ describe "#to_yes_no" do
5
+ it 'converts correctly with no options' do
6
+ false.to_yes_no.should == "No"
7
+ end
8
+ it 'converts correctly when if_no is set' do
9
+ false.to_yes_no(:if_no => "no way").should == "no way"
10
+ end
11
+ it 'converts correctly to uppercase' do
12
+ false.to_yes_no(:format => "Up").should == "NO"
13
+ end
14
+ it 'converts correctly to uppercase when if_no is set' do
15
+ false.to_yes_no(:format => "Up", :if_no => "no way").should == "NO WAY"
16
+ end
17
+ it 'converts correctly to downcase' do
18
+ false.to_yes_no(:format => "Down").should == "no"
19
+ end
20
+ it 'converts correctly to downcase when if_no is set' do
21
+ false.to_yes_no(:format => "Down", :if_no => "NO WAY").should == "no way"
22
+ end
23
+ it 'converts correctly when format is an unsupported string' do
24
+ false.to_yes_no(:format => "Hokie's Rules").should == "No"
25
+ end
26
+ it 'converts correctly when format is an unsupported string and if_no is set' do
27
+ false.to_yes_no(:format => "Hokie's Rules", :if_no => "chuck norris").should == "Chuck norris"
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe TrueClass do
4
+ describe "#to_yes_no" do
5
+ it 'converts correctly with no options' do
6
+ true.to_yes_no.should == "Yes"
7
+ end
8
+ it 'converts correctly when if_yes is set' do
9
+ true.to_yes_no(:if_yes => "yes way").should == "yes way"
10
+ end
11
+ it 'converts correctly to uppercase' do
12
+ true.to_yes_no(:format => "Up").should == "YES"
13
+ end
14
+ it 'converts correctly to uppercase when if_yes is set' do
15
+ true.to_yes_no(:format => "Up", :if_yes => "Yes way").should == "YES WAY"
16
+ end
17
+ it 'converts correctly to downcase' do
18
+ true.to_yes_no(:format => "Down").should == "yes"
19
+ end
20
+ it 'converts correctly to downcase when if_yes is set' do
21
+ true.to_yes_no(:format => "Down", :if_yes => "YES WAY").should == "yes way"
22
+ end
23
+ it 'converts correctly when format is an unsupported string' do
24
+ true.to_yes_no(:format => "Hokie's Rules").should == "Yes"
25
+ end
26
+ it 'converts correctly when format is an unsupported string and if_yes is set' do
27
+ true.to_yes_no(:format => "Hokie's Rules", :if_yes => "chuck norris").should == "Chuck norris"
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hash do
4
+ describe "#each_with_end_flag" do
5
+ it 'works' do
6
+ passes = []
7
+ [:first => "1st", :second => "2nd", :third => "3rd"].each_with_end_flag do |item, flag|
8
+ passes.push(item) if flag
9
+ end
10
+ passes.size.should == 1
11
+ end
12
+ end
13
+
14
+ describe "#not_empty?" do
15
+ it "works" do
16
+ {}.not_empty?.should == false
17
+ {:test => "me"}.not_empty?.should == true
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe NilClass do
4
+ describe "#to_yes_no" do
5
+ it 'converts correctly with no options' do
6
+ nil.to_yes_no.should == ""
7
+ end
8
+ it 'converts correctly with if_nil option' do
9
+ nil.to_yes_no(:if_nil => "Unspecified") == "Unspecified"
10
+ end
11
+ end
12
+
13
+ describe "#not_nil?" do
14
+ it 'works' do
15
+ nil.not_nil?.should == false
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Object do
4
+ describe "#not_nil?" do
5
+ it 'works' do
6
+ [].not_nil?.should == true
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,106 @@
1
+ require 'spec_helper'
2
+
3
+ describe String do
4
+ describe "#to_bool" do
5
+ it 'converts to true correctly' do
6
+ "true".to_bool.should == true
7
+ "TRUE".to_bool.should == true
8
+ "t".to_bool.should == true
9
+ "T".to_bool.should == true
10
+ "1".to_bool.should == true
11
+ "yes".to_bool.should == true
12
+ "YES".to_bool.should == true
13
+ end
14
+ it 'converts to false correctly in unstrict mode' do
15
+ "false".to_bool.should == false
16
+ "r".to_bool.should == false
17
+ "0".to_bool.should == false
18
+ "Chuck Norris".to_bool.should == false
19
+ "".to_bool.should == false
20
+ end
21
+ it 'converts correctly when using no_strip' do
22
+ "false".to_bool(:strip => false).should == false
23
+ "true".to_bool(:strip => false).should == true
24
+ "true ".to_bool(:strip => false).should == false
25
+ " 1 ".to_bool(:strip => false).should == false
26
+ end
27
+ it 'converts to false correctly in strict mode' do
28
+ "false".to_bool(:strict => true).should == false
29
+ "FAlSE".to_bool(:strict => true).should == false
30
+ "f".to_bool(:strict => true).should == false
31
+ "F".to_bool(:strict => true).should == false
32
+ "0".to_bool(:strict => true).should == false
33
+ "".to_bool(:strict => true).should == false
34
+ " ".to_bool(:strict => true).should == false
35
+ end
36
+ it 'throws an error when not true and not strictly "false"' do
37
+ expect{ "blah".to_bool(:strict => true) }.to raise_error(ArgumentError)
38
+ end
39
+ end
40
+
41
+ describe "#to_yes_no" do
42
+ it 'converts correctly with no options' do
43
+ "false".to_yes_no.should == "No"
44
+ "FALSE".to_yes_no.should == "No"
45
+ " FALSE ".to_yes_no.should == "No"
46
+ "f".to_yes_no.should == "No"
47
+ "F".to_yes_no.should == "No"
48
+ "".to_yes_no.should == "No"
49
+ " ".to_yes_no.should == "No"
50
+ "0".to_yes_no.should == "No"
51
+ "true".to_yes_no.should == "Yes"
52
+ "TRUE".to_yes_no.should == "Yes"
53
+ "t".to_yes_no.should == "Yes"
54
+ "T".to_yes_no.should == "Yes"
55
+ "1".to_yes_no.should == "Yes"
56
+ " 1 ".to_yes_no.should == "Yes"
57
+ end
58
+ it 'converts correctly with format options' do
59
+ "false".to_yes_no(:format => "Up").should == "NO"
60
+ "false".to_yes_no(:format => "Down").should == "no"
61
+ "true".to_yes_no(:format => "Up").should == "YES"
62
+ "true".to_yes_no(:format => "Down").should == "yes"
63
+ end
64
+ end
65
+
66
+ describe "#concat_with" do
67
+ it 'appends correctly' do
68
+ "".concat_with("test").should == "test"
69
+ "".concat_with("test",",").should == "test"
70
+ "my".concat_with("test").should == "mytest"
71
+ "my".concat_with("test",",").should == "my,test"
72
+ end
73
+ it 'does not append separators with nil or empty strings' do
74
+ "my".concat_with("",",").should == "my"
75
+ "my".concat_with(nil,",").should == "my"
76
+ "".concat_with("",",").should == ""
77
+ "".concat_with(nil,",").should == ""
78
+ end
79
+ it 'does not create a new string' do
80
+ str = ""
81
+ str_id = str.object_id
82
+ new_str = str.concat("test")
83
+ new_str.object_id.should == str_id
84
+ end
85
+ end
86
+
87
+ describe "#index_of_next_space_from" do
88
+ it 'calculates correctly with no trailing whitespace' do
89
+ str = "This is string"
90
+ str.index_of_next_space_from(0).should == 4
91
+ str.index_of_next_space_from(5).should == 7
92
+ str.index_of_next_space_from(8).should == 14
93
+ end
94
+ it 'calculates correctly with trailing whitespace' do
95
+ str = "This is string "
96
+ str.index_of_next_space_from(10).should == 14
97
+ str.index_of_next_space_from(14).should == 15
98
+ end
99
+ end
100
+ describe "#not_empty?" do
101
+ it "works" do
102
+ "".not_empty?.should == false
103
+ "test".not_empty?.should == true
104
+ end
105
+ end
106
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: corelib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-05 00:00:00.000000000 Z
12
+ date: 2013-03-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -43,6 +43,7 @@ extensions: []
43
43
  extra_rdoc_files: []
44
44
  files:
45
45
  - .gitignore
46
+ - CHANGELOG.md
46
47
  - Gemfile
47
48
  - LICENSE.txt
48
49
  - README.md
@@ -51,14 +52,25 @@ files:
51
52
  - lib/corelib.rb
52
53
  - lib/corelib/array/alias.rb
53
54
  - lib/corelib/array/core.rb
55
+ - lib/corelib/array/helpers.rb
54
56
  - lib/corelib/array/math.rb
55
57
  - lib/corelib/boolean/false.rb
56
58
  - lib/corelib/boolean/true.rb
59
+ - lib/corelib/hash/core.rb
60
+ - lib/corelib/nil/core.rb
57
61
  - lib/corelib/numeric/core.rb
62
+ - lib/corelib/object/core.rb
58
63
  - lib/corelib/string/core.rb
59
64
  - lib/corelib/version.rb
60
65
  - spec/array/core_spec.rb
66
+ - spec/array/helpers_spec.rb
67
+ - spec/boolean/false_spec.rb
68
+ - spec/boolean/true_spec.rb
69
+ - spec/hash/core_spec.rb
70
+ - spec/nil/core_spec.rb
71
+ - spec/object/core_spec.rb
61
72
  - spec/spec_helper.rb
73
+ - spec/string/core_spec.rb
62
74
  homepage: https://github.com/corlewsolutions/corelib.git
63
75
  licenses: []
64
76
  post_install_message:
@@ -85,4 +97,11 @@ specification_version: 3
85
97
  summary: ! '"Useful extensions & additions to the Ruby core classes'
86
98
  test_files:
87
99
  - spec/array/core_spec.rb
100
+ - spec/array/helpers_spec.rb
101
+ - spec/boolean/false_spec.rb
102
+ - spec/boolean/true_spec.rb
103
+ - spec/hash/core_spec.rb
104
+ - spec/nil/core_spec.rb
105
+ - spec/object/core_spec.rb
88
106
  - spec/spec_helper.rb
107
+ - spec/string/core_spec.rb