txt_file_mutator 0.2.1 → 0.2.2

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.
data/CHANGELOG CHANGED
@@ -1,2 +1,8 @@
1
1
  13-11-2009: Initial release
2
2
 
3
+ Using http://rubular.com/ for testing the regexps! Let me know of any corner cases or bugs you find! :)
4
+
5
+ TODO:
6
+ * test insert_after and before only executed if not existing before! avoid content inserted multiple times before or after!
7
+ * also have option for multiple or only once!
8
+
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
@@ -1,16 +1,54 @@
1
1
  module TextFileMutator
2
- def self.insert_before(file, line, txt_before)
3
- gsub_file file, /(#{Regexp.escape(line)})/ do |match|
2
+
3
+ def self.has_multiple_content_before?(file_content, content, before)
4
+ res = file_content =~ /(#{content}\s*#{content})\s*#{before}/
5
+ !res.nil?
6
+ end
7
+
8
+ def self.has_content_before?(file_content, content, before)
9
+ res = file_content =~ /(#{content})\s*#{before}/
10
+ !res.nil?
11
+ end
12
+
13
+
14
+ def self.has_multiple_content_after?(file_content, content, after)
15
+ res = file_content =~ /#{after}\s*(#{content}\s*#{content})/
16
+ !res.nil?
17
+ end
18
+
19
+ def self.has_content_after?(file_content, content, after)
20
+ res = file_content =~ /#{after}\s*(#{content})/
21
+ !res.nil?
22
+ end
23
+
24
+
25
+ def self.insert_before(file, line, txt_before, exist_check=true)
26
+ content = File.read(file)
27
+ if exist_check
28
+ return if has_content_before?(content, txt_before, line)
29
+ end
30
+ gsub_content_file content, file, /(#{Regexp.escape(line)})/ do |match|
4
31
  "#{txt_before}\n#{match}"
5
32
  end
6
33
  end
7
34
 
8
- def self.insert_after(file, line, txt_after)
9
- gsub_file file, /(#{Regexp.escape(line)})/ do |match|
35
+ def self.insert_after(file, line, txt_after, exist_check=true)
36
+ content = File.read(file)
37
+ if exist_check
38
+ return if has_content_after?(content, txt_after, line)
39
+ end
40
+ gsub_content_file file, /(#{Regexp.escape(line)})/ do |match|
10
41
  "#{match}\n#{txt_after}"
11
42
  end
12
43
  end
13
44
 
45
+ def self.remove_duplicate_lines(file)
46
+ content = File.read(file)
47
+ content.gsub!(/^(.*)(\r?\n\1)+$/, '\1')
48
+ File.open(path, 'wb') { |file| file.write(content) }
49
+ end
50
+
51
+
14
52
  def self.comment_gem_config(file, line)
15
53
  gsub_file file, /^\s*[^#]\s*config.gem.+'#{Regexp.escape(line)}'$/ do |match|
16
54
  "# " + "#{match}"
@@ -43,6 +81,11 @@ module TextFileMutator
43
81
 
44
82
 
45
83
  protected
84
+ def self.gsub_content_file(content, path, regexp, *args, &block)
85
+ content.gsub!(regexp, *args, &block)
86
+ File.open(path, 'wb') { |file| file.write(content) }
87
+ end
88
+
46
89
  def self.gsub_file(path, regexp, *args, &block)
47
90
  content = File.read(path).gsub(regexp, *args, &block)
48
91
  File.open(path, 'wb') { |file| file.write(content) }
Binary file
Binary file
Binary file
@@ -0,0 +1,30 @@
1
+ require 'txt_file_mutator'
2
+ require "test/unit"
3
+
4
+ class TestTxtFileMutator < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @tfm = TextFileMutator
8
+ @file = 'DATA_REMOVE.txt'
9
+ puts @tfm.instance_methods
10
+ end
11
+
12
+ def teardown
13
+ ## Nothing really
14
+ end
15
+
16
+ def has_content?(file, content)
17
+ content = File.read(file)
18
+ res = content =~ /#{content}/
19
+ !res.nil?
20
+ end
21
+
22
+ def test_insert_before
23
+ content = 'BEFORE'
24
+ @tfm.insert_before @file, 'before', content
25
+ @tfm.insert_before @file, 'before', content
26
+
27
+ assert_equal false, @tfm.has_multiple_content_before?(File.read(@file), content, 'before'), "Same content inserted should not be repeated after multiple insert before"
28
+ end
29
+
30
+ end
@@ -0,0 +1,64 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{txt_file_mutator}
8
+ s.version = "0.2.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Kristian Mandrup"]
12
+ s.date = %q{2009-11-14}
13
+ s.description = %q{includes convenience method to do txt file mutations including simple code refactorings such as commenting a line}
14
+ s.email = %q{kmandrup@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README",
18
+ "README.rdoc"
19
+ ]
20
+ s.files = [
21
+ ".document",
22
+ ".gitignore",
23
+ "CHANGELOG",
24
+ "LICENSE",
25
+ "README",
26
+ "README.rdoc",
27
+ "Rakefile",
28
+ "VERSION",
29
+ "lib/txt_file_mutator.rb",
30
+ "pkg/txt_file_mutator-0.1.0.gem",
31
+ "pkg/txt_file_mutator-0.2.0.gem",
32
+ "pkg/txt_file_mutator-0.2.1.gem",
33
+ "spec/spec.opts",
34
+ "spec/spec_helper.rb",
35
+ "spec/txt_file_mutator_spec.rb",
36
+ "txt_file_mutator.gemspec"
37
+ ]
38
+ s.homepage = %q{http://github.com/kristianmandrup/txt_file_mutator}
39
+ s.rdoc_options = ["--charset=UTF-8"]
40
+ s.require_paths = ["lib"]
41
+ s.rubygems_version = %q{1.3.5}
42
+ s.summary = %q{mutate a text file in various ways}
43
+ s.test_files = [
44
+ "spec/spec_helper.rb",
45
+ "spec/txt_file_mutator_spec.rb",
46
+ "test/test_insert_before_and_after.rb",
47
+ "test/test_remove_line_w_content.rb",
48
+ "test/test_txt_file_mutator.rb"
49
+ ]
50
+
51
+ if s.respond_to? :specification_version then
52
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
53
+ s.specification_version = 3
54
+
55
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
56
+ s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
57
+ else
58
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
59
+ end
60
+ else
61
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
62
+ end
63
+ end
64
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: txt_file_mutator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kristian Mandrup
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-13 00:00:00 +01:00
12
+ date: 2009-11-14 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -42,9 +42,13 @@ files:
42
42
  - Rakefile
43
43
  - VERSION
44
44
  - lib/txt_file_mutator.rb
45
+ - pkg/txt_file_mutator-0.1.0.gem
46
+ - pkg/txt_file_mutator-0.2.0.gem
47
+ - pkg/txt_file_mutator-0.2.1.gem
45
48
  - spec/spec.opts
46
49
  - spec/spec_helper.rb
47
50
  - spec/txt_file_mutator_spec.rb
51
+ - txt_file_mutator.gemspec
48
52
  has_rdoc: true
49
53
  homepage: http://github.com/kristianmandrup/txt_file_mutator
50
54
  licenses: []
@@ -76,5 +80,6 @@ summary: mutate a text file in various ways
76
80
  test_files:
77
81
  - spec/spec_helper.rb
78
82
  - spec/txt_file_mutator_spec.rb
83
+ - test/test_insert_before_and_after.rb
79
84
  - test/test_remove_line_w_content.rb
80
85
  - test/test_txt_file_mutator.rb