string-eater 0.2.0 → 0.2.1

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.
@@ -109,15 +109,14 @@ static VALUE tokenize_string(VALUE self,
109
109
  }
110
110
  }
111
111
 
112
- ix = str_len;
113
112
  curr_token_ix = n_tokens - 1;
114
113
 
115
- if(curr_token_ix == next_token_to_extract_ix)
114
+ if(ix < str_len && curr_token_ix == next_token_to_extract_ix)
116
115
  {
117
116
  rb_hash_aset(extracted_tokens,
118
117
  rb_ary_entry(tokens_to_extract_names, curr_token_ix),
119
118
  rb_usascii_str_new(input_string + startpoint,
120
- ix - startpoint));
119
+ str_len - startpoint));
121
120
  }
122
121
 
123
122
  return extracted_tokens;
data/lib/version.rb CHANGED
@@ -2,7 +2,7 @@ module StringEater
2
2
  module VERSION
3
3
  MAJOR = 0
4
4
  MINOR = 2
5
- PATCH = 0
5
+ PATCH = 1
6
6
  PRE = nil
7
7
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
8
8
  end
data/spec/nginx_spec.rb CHANGED
@@ -9,6 +9,7 @@ describe NginxLogTokenizer do
9
9
  before(:each) do
10
10
  @tokenizer = NginxLogTokenizer.new
11
11
  @str = '73.80.217.212 - - [01/Aug/2012:09:14:25 -0500] "GET /this_is_a_url HTTP/1.1" 304 152 "http://referrer.com" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" "-" "there could be" other "stuff here"'
12
+ @str2 = '73.80.217.212 - - [01/Aug/2012:09:14:25 -0500] "GET /this_is_a_url HTTP/1.1" 304 152 "http://referrer.com" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" "-"'
12
13
  end
13
14
 
14
15
  {
@@ -24,4 +25,8 @@ describe NginxLogTokenizer do
24
25
  end
25
26
  end
26
27
 
28
+ it "should handle there not being a remainder correctly" do
29
+ @tokenizer.tokenize!(@str2).remainder.should be_nil
30
+ end
31
+
27
32
  end
@@ -93,6 +93,12 @@ describe Example1 do
93
93
  @tokenizer.tokenize!("a b|#{s}").third_word.should == s
94
94
  end
95
95
 
96
+ it "should work if the last delimeter is missing and the second-to-last field is not used" do
97
+ s = "a b"
98
+ # @tokenizer.extract_all_fields
99
+ @tokenizer.tokenize!(s).third_word.should be_nil
100
+ end
101
+
96
102
  end
97
103
 
98
104
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: string-eater
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
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: 2012-08-21 00:00:00.000000000 Z
12
+ date: 2012-08-22 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Fast string tokenizer. Nom strings.
15
15
  email:
@@ -64,4 +64,3 @@ test_files:
64
64
  - spec/nginx_spec.rb
65
65
  - spec/spec_helper.rb
66
66
  - spec/string_eater_spec.rb
67
- has_rdoc: