patman 0.0.3 → 0.0.4

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.
@@ -1,12 +1,12 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
1
+ <!DOCTYPE html>
2
+ <html>
4
3
  <head>
5
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>
7
7
  Top Level Namespace
8
8
 
9
- &mdash; Documentation by YARD 0.8.7.6
9
+ &mdash; Documentation by YARD 0.9.16
10
10
 
11
11
  </title>
12
12
 
@@ -15,9 +15,8 @@
15
15
  <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
16
 
17
17
  <script type="text/javascript" charset="utf-8">
18
- hasFrames = window.top.frames.main ? true : false;
18
+ pathId = "";
19
19
  relpath = '';
20
- framesUrl = "frames.html#!top-level-namespace.html";
21
20
  </script>
22
21
 
23
22
 
@@ -28,58 +27,56 @@
28
27
 
29
28
  </head>
30
29
  <body>
31
- <div id="header">
32
- <div id="menu">
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
33
38
 
34
39
  <a href="_index.html">Index</a> &raquo;
35
40
 
36
41
 
37
42
  <span class="title">Top Level Namespace</span>
38
43
 
39
-
40
- <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
44
  </div>
42
45
 
43
- <div id="search">
46
+ <div id="search">
44
47
 
45
48
  <a class="full_list_link" id="class_list_link"
46
49
  href="class_list.html">
47
- Class List
48
- </a>
49
-
50
- <a class="full_list_link" id="method_list_link"
51
- href="method_list.html">
52
- Method List
53
- </a>
54
-
55
- <a class="full_list_link" id="file_list_link"
56
- href="file_list.html">
57
- File List
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
58
56
  </a>
59
57
 
60
58
  </div>
61
- <div class="clear"></div>
62
- </div>
59
+ <div class="clear"></div>
60
+ </div>
63
61
 
64
- <iframe id="search_frame"></iframe>
65
-
66
- <div id="content"><h1>Top Level Namespace
62
+ <div id="content"><h1>Top Level Namespace
67
63
 
68
64
 
69
65
 
70
66
  </h1>
67
+ <div class="box_info">
68
+
71
69
 
72
- <dl class="box">
73
70
 
74
71
 
75
-
76
72
 
77
-
78
73
 
79
74
 
75
+
80
76
 
81
- </dl>
82
- <div class="clear"></div>
77
+
78
+
79
+ </div>
83
80
 
84
81
  <h2>Defined Under Namespace</h2>
85
82
  <p class="children">
@@ -102,11 +99,12 @@
102
99
 
103
100
  </div>
104
101
 
105
- <div id="footer">
106
- Generated on Tue Mar 20 20:43:44 2018 by
102
+ <div id="footer">
103
+ Generated on Sat Oct 20 17:33:29 2018 by
107
104
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
108
- 0.8.7.6 (ruby-2.3.3).
105
+ 0.9.16 (ruby-2.5.1).
109
106
  </div>
110
107
 
108
+ </div>
111
109
  </body>
112
110
  </html>
data/lib/patman.rb CHANGED
@@ -22,6 +22,25 @@ class Patman
22
22
  p
23
23
  end
24
24
 
25
+
26
+ # Edit file and also create it if it does not exist.
27
+ #
28
+ # If block is given, a file will be opened and block with Patman
29
+ # commands will be executed for it. Otherwise a Patman object is
30
+ # returned for further use.
31
+ def Patman.edit( file, &blk )
32
+ p = Patman.new( file )
33
+ if File.exist?( file )
34
+ p.send( :read, file )
35
+ end
36
+ if block_given?
37
+ p.instance_exec( &blk )
38
+ p.send( :write )
39
+ else
40
+ p
41
+ end
42
+ end
43
+
25
44
  # Create {Patman} object.
26
45
  def initialize( file )
27
46
  @file = file
@@ -34,9 +53,9 @@ class Patman
34
53
  end
35
54
 
36
55
  # Read file in.
37
- def read
38
- if File.exist?( @file )
39
- @lines = read_clean( @file )
56
+ def read( file = @file )
57
+ if File.exist?( file )
58
+ @lines = read_clean( file )
40
59
  else
41
60
  raise PatmanFileError
42
61
  end
@@ -45,7 +64,15 @@ class Patman
45
64
  # Write {Patman} content to disk.
46
65
  def write( file = @file )
47
66
  return unless @edited
67
+
68
+ file_dir = File.dirname( file )
69
+ unless File.exist?( file_dir )
70
+ require 'fileutils'
71
+ FileUtils.mkdir_p( file_dir )
72
+ end
73
+
48
74
  fh = File.open( file, 'w' )
