tefil 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,6 +1,13 @@
1
1
  = vasputils changelog
2
2
 
3
- == Master (for 0.0.2)
3
+ == Master
4
+
5
+ == Version 0.0.3 [2013-05-10] released
6
+ * Rename TextFilter to Tefil
7
+ * Add Tefil::ColumnFormer
8
+ * Add -l(left alline) option to formcolumn command.
9
+
10
+ == Version 0.0.2 [2013-04-18] released
4
11
  * Adjust to builtinextension-0.1.0.
5
12
 
6
13
  == Version 0.0.1
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
data/bin/formcolumn CHANGED
@@ -14,35 +14,18 @@ require "tefil"
14
14
  # option analysis
15
15
  OPTIONS = {:separator => ' '}
16
16
  op = OptionParser.new
17
- op.on("-o" , "--overwrite" , "Overwrite."){ OPTIONS[:overwrite] = true}
18
- op.on("-s char" , "--separator=char" , "Indicate separator."){|val| OPTIONS[:separator] = val}
17
+ op.on("-o" , "--overwrite" , "Overwrite."){ OPTIONS[:overwrite] = true}
18
+ op.on("-s char", "--separator=char", "Indicate separator."){|val| OPTIONS[:separator] = val}
19
+ op.on("-l" , "--left-alline" , "Left alline."){ OPTIONS[:left] = true}
19
20
  op.parse!(ARGV)
20
21
 
21
- module TextFilter
22
+ module Tefil
22
23
  def self.process_stream(in_io, out_io)
23
24
  rows = in_io.readlines.map { |line| line.strip.split(INPUT_SEPARATOR) }
24
-
25
- #Obtain max length for each column.
26
- max_lengths = []
27
- rows.each do |row|
28
- row.each_with_index do |item, index|
29
- max_lengths[index] ||= 0
30
- size = item.size
31
- max_lengths[index] = size if max_lengths[index] < size
32
- end
33
- end
34
-
35
- #Output
36
- rows.each do |row|
37
- new_items = []
38
- row.each_with_index do |item, index|
39
- new_items[index] = sprintf("%#{max_lengths[index]}s", item )
40
- end
41
- out_io.puts new_items.join(OPTIONS[:separator])
42
- end
25
+ Tefil::ColumnFormer.form(rows, out_io, OPTIONS[:separator], OPTIONS[:left])
43
26
  end
44
27
  end
45
28
 
46
29
  OPTIONS[:overwrite] ||= false
47
30
 
48
- TextFilter.run(ARGV, OPTIONS[:overwrite])
31
+ Tefil.run(ARGV, OPTIONS[:overwrite])
data/bin/lineedit CHANGED
@@ -17,7 +17,7 @@ op.on("-r" , "--randomize" , "Randomize."){ OPTIONS[:random] = true}
17
17
  op.on("-o" , "--overwrite" , "Overwrite."){ OPTIONS[:overwrite] = true}
18
18
  op.parse!(ARGV)
19
19
 
20
- module TextFilter
20
+ module Tefil
21
21
  def self.process_stream(in_io, out_io)
22
22
  in_io.each do |line|
23
23
  if OPTIONS[:sort]
@@ -34,5 +34,5 @@ OPTIONS[:overwrite] ||= false
34
34
 
35
35
 
36
36
  #pp OPTIONS[:overwrite]
37
- #TextFilter.run(ARGV, OPTIONS[:overwrite])
38
- TextFilter.run(ARGV, OPTIONS[:overwrite])
37
+ #Tefil.run(ARGV, OPTIONS[:overwrite])
38
+ Tefil.run(ARGV, OPTIONS[:overwrite])
data/bin/lineescapezsh CHANGED
@@ -17,7 +17,7 @@ op = OptionParser.new
17
17
  op.on("-o" , "--overwrite" , "Overwrite."){ OPTIONS[:overwrite] = true}
18
18
  op.parse!(ARGV)
19
19
 
20
- module TextFilter
20
+ module Tefil
21
21
  def self.process_stream(in_io, out_io)
22
22
  in_io.each do |line|
23
23
  out_io.puts line.escape_zsh
@@ -27,4 +27,4 @@ end
27
27
 
28
28
  OPTIONS[:overwrite] ||= false
29
29
 
30
- TextFilter.run(ARGV, OPTIONS[:overwrite])
30
+ Tefil.run(ARGV, OPTIONS[:overwrite])
data/bin/linesub CHANGED
@@ -19,7 +19,7 @@ op.parse!(ARGV)
19
19
  OLD_PATTERN = ARGV.shift
20
20
  NEW_STR = ARGV.shift
21
21
 
22
- module TextFilter
22
+ module Tefil
23
23
  def self.process_stream(in_io, out_io)
24
24
  in_io.each do |line|
25
25
  if OPTIONS[:global]
@@ -33,4 +33,4 @@ end
33
33
 
34
34
  OPTIONS[:overwrite] ||= false
35
35
 
36
- TextFilter.run(ARGV, OPTIONS[:overwrite])
36
+ Tefil.run(ARGV, OPTIONS[:overwrite])
@@ -0,0 +1,34 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ #
5
+ #
6
+ #
7
+ module Tefil::ColumnFormer
8
+ def self.form(matrix, io = $stdout, separator = " ", left = false)
9
+ #Obtain max length for each column.
10
+ max_lengths = []
11
+ matrix.each do |row|
12
+ row.each_with_index do |item, index|
13
+ item = item.to_s
14
+ max_lengths[index] ||= 0
15
+ size = item.size
16
+ max_lengths[index] = size if max_lengths[index] < size
17
+ end
18
+ end
19
+
20
+ #Output
21
+ matrix.each do |row|
22
+ new_items = []
23
+
24
+ form_left = ""
25
+ form_left = "-" if left
26
+
27
+ row.each_with_index do |item, index|
28
+ new_items[index] = sprintf("%#{form_left}#{max_lengths[index]}s", item)
29
+ end
30
+ io.puts new_items.join(separator).sub(/ +$/, "")
31
+ end
32
+ end
33
+ end
34
+
data/lib/tefil.rb CHANGED
@@ -26,7 +26,7 @@ require "tempfile"
26
26
  # If indicated file(s) not found,
27
27
  # this program notify on stderr and does not throw an exception.
28
28
  #
29
- module TextFilter
29
+ module Tefil
30
30
 
31
31
  class NotRedefinedMethodError < Exception; end
32
32
  class TypeError < Exception; end
@@ -73,10 +73,11 @@ module TextFilter
73
73
  # An argument 'in_io' indicates an io (file handle) for input.
74
74
  # Another argument 'out_io' indicates an io (file handle) for output.
75
75
  # This method must be redefined in a subclass or be overridden.
76
- # If not redefined, raise an exception TextFilter::NotRedefinedMethodError.
76
+ # If not redefined, raise an exception Tefil::NotRedefinedMethodError.
77
77
  def self.process_stream(in_io, out_io)
78
78
  raise NotRedefinedMethodError
79
79
  end
80
80
 
81
81
  end
82
82
 
83
+ require "tefil/columnformer"
@@ -0,0 +1,33 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require "helper"
5
+ #require "test/unit"
6
+ #require "pkg/klass.rb"
7
+ require "stringio"
8
+
9
+ class TC_ColumnFormer < Test::Unit::TestCase
10
+ def test_form
11
+ io = StringIO.new
12
+ matrix = [
13
+ ["a", "ab"],
14
+ ["abc", "a"],
15
+ ]
16
+ Tefil::ColumnFormer.form(matrix, io)
17
+ io.rewind
18
+ assert_equal(" a ab\nabc a\n", io.read)
19
+
20
+ io = StringIO.new
21
+ Tefil::ColumnFormer.form(matrix, io, ",")
22
+ io.rewind
23
+ assert_equal(" a,ab\nabc, a\n", io.read)
24
+
25
+ io = StringIO.new
26
+ Tefil::ColumnFormer.form(matrix, io, " ", true )
27
+ io.rewind
28
+ assert_equal("a ab\nabc a\n", io.read)
29
+ io.rewind
30
+
31
+ end
32
+ end
33
+
data/test/test_tefil.rb CHANGED
@@ -6,7 +6,7 @@ require "stringio"
6
6
  require "tempfile"
7
7
  require "fileutils"
8
8
 
9
- module TextFilter
9
+ module Tefil
10
10
  def self.process_stream(in_file, out_file)
11
11
  results = []
12
12
  in_file.each do |line|
@@ -40,8 +40,8 @@ class TestTefil < Test::Unit::TestCase
40
40
 
41
41
  def test_self_run
42
42
  # Not found
43
- assert_raise(Errno::ENOENT){ TextFilter.run([""]) }
44
- assert_raise(Errno::ENOENT){ TextFilter.run([""], true) }
43
+ assert_raise(Errno::ENOENT){ Tefil.run([""]) }
44
+ assert_raise(Errno::ENOENT){ Tefil.run([""], true) }
45
45
 
46
46
  # ファイル指定なしで標準入力
47
47
  $stdin = StringIO.new
@@ -50,7 +50,7 @@ class TestTefil < Test::Unit::TestCase
50
50
  $stdin.rewind
51
51
  # stdout
52
52
  $stdout = StringIO.new
53
- TextFilter.run([], false)
53
+ Tefil.run([], false)
54
54
  $stdout.rewind
55
55
  t = $stdout.readlines
56
56
  assert_equal([ "Abc\n", "def\n" ], t)
@@ -61,7 +61,7 @@ class TestTefil < Test::Unit::TestCase
61
61
  $stdin.puts "def"
62
62
  $stdin.rewind
63
63
  $stdout = StringIO.new
64
- TextFilter.run([], true)
64
+ Tefil.run([], true)
65
65
  $stdout.rewind
66
66
  t = $stdout.readlines
67
67
  assert_equal([ "Abc\n", "def\n" ], t)
@@ -71,7 +71,7 @@ class TestTefil < Test::Unit::TestCase
71
71
  # overwrite なし。
72
72
  setup
73
73
  $stdout = StringIO.new
74
- TextFilter.run([TMP00])
74
+ Tefil.run([TMP00])
75
75
  $stdout.rewind
76
76
  tmp = $stdout.readlines
77
77
  assert_equal(["Abc\n", "def\n"], tmp)
@@ -84,7 +84,7 @@ class TestTefil < Test::Unit::TestCase
84
84
  # overwrite あり
85
85
  setup
86
86
  $stdout = StringIO.new
87
- TextFilter.run([TMP00], true)
87
+ Tefil.run([TMP00], true)
88
88
  $stdout.rewind
89
89
  tmp = $stdout.readlines
90
90
  assert_equal([], tmp)
@@ -98,7 +98,7 @@ class TestTefil < Test::Unit::TestCase
98
98
  # overwrite なし。
99
99
  setup
100
100
  $stdout = StringIO.new
101
- TextFilter.run([TMP00, TMP01])
101
+ Tefil.run([TMP00, TMP01])
102
102
  $stdout.rewind
103
103
  tmp = $stdout.readlines
104
104
  assert_equal(["Abc\n", "def\n", "Abc\n", "def\n", "cAb\n"], tmp)
@@ -111,7 +111,7 @@ class TestTefil < Test::Unit::TestCase
111
111
  # overwrite あり。
112
112
  setup
113
113
  $stdout = StringIO.new
114
- TextFilter.run([TMP00, TMP01], true)
114
+ Tefil.run([TMP00, TMP01], true)
115
115
  $stdout.rewind
116
116
  stdout = $stdout.readlines
117
117
  assert_equal([], stdout)
@@ -126,22 +126,5 @@ class TestTefil < Test::Unit::TestCase
126
126
  $stdin = STDIN
127
127
  end
128
128
 
129
- def test_textfilter_command
130
- #result = `echo "ab" | textfilter a A`
131
- #assert_equal("Ab\n", result)
132
-
133
- #setup
134
- #result = `textfilter a A #{TMP00}`
135
- #assert_equal("Abc\ndef\n", result)
136
- #str = File.open(TMP00, "r").read
137
- #assert_equal("abc\ndef\n", str)
138
-
139
- #setup
140
- #result = `textfilter -o a A #{TMP00}`
141
- #assert_equal("", result)
142
- #str = File.open(TMP00, "r").read
143
- #assert_equal("Abc\ndef\n", str)
144
- end
145
-
146
129
  end
147
130
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tefil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-18 00:00:00.000000000 Z
12
+ date: 2013-05-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
16
- requirement: &85293740 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '3.12'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *85293740
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.12'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: bundler
27
- requirement: &85293490 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ~>
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 1.3.5
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *85293490
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.3.5
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: jeweler
38
- requirement: &85293240 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ~>
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: 1.8.3
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *85293240
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.8.3
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: simplecov
49
- requirement: &85292980 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '0'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *85292980
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: builtinextension
60
- requirement: &85292730 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,7 +85,12 @@ dependencies:
65
85
  version: 0.1.0
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *85292730
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 0.1.0
69
94
  description: ! "This gem provides a framework of text filter.\n Tefil eneable to
70
95
  make text filter commands which have overwrite option easily.\n "
71
96
  email: ippei94da@gmail.com
@@ -91,9 +116,10 @@ files:
91
116
  - bin/lineescapezsh
92
117
  - bin/linesub
93
118
  - lib/tefil.rb
94
- - tefil.gemspec
119
+ - lib/tefil/columnformer.rb
95
120
  - test/formcolumn_space
96
121
  - test/helper.rb
122
+ - test/test_columnformer.rb
97
123
  - test/test_tefil.rb
98
124
  homepage: http://github.com/ippei94da/tefil
99
125
  licenses:
@@ -110,7 +136,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
110
136
  version: '0'
111
137
  segments:
112
138
  - 0
113
- hash: -610993165
139
+ hash: 416452449
114
140
  required_rubygems_version: !ruby/object:Gem::Requirement
115
141
  none: false
116
142
  requirements:
@@ -119,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
145
  version: '0'
120
146
  requirements: []
121
147
  rubyforge_project:
122
- rubygems_version: 1.8.11
148
+ rubygems_version: 1.8.23
123
149
  signing_key:
124
150
  specification_version: 3
125
151
  summary: Basic framework of text filter
data/tefil.gemspec DELETED
@@ -1,68 +0,0 @@
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 = "tefil"
8
- s.version = "0.0.2"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["ippei94da"]
12
- s.date = "2013-04-18"
13
- s.description = "This gem provides a framework of text filter.\n Tefil eneable to make text filter commands which have overwrite option easily.\n "
14
- s.email = "ippei94da@gmail.com"
15
- s.executables = ["formcolumn", "lineedit", "lineescapezsh", "linesub"]
16
- s.extra_rdoc_files = [
17
- "LICENSE.txt",
18
- "README.rdoc"
19
- ]
20
- s.files = [
21
- ".document",
22
- "CHANGES",
23
- "Gemfile",
24
- "LICENSE.txt",
25
- "README.rdoc",
26
- "Rakefile",
27
- "VERSION",
28
- "bin/formcolumn",
29
- "bin/lineedit",
30
- "bin/lineescapezsh",
31
- "bin/linesub",
32
- "lib/tefil.rb",
33
- "tefil.gemspec",
34
- "test/formcolumn_space",
35
- "test/helper.rb",
36
- "test/test_tefil.rb"
37
- ]
38
- s.homepage = "http://github.com/ippei94da/tefil"
39
- s.licenses = ["MIT"]
40
- s.require_paths = ["lib"]
41
- s.rubygems_version = "1.8.11"
42
- s.summary = "Basic framework of text filter"
43
-
44
- if s.respond_to? :specification_version then
45
- s.specification_version = 3
46
-
47
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
48
- s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
49
- s.add_development_dependency(%q<bundler>, ["~> 1.3.5"])
50
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
51
- s.add_development_dependency(%q<simplecov>, [">= 0"])
52
- s.add_development_dependency(%q<builtinextension>, [">= 0.1.0"])
53
- else
54
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
55
- s.add_dependency(%q<bundler>, ["~> 1.3.5"])
56
- s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
57
- s.add_dependency(%q<simplecov>, [">= 0"])
58
- s.add_dependency(%q<builtinextension>, [">= 0.1.0"])
59
- end
60
- else
61
- s.add_dependency(%q<rdoc>, ["~> 3.12"])
62
- s.add_dependency(%q<bundler>, ["~> 1.3.5"])
63
- s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
64
- s.add_dependency(%q<simplecov>, [">= 0"])
65
- s.add_dependency(%q<builtinextension>, [">= 0.1.0"])
66
- end
67
- end
68
-