recursive_replace 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/Gemfile +20 -0
- data/LICENSE.txt +20 -0
- data/README.md +40 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/bin/recursive_replace +20 -0
- data/lib/recursive_replace.rb +52 -0
- data/recursive_replace.gemspec +71 -0
- data/spec/fixtures/test/bad +1 -0
- data/spec/fixtures/test/file +1 -0
- data/spec/fixtures/test/good +1 -0
- data/spec/fixtures/test/subdirectory/file +1 -0
- data/spec/fixtures/test/syntax/file.erb +1 -0
- data/spec/fixtures/test/syntax/file.rb +4 -0
- data/spec/lib/recursive_replace_spec.rb +46 -0
- data/spec/spec_helper.rb +1 -0
- data/test/helper.rb +18 -0
- data/test/test_recursive_replace.rb +7 -0
- metadata +128 -0
data/.document
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
# Example:
|
4
|
+
# gem "activesupport", ">= 2.3.5"
|
5
|
+
|
6
|
+
# Add dependencies to develop your gem here.
|
7
|
+
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
|
9
|
+
gem "colored"
|
10
|
+
|
11
|
+
group :development do
|
12
|
+
gem "shoulda", ">= 0"
|
13
|
+
gem "bundler", "~> 1.0.0"
|
14
|
+
gem "jeweler", "~> 1.6.3"
|
15
|
+
gem "rcov", ">= 0"
|
16
|
+
end
|
17
|
+
|
18
|
+
group :test do
|
19
|
+
gem "rspec"
|
20
|
+
end
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Dave Hulihan
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# recursive_replace
|
2
|
+
|
3
|
+
A ruby gem for recursively replacing text in multiple files and directories. It also escapes special characters, so you can replace code syntax and special characters easily. recursive_replace also comes with a testing suite for verification against several data types and programming languages.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
```bash
|
8
|
+
gem install recursive_replace
|
9
|
+
```
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
### From Console/Terminal
|
14
|
+
|
15
|
+
```bash
|
16
|
+
recursive_replace [original] [replacement] [optional_path]
|
17
|
+
```
|
18
|
+
```bash
|
19
|
+
echo "bad bad good" > test
|
20
|
+
recursive_replace bad good # replaced bad with bad
|
21
|
+
cat test # => good good good
|
22
|
+
rm test
|
23
|
+
```
|
24
|
+
|
25
|
+
### Ruby
|
26
|
+
|
27
|
+
```bash
|
28
|
+
echo "<%= @object[:bad] %>" > test # use quotes when using special characters
|
29
|
+
recursive_replace "<%= @object[:bad] %>" "<%= @new_object[:good] %>"
|
30
|
+
cat test # => <%= @new_object[:good] %>
|
31
|
+
rm test
|
32
|
+
```
|
33
|
+
|
34
|
+
### From Code
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
require "recursive_replace"
|
38
|
+
file = File.join("home", "bob", "Documents)
|
39
|
+
RecursiveReplace.replace("bad", "good", :path => file)
|
40
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
require 'rake'
|
13
|
+
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
+
gem.name = "recursive_replace"
|
18
|
+
gem.homepage = "http://github.com/hulihanapplications/recursive_replace"
|
19
|
+
gem.license = "MIT"
|
20
|
+
gem.summary = %Q{Recursive Text Replacement for Programming Languages}
|
21
|
+
gem.description = %Q{recursive_replace is a ruby gem for recursively replacing text in multiple files and directories. It also escapes special characters, so you can replace code syntax and special characters easily.}
|
22
|
+
gem.email = "dave@hulihanapplications.com"
|
23
|
+
gem.authors = ["Dave Hulihan", "Hulihan Applications"]
|
24
|
+
# dependencies defined in Gemfile
|
25
|
+
end
|
26
|
+
Jeweler::RubygemsDotOrgTasks.new
|
27
|
+
|
28
|
+
require 'rake/testtask'
|
29
|
+
Rake::TestTask.new(:test) do |test|
|
30
|
+
test.libs << 'lib' << 'test'
|
31
|
+
test.pattern = 'test/**/test_*.rb'
|
32
|
+
test.verbose = true
|
33
|
+
end
|
34
|
+
|
35
|
+
require 'rcov/rcovtask'
|
36
|
+
Rcov::RcovTask.new do |test|
|
37
|
+
test.libs << 'test'
|
38
|
+
test.pattern = 'test/**/test_*.rb'
|
39
|
+
test.verbose = true
|
40
|
+
test.rcov_opts << '--exclude "gems/*"'
|
41
|
+
end
|
42
|
+
|
43
|
+
task :default => :test
|
44
|
+
|
45
|
+
require 'rake/rdoctask'
|
46
|
+
Rake::RDocTask.new do |rdoc|
|
47
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
48
|
+
|
49
|
+
rdoc.rdoc_dir = 'rdoc'
|
50
|
+
rdoc.title = "recursive_replace #{version}"
|
51
|
+
rdoc.rdoc_files.include('README*')
|
52
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
53
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.expand_path(File.join("..", "..", "lib", "recursive_replace"), __FILE__)
|
4
|
+
|
5
|
+
# Recursive String Replacement, starting in current dir.
|
6
|
+
# Author: Dave Hulihan
|
7
|
+
|
8
|
+
if ARGV.length < 2
|
9
|
+
puts "Usage: recursive_replace [original] [replacement] [file or dir]"
|
10
|
+
exit 0
|
11
|
+
end
|
12
|
+
|
13
|
+
@original = ARGV[0]
|
14
|
+
@replacement = ARGV[1]
|
15
|
+
@path = ARGV[2]
|
16
|
+
|
17
|
+
puts "Replacing #{@original} with #{@replacement} in #{@path.nil? ? Dir.pwd : @path}"
|
18
|
+
|
19
|
+
RecursiveReplace.replace(@original, @replacement, :path => @path, :verbose => true)
|
20
|
+
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require "colored"
|
2
|
+
|
3
|
+
class RecursiveReplace
|
4
|
+
INDENTATION = " "
|
5
|
+
|
6
|
+
def self.replace(original, replacement, options = {}) # replace text in either a directory(recursively) or single file
|
7
|
+
#exec("find ./ -type f | xargs sed -i 's/#{@string1}/#{@string2}/g'")
|
8
|
+
|
9
|
+
#puts files.inspect
|
10
|
+
if options[:path].nil? || File.directory?(options[:path]) # recursively inside directory
|
11
|
+
for file in files_inside(options[:path])
|
12
|
+
options[:path] = file
|
13
|
+
replace_in_file(original, replacement, options) unless File.directory?(file)
|
14
|
+
end
|
15
|
+
else # single file
|
16
|
+
replace_in_file(original, replacement, options)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.replace_in_file(original, replacement, options = {}) # do the actual replacing in a single file
|
21
|
+
raise ScriptError, "options[:path] not defined" if options[:path].nil?
|
22
|
+
raise LoadError, "#{options[:path]} not found" unless File.exists?(options[:path])
|
23
|
+
raise LoadError, "#{options[:path]} is a directory" if File.directory?(options[:path])
|
24
|
+
|
25
|
+
# Set Defaults
|
26
|
+
options[:verbose] = false if options[:verbose].nil?
|
27
|
+
|
28
|
+
original = Regexp.escape(original) # escape any special characters
|
29
|
+
replacement = Regexp.escape(replacement)
|
30
|
+
|
31
|
+
results = system("sed -i 's/#{original}/#{replacement}/g' #{options[:path]}")
|
32
|
+
puts "success".green + "\t" + INDENTATION + print_path(options[:path]) if !File.directory?(options[:path]) && options[:verbose]
|
33
|
+
#puts results.inspect
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.print_path_with_indent(path) # print pretty path
|
37
|
+
indent = String.new
|
38
|
+
path.split(File::SEPARATOR).each do
|
39
|
+
indent << RecursiveReplace::INDENTATION unless File.dirname(path) == "."
|
40
|
+
end
|
41
|
+
return File.directory?(path) ? path : indent + File.basename(path)
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.print_path(path)
|
45
|
+
path
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.files_inside(path) # get the working directory to start in
|
49
|
+
path.nil? ? Dir.glob(File.join("**", "*")) : Dir.glob(File.join(File.dirname(path), "**", "*"))
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{recursive_replace}
|
8
|
+
s.version = "0.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Dave Hulihan", "Hulihan Applications"]
|
12
|
+
s.date = %q{2011-08-26}
|
13
|
+
s.description = %q{recursive_replace is a ruby gem for recursively replacing text in multiple files and directories. It also escapes special characters, so you can replace code syntax and special characters easily.}
|
14
|
+
s.email = %q{dave@hulihanapplications.com}
|
15
|
+
s.executables = ["recursive_replace"]
|
16
|
+
s.extra_rdoc_files = [
|
17
|
+
"LICENSE.txt",
|
18
|
+
"README.md"
|
19
|
+
]
|
20
|
+
s.files = [
|
21
|
+
".document",
|
22
|
+
"Gemfile",
|
23
|
+
"LICENSE.txt",
|
24
|
+
"README.md",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"bin/recursive_replace",
|
28
|
+
"lib/recursive_replace.rb",
|
29
|
+
"recursive_replace.gemspec",
|
30
|
+
"spec/fixtures/test/bad",
|
31
|
+
"spec/fixtures/test/file",
|
32
|
+
"spec/fixtures/test/good",
|
33
|
+
"spec/fixtures/test/subdirectory/file",
|
34
|
+
"spec/fixtures/test/syntax/file.erb",
|
35
|
+
"spec/fixtures/test/syntax/file.rb",
|
36
|
+
"spec/lib/recursive_replace_spec.rb",
|
37
|
+
"spec/spec_helper.rb",
|
38
|
+
"test/helper.rb",
|
39
|
+
"test/test_recursive_replace.rb"
|
40
|
+
]
|
41
|
+
s.homepage = %q{http://github.com/hulihanapplications/recursive_replace}
|
42
|
+
s.licenses = ["MIT"]
|
43
|
+
s.require_paths = ["lib"]
|
44
|
+
s.rubygems_version = %q{1.7.2}
|
45
|
+
s.summary = %q{Recursive Text Replacement for Programming Languages}
|
46
|
+
|
47
|
+
if s.respond_to? :specification_version then
|
48
|
+
s.specification_version = 3
|
49
|
+
|
50
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
51
|
+
s.add_runtime_dependency(%q<colored>, [">= 0"])
|
52
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
53
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
54
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.6.3"])
|
55
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
56
|
+
else
|
57
|
+
s.add_dependency(%q<colored>, [">= 0"])
|
58
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
59
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
60
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.3"])
|
61
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
62
|
+
end
|
63
|
+
else
|
64
|
+
s.add_dependency(%q<colored>, [">= 0"])
|
65
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
66
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
67
|
+
s.add_dependency(%q<jeweler>, ["~> 1.6.3"])
|
68
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
bad
|
@@ -0,0 +1 @@
|
|
1
|
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
|
@@ -0,0 +1 @@
|
|
1
|
+
good
|
@@ -0,0 +1 @@
|
|
1
|
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= print @object[:symbol] %>
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe RecursiveReplace do
|
4
|
+
describe "go" do
|
5
|
+
before(:each) do
|
6
|
+
# create test dir
|
7
|
+
@test_dir_fixture = File.expand_path("../../fixtures/test", __FILE__)
|
8
|
+
@test_dir = File.expand_path("../../tmp/#{File.basename(@test_dir_fixture)}", __FILE__)
|
9
|
+
#puts "#{@test_dir_fixture} -> #{@test_dir}"
|
10
|
+
FileUtils.cp_r(@test_dir_fixture, @test_dir)
|
11
|
+
end
|
12
|
+
|
13
|
+
after(:each) do
|
14
|
+
# delete test dir
|
15
|
+
FileUtils.rm_rf @test_dir
|
16
|
+
raise "test dir should have been deleted" if File.exists?(@test_dir)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "creates test directory properly" do
|
20
|
+
test_exists = File.exists?(@test_dir) && File.directory?(@test_dir)
|
21
|
+
test_exists.should == true
|
22
|
+
end
|
23
|
+
|
24
|
+
it "replaces good with bad in test/good" do
|
25
|
+
path = File.join(@test_dir, "good")
|
26
|
+
File.read(path).should == "good"
|
27
|
+
described_class.replace("good", "bad", :path => path)
|
28
|
+
File.read(path).should == "bad"
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "erb" do
|
32
|
+
it "should replace erb code fine" do
|
33
|
+
original = "<%= print @object[:symbol] %>"
|
34
|
+
replacement = "<%= puts @new_object[:new_symbol] %>"
|
35
|
+
path = File.join(@test_dir, "syntax", "file.erb")
|
36
|
+
File.read(path).should == original
|
37
|
+
described_class.replace(original, replacement, :path => path)
|
38
|
+
File.read(path).should == replacement
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "console" do
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require File.expand_path(File.join("..", "..", "lib", "recursive_replace"), __FILE__)
|
data/test/helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'test/unit'
|
11
|
+
require 'shoulda'
|
12
|
+
|
13
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
+
require 'recursive_replace'
|
16
|
+
|
17
|
+
class Test::Unit::TestCase
|
18
|
+
end
|
metadata
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: recursive_replace
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Dave Hulihan
|
9
|
+
- Hulihan Applications
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2011-08-26 00:00:00.000000000Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: colored
|
17
|
+
requirement: &77502280 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *77502280
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: shoulda
|
28
|
+
requirement: &77501720 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *77501720
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: bundler
|
39
|
+
requirement: &77500850 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ~>
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 1.0.0
|
45
|
+
type: :development
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *77500850
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: jeweler
|
50
|
+
requirement: &77500360 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ~>
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.6.3
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *77500360
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: rcov
|
61
|
+
requirement: &77499940 !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
type: :development
|
68
|
+
prerelease: false
|
69
|
+
version_requirements: *77499940
|
70
|
+
description: recursive_replace is a ruby gem for recursively replacing text in multiple
|
71
|
+
files and directories. It also escapes special characters, so you can replace code
|
72
|
+
syntax and special characters easily.
|
73
|
+
email: dave@hulihanapplications.com
|
74
|
+
executables:
|
75
|
+
- recursive_replace
|
76
|
+
extensions: []
|
77
|
+
extra_rdoc_files:
|
78
|
+
- LICENSE.txt
|
79
|
+
- README.md
|
80
|
+
files:
|
81
|
+
- .document
|
82
|
+
- Gemfile
|
83
|
+
- LICENSE.txt
|
84
|
+
- README.md
|
85
|
+
- Rakefile
|
86
|
+
- VERSION
|
87
|
+
- bin/recursive_replace
|
88
|
+
- lib/recursive_replace.rb
|
89
|
+
- recursive_replace.gemspec
|
90
|
+
- spec/fixtures/test/bad
|
91
|
+
- spec/fixtures/test/file
|
92
|
+
- spec/fixtures/test/good
|
93
|
+
- spec/fixtures/test/subdirectory/file
|
94
|
+
- spec/fixtures/test/syntax/file.erb
|
95
|
+
- spec/fixtures/test/syntax/file.rb
|
96
|
+
- spec/lib/recursive_replace_spec.rb
|
97
|
+
- spec/spec_helper.rb
|
98
|
+
- test/helper.rb
|
99
|
+
- test/test_recursive_replace.rb
|
100
|
+
homepage: http://github.com/hulihanapplications/recursive_replace
|
101
|
+
licenses:
|
102
|
+
- MIT
|
103
|
+
post_install_message:
|
104
|
+
rdoc_options: []
|
105
|
+
require_paths:
|
106
|
+
- lib
|
107
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
108
|
+
none: false
|
109
|
+
requirements:
|
110
|
+
- - ! '>='
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
segments:
|
114
|
+
- 0
|
115
|
+
hash: 633788527
|
116
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
requirements: []
|
123
|
+
rubyforge_project:
|
124
|
+
rubygems_version: 1.7.2
|
125
|
+
signing_key:
|
126
|
+
specification_version: 3
|
127
|
+
summary: Recursive Text Replacement for Programming Languages
|
128
|
+
test_files: []
|