75
+
49
76
  @lines.each do |line|
50
77
  if line
51
78
  fh.puts line
@@ -168,7 +195,7 @@ class Patman
168
195
  @edited = true
169
196
  if text.kind_of? Array
170
197
  line = @line
171
- step -1
198
+ step( -1 )
172
199
  text.each do |txt|
173
200
  append( txt )
174
201
  end
@@ -205,7 +232,7 @@ class Patman
205
232
  # Insert file to current position.
206
233
  def insertfile( file )
207
234
  @edited = true
208
- step -1
235
+ step( -1 )
209
236
  read_clean( file ).each do |line|
210
237
  append line
211
238
  end
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  class Patman
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  def Patman.version
4
4
  Patman::VERSION
5
5
  end
data/test/test_patman.rb CHANGED
@@ -2,7 +2,7 @@ require 'test/unit'
2
2
  require 'patman'
3
3
  require 'fileutils'
4
4
 
5
- # require 'byebug'
5
+ require 'byebug'
6
6
 
7
7
 
8
8
  class PatmanTest < Test::Unit::TestCase
@@ -22,9 +22,9 @@ class PatmanTest < Test::Unit::TestCase
22
22
  # ------------------------------------------------------------
23
23
  # Test diff jumping commands and their return values:
24
24
  r.step; assert_equal( r.line, 2 )
25
- r.step -1; assert_equal( r.line, 1 )
26
- true; assert_equal( r.step.line, 2 )
27
- true; assert_equal( r.step(-1).line, 1 )
25
+ r.step( -1); assert_equal( r.line, 1 )
26
+ assert_equal( r.step.line, 2 )
27
+ assert_equal( r.step(-1).line, 1 )
28
28
  r.line( 5 ); assert_equal( r.line, 5 )
29
29
  r.firstline; assert_equal( r.line, 1 )
30
30
  r.lastline; assert_equal( r.line, 10 )
@@ -122,20 +122,20 @@ class PatmanTest < Test::Unit::TestCase
122
122
  assert_equal( r.firstline.insertfile( ifile ).length, 2*len )
123
123
  assert_equal( r.lastline.step.insertfile( ifile ).length, 3*len )
124
124
 
125
- r.do_all do |r|
126
- r.sub( /Line/, 'foobar' )
125
+ r.do_all do |p|
126
+ p.sub( /Line/, 'foobar' )
127
127
  end
128
128
  assert_equal( r.get_range(5,6), [ 'foobar 5', 'foobar 6' ] )
129
129
  r.blockline
130
130
  assert_equal( r.line, 30 )
131
131
 
132
- r.do_range( 1, r.length-1 ) do |r|
133
- r.sub( /foobar/, 'Line' )
132
+ r.do_range( 1, r.length-1 ) do |p|
133
+ p.sub( /foobar/, 'Line' )
134
134
  end
135
135
  assert_equal( r.get_range(5,6), [ 'Line 5', 'Line 6' ] )
136
136
 
137
- r.do_for( 1, r.length-1 ) do |r|
138
- r.sub( /Line/, 'foobar' )
137
+ r.do_for( 1, r.length-1 ) do |p|
138
+ p.sub( /Line/, 'foobar' )
139
139
  end
140
140
  assert_equal( r.get_range(5,6), [ 'foobar 5', 'foobar 6' ] )
141
141
 
@@ -170,6 +170,20 @@ class PatmanTest < Test::Unit::TestCase
170
170
 
171
171
  FileUtils.rm_f ofile
172
172
 
173
+
174
+ # ------------------------------------------------------------
175
+ # Test Patman.edit:
176
+
177
+ ofile = 'test/output/test_file1.txt'
178
+ Patman.edit( ofile ) do
179
+ insert 'foobar'
180
+ end
181
+
182
+ p = Patman.edit( ofile )
183
+ assert_equal( p.get, 'foobar' )
184
+
185
+ FileUtils.rm_f ofile
186
+
173
187
  end
174
188
 
175
189
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: patman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tero Isannainen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-20 00:00:00.000000000 Z
11
+ date: 2018-10-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Patman (Patch Manipulator) is a library for text file patching.
14
14
  email: tero.isannainen@gmail.com
@@ -64,9 +64,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
64
  version: '0'
65
65
  requirements: []
66
66
  rubyforge_project:
67
- rubygems_version: 2.5.2.1
67
+ rubygems_version: 2.7.6
68
68
  signing_key:
69
69
  specification_version: 4
70
70
  summary: Patman is used to patch text files.
71
71
  test_files: []
72
- has_rdoc: