will_scan_string 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,5 +3,7 @@ require "will_scan_string/string_scanner"
3
3
  require "will_scan_string/regexp_traits"
4
4
 
5
5
  module WillScanString
6
+ GLOBAL_REPLACEMENT = 1
7
+
6
8
  Regexp.send( :include, RegexpTraits )
7
9
  end
@@ -7,10 +7,18 @@ module WillScanString
7
7
  end
8
8
 
9
9
  def replace( string )
10
- string.gsub(replacement_regexp) do
11
- m, r = *get_match_and_replacement( $~ )
12
- execute_replacement_with_match r, m
10
+ result = string.dup
11
+ result_offset = 0
12
+ string.scan replacement_regexp do
13
+ match = $~
14
+ r = *execute_replacement_with_match(*get_match_and_replacement(match).reverse)
15
+ replacement = r.last
16
+ is_global = r.first == 1
17
+ return replacement if is_global
18
+ result[(result_offset+match.begin(0))...(result_offset+match.end(0))] = replacement
19
+ result_offset += replacement.length - (match.end(0)-match.begin(0))
13
20
  end
21
+ result
14
22
  end
15
23
 
16
24
  protected
@@ -1,3 +1,3 @@
1
1
  module WillScanString
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -20,7 +20,7 @@ describe WillScanString::StringScanner do
20
20
  ss.register_replacement ">", ">"
21
21
  ss.register_replacement "\"", """
22
22
  ss.register_replacement "&", "&"
23
- ss.replace("& :)").should eql %{&amp; <img src="happy.png" alt=":)" title=":)">}
23
+ ss.replace("& :) <").should eql %{&amp; <img src="happy.png" alt=":)" title=":)"> &lt;}
24
24
  end
25
25
 
26
26
  it "should be able to use multiple regular expressions to replace with" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: will_scan_string
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-04-11 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70325947050920 !ruby/object:Gem::Requirement
16
+ requirement: &70208318032560 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70325947050920
24
+ version_requirements: *70208318032560
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &70325947050500 !ruby/object:Gem::Requirement
27
+ requirement: &70208318032140 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70325947050500
35
+ version_requirements: *70208318032140
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: i18n
38
- requirement: &70325950995280 !ruby/object:Gem::Requirement
38
+ requirement: &70208318031720 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70325950995280
46
+ version_requirements: *70208318031720
47
47
  description: Gem for string replacements using multiple regular expressions in a single
48
48
  pass.
49
49
  email: