tefil 0.0.2 → 0.0.3

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/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
-