regex_replace 1.0.2 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/README.txt +10 -0
  2. data/Rakefile +0 -2
  3. data/bin/rr +15 -5
  4. data/lib/rr.rb +1 -1
  5. metadata +11 -6
data/README.txt CHANGED
@@ -13,6 +13,7 @@ to appear in the replacement text.
13
13
  usage: rr [options] find replace [filenames]
14
14
  rr [options] s/find/replace/ [filenames]
15
15
  rr [options] find
16
+
16
17
  find - a regular expression to be run on the entire file as one string
17
18
  the final usage defaults the replacement to the empty string
18
19
  replace - replacement text, \1-\9 and metachars (\n, etc.) are allowed
@@ -23,6 +24,7 @@ to appear in the replacement text.
23
24
  --case or -c makes the regular expression case sensitive (not default)
24
25
  --global or -g process all occurrences in the text (default)
25
26
  --modify or -m changes will directly modify the original file (not default)
27
+ --only or -o print out only what matches the regex
26
28
 
27
29
  negated options are done by adding 'not' or 'n' in switches like so:
28
30
  --notline or -nl
@@ -30,6 +32,14 @@ to appear in the replacement text.
30
32
  special note:
31
33
  When using bash, if you want backslashes in the replace portion make sure
32
34
  to use the multiple argument usage with single quotes for the replacement.
35
+
36
+ example usage:
37
+ Replace all a's with e's
38
+ rr s/a/e/ file
39
+ rr a e file
40
+
41
+ Doubles the last character on each line and doubles the newline.
42
+ rr "(.)\n" "\1\1\n\n" file
33
43
 
34
44
 
35
45
  == SYNOPSIS:
data/Rakefile CHANGED
@@ -8,5 +8,3 @@ Hoe.new('regex_replace', Rr::VERSION) do |p|
8
8
  p.rubyforge_name = 'bogojoker'
9
9
  p.developer('Joseph Pecoraro', 'joepeck02@gmail.com')
10
10
  end
11
-
12
- # vim: syntax=Ruby
data/bin/rr CHANGED
@@ -1,7 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- # Start Date: Sunday December 2, 2007 (v0.9)
3
- # Most Recent Update: Sunday June 29, 2008 (v1.1)
4
- # Current Version: 1.1
5
2
  # Author: Joseph Pecoraro
6
3
  # Contact: joepeck02@gmail.com
7
4
  # Decription: Default behavior is a multi-line search and replace utility that
@@ -13,6 +10,7 @@ line_processing = false
13
10
  case_sensitive = false
14
11
  global_replace = true
15
12
  modify_original = false
13
+ only_match = false
16
14
 
17
15
  # Usage Message to print
18
16
  $program_name = $0.split(/\//).last
@@ -31,6 +29,7 @@ options:
31
29
  --case or -c makes the regular expression case sensitive (not default)
32
30
  --global or -g process all occurrences in the text (default)
33
31
  --modify or -m changes will directly modify the original file (not default)
32
+ --only or -o print out only what matches the regex
34
33
 
35
34
  negated options are done by adding 'not' or 'n' in switches like so:
36
35
  --notline or -nl
@@ -55,6 +54,11 @@ def err(msg)
55
54
  exit 1
56
55
  end
57
56
 
57
+ # Print out only the matching portion
58
+ def only(file)
59
+
60
+ end
61
+
58
62
  # Possible Switches
59
63
  ARGV.each_index do |i|
60
64
  arg = ARGV[i]
@@ -68,6 +72,8 @@ ARGV.each_index do |i|
68
72
  when "--notglobal", "-ng" then global_replace = false
69
73
  when "--modify" , "-m" then modify_original = true
70
74
  when "--notmodify", "-nm" then modify_original = false
75
+ when "--only" , "-o" then only_match = true
76
+ when "--notonly" , "-no" then only_match = false
71
77
  else err("illegal option #{arg}")
72
78
  end
73
79
  end
@@ -161,9 +167,13 @@ first_filename.upto(ARGV.size-1) do |i|
161
167
  # 2. Read text as 1 big sting (memory intensive) or Line by Line
162
168
  # 3. Run the Find/Replace globally or non-globally
163
169
  # 4. Print the result to a stream
164
- if line_processing and global_replace then
170
+ if only_match && replace == ''
171
+ stream.puts File.new(filename).read.scan(find).join("\n")
172
+ elsif only_match
173
+ File.new(filename).read.scan(find) { stream.puts $&.gsub(find,replace) }
174
+ elsif line_processing and global_replace
165
175
  File.new(filename).readlines.each { |line| stream.puts line.gsub(find,replace) }
166
- elsif line_processing and !global_replace then
176
+ elsif line_processing and !global_replace
167
177
  File.new(filename).readlines.each { |line| stream.puts line.sub(find,replace) }
168
178
  elsif !line_processing and global_replace
169
179
  stream.puts File.new(filename).read.gsub(find,replace)
data/lib/rr.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Rr
2
- VERSION = '1.0.2'
2
+ VERSION = '1.0.4'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: regex_replace
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joseph Pecoraro
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-06 00:00:00 -05:00
12
+ date: 2009-07-14 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,9 +20,12 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 1.8.2
23
+ version: 1.12.2
24
24
  version:
25
- description: A multi-line search and replace utility that uses Ruby regular expressions for searching and allows back references to captured groups from the pattern to appear in the replacement text.
25
+ description: |-
26
+ A multi-line search and replace utility that uses Ruby regular expressions
27
+ for searching and allows back references to captured groups from the pattern
28
+ to appear in the replacement text.
26
29
  email:
27
30
  - joepeck02@gmail.com
28
31
  executables:
@@ -43,6 +46,8 @@ files:
43
46
  - test/test_rr.rb
44
47
  has_rdoc: true
45
48
  homepage: http://blog.bogojoker.com
49
+ licenses: []
50
+
46
51
  post_install_message:
47
52
  rdoc_options:
48
53
  - --main
@@ -64,9 +69,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
69
  requirements: []
65
70
 
66
71
  rubyforge_project: bogojoker
67
- rubygems_version: 1.3.1
72
+ rubygems_version: 1.3.3
68
73
  signing_key:
69
- specification_version: 2
74
+ specification_version: 3
70
75
  summary: A multi-line search and replace utility that uses Ruby regular expressions for searching and allows back references to captured groups from the pattern to appear in the replacement text.
71
76
  test_files:
72
77
  - test/test_rr.rb