tefil 0.0.3 → 0.1.0

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/tefil.gemspec ADDED
@@ -0,0 +1,95 @@
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
+ # stub: tefil 0.1.0 ruby lib
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "tefil"
9
+ s.version = "0.1.0"
10
+
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
13
+ s.authors = ["ippei94da"]
14
+ s.date = "2015-07-07"
15
+ s.description = "This gem provides a framework of text filter.\n Tefil eneable to make text filter commands which have overwrite option easily.\n "
16
+ s.email = "ippei94da@gmail.com"
17
+ s.executables = ["columnform", "indentconv", "indentstat", "linesub", "percentpack", "zshescape"]
18
+ s.extra_rdoc_files = [
19
+ "LICENSE.txt",
20
+ "README.rdoc"
21
+ ]
22
+ s.files = [
23
+ ".document",
24
+ "CHANGES",
25
+ "Gemfile",
26
+ "LICENSE.txt",
27
+ "README.rdoc",
28
+ "Rakefile",
29
+ "VERSION",
30
+ "bin/columnform",
31
+ "bin/indentconv",
32
+ "bin/indentstat",
33
+ "bin/linesub",
34
+ "bin/percentpack",
35
+ "bin/zshescape",
36
+ "lib/tefil.rb",
37
+ "lib/tefil/columnformer.rb",
38
+ "lib/tefil/indentconverter.rb",
39
+ "lib/tefil/indentstatistics.rb",
40
+ "lib/tefil/linesubstituter.rb",
41
+ "lib/tefil/percentpacker.rb",
42
+ "lib/tefil/textfilterbase.rb",
43
+ "lib/tefil/zshescaper.rb",
44
+ "tefil.gemspec",
45
+ "test/columnformer/sample.txt",
46
+ "test/formcolumn_space",
47
+ "test/helper.rb",
48
+ "test/indentconv/sample0.txt",
49
+ "test/indentconv/sample1.txt",
50
+ "test/indentstat/indent4.txt",
51
+ "test/indentstat/sample0.txt",
52
+ "test/indentstat/sample1.txt",
53
+ "test/percentpack/sample.txt",
54
+ "test/test_columnformer.rb",
55
+ "test/test_indentconverter.rb",
56
+ "test/test_indentstatistics.rb",
57
+ "test/test_linesubstituter.rb",
58
+ "test/test_percentpacker.rb",
59
+ "test/test_textfilterbase.rb",
60
+ "test/test_zshescaper.rb",
61
+ "test/zshescape/sample.txt"
62
+ ]
63
+ s.homepage = "http://github.com/ippei94da/tefil"
64
+ s.licenses = ["MIT"]
65
+ s.rubygems_version = "2.2.2"
66
+ s.summary = "Basic framework of text filter"
67
+
68
+ if s.respond_to? :specification_version then
69
+ s.specification_version = 4
70
+
71
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
72
+ s.add_development_dependency(%q<rdoc>, ["~> 4.0.1"])
73
+ s.add_development_dependency(%q<bundler>, ["~> 1.9.2"])
74
+ s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
75
+ s.add_development_dependency(%q<capture_stdout>, ["~> 0.0.1"])
76
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
77
+ s.add_development_dependency(%q<builtinextension>, [">= 0.1.0"])
78
+ else
79
+ s.add_dependency(%q<rdoc>, ["~> 4.0.1"])
80
+ s.add_dependency(%q<bundler>, ["~> 1.9.2"])
81
+ s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
82
+ s.add_dependency(%q<capture_stdout>, ["~> 0.0.1"])
83
+ s.add_dependency(%q<simplecov>, [">= 0"])
84
+ s.add_dependency(%q<builtinextension>, [">= 0.1.0"])
85
+ end
86
+ else
87
+ s.add_dependency(%q<rdoc>, ["~> 4.0.1"])
88
+ s.add_dependency(%q<bundler>, ["~> 1.9.2"])
89
+ s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
90
+ s.add_dependency(%q<capture_stdout>, ["~> 0.0.1"])
91
+ s.add_dependency(%q<simplecov>, [">= 0"])
92
+ s.add_dependency(%q<builtinextension>, [">= 0.1.0"])
93
+ end
94
+ end
95
+
@@ -0,0 +1,2 @@
1
+ a ab
2
+ abc a
data/test/helper.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'bundler'
3
+ require "capture_stdout"
3
4
  begin
4
5
  Bundler.setup(:default, :development)
5
6
  rescue Bundler::BundlerError => e
@@ -0,0 +1,11 @@
1
+ a
2
+ b
3
+ c
4
+ d
5
+ e
6
+
7
+ c
8
+ d
9
+ e
10
+
11
+ e
@@ -0,0 +1,11 @@
1
+ a
2
+ b
3
+ c
4
+ d
5
+ e
6
+
7
+ c
8
+ d
9
+ e
10
+
11
+ e
@@ -0,0 +1,11 @@
1
+ a
2
+ b
3
+ c
4
+ d
5
+ e
6
+
7
+ c
8
+ d
9
+ e
10
+
11
+ e
@@ -0,0 +1,11 @@
1
+ a
2
+ b
3
+ c
4
+ d
5
+ e
6
+
7
+ c
8
+ d
9
+ e
10
+
11
+ e
@@ -0,0 +1,11 @@
1
+ a
2
+ b
3
+ c
4
+ d
5
+ e
6
+
7
+ c
8
+ d
9
+ e
10
+
11
+ e
@@ -0,0 +1 @@
1
+ %E3%83%86%E3%82%B9%E3%83%88
@@ -6,28 +6,51 @@ require "helper"
6
6
  #require "pkg/klass.rb"
7
7
  require "stringio"
8
8
 
9
+ class Tefil::ColumnFormer
10
+ public :form, :print_size
11
+ end
12
+
9
13
  class TC_ColumnFormer < Test::Unit::TestCase
14
+ def setup
15
+ @cf00 = Tefil::ColumnFormer.new
16
+ end
17
+
18
+ def test_print_size
19
+ assert_equal(2, @cf00.print_size('ab'))
20
+ assert_equal(4, @cf00.print_size('あい'))
21
+ assert_equal(6, @cf00.print_size('abあい'))
22
+ end
23
+
10
24
  def test_form
11
25
  io = StringIO.new
12
26
  matrix = [
13
27
  ["a", "ab"],
14
28
  ["abc", "a"],
15
29
  ]
16
- Tefil::ColumnFormer.form(matrix, io)
30
+ @cf00.form(matrix, io)
17
31
  io.rewind
18
32
  assert_equal(" a ab\nabc a\n", io.read)
19
33
 
20
34
  io = StringIO.new
21
- Tefil::ColumnFormer.form(matrix, io, ",")
35
+ @cf00.form(matrix, io, ",")
22
36
  io.rewind
23
37
  assert_equal(" a,ab\nabc, a\n", io.read)
24
38
 
25
39
  io = StringIO.new
26
- Tefil::ColumnFormer.form(matrix, io, " ", true )
40
+ @cf00.form(matrix, io, " ", true )
27
41
  io.rewind
28
42
  assert_equal("a ab\nabc a\n", io.read)
29
43
  io.rewind
30
44
 
45
+ #####
46
+ io = StringIO.new
47
+ matrix = [
48
+ ["abc", "def"],
49
+ ["あいう", "えおか"],
50
+ ]
51
+ @cf00.form(matrix, io)
52
+ io.rewind
53
+ assert_equal(" abc def\nあいう えおか\n", io.read)
31
54
  end
32
55
  end
33
56
 
@@ -0,0 +1,44 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require "helper"
5
+ require "stringio"
6
+
7
+ class Tefil::IndentConverter
8
+ public :process_stream
9
+ end
10
+
11
+ class TC_IndentConverter < Test::Unit::TestCase
12
+ def setup
13
+ @ic00 = Tefil::IndentConverter.new(' ', 2, ' ', 4, {})
14
+ end
15
+
16
+ def test_process_stream
17
+ # stdin -> stdout
18
+ $stdin = StringIO.new
19
+ $stdin.puts "a"
20
+ $stdin.puts " b"
21
+ $stdin.puts " c"
22
+ $stdin.puts " d"
23
+ $stdin.puts " e"
24
+ $stdin.puts " f"
25
+ $stdin.rewind
26
+ str = capture_stdout{}
27
+ result = capture_stdout{ @ic00.filter([])}
28
+ correct =
29
+ "a\n" +
30
+ " b\n" +
31
+ " c\n" +
32
+ " d\n" +
33
+ " e\n" +
34
+ " f\n"
35
+ assert_equal(correct, result)
36
+ end
37
+ end
38
+
39
+
40
+
41
+
42
+
43
+
44
+
@@ -0,0 +1,38 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require "helper"
5
+ require "stringio"
6
+
7
+ class Tefil::IndentConverter
8
+ public :process_stream
9
+ end
10
+
11
+ class TC_IndentStatistics < Test::Unit::TestCase
12
+ def setup
13
+ @is00 = Tefil::IndentStatistics.new()
14
+ end
15
+
16
+ def test_process_stream
17
+ # stdin -> stdout
18
+ $stdin = StringIO.new
19
+ $stdin.puts "a"
20
+ $stdin.puts " b"
21
+ $stdin.puts " c"
22
+ $stdin.puts " d"
23
+ $stdin.puts " e"
24
+ $stdin.puts " f"
25
+ $stdin.puts " g"
26
+ $stdin.puts " h"
27
+ $stdin.rewind
28
+ str = capture_stdout{}
29
+ result = capture_stdout{ @is00.filter([])}
30
+ correct =
31
+ " 0|*\n" +
32
+ " 2|***\n" +
33
+ " 4|****\n"
34
+ assert_equal(correct, result)
35
+ end
36
+ end
37
+
38
+
@@ -0,0 +1,45 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require "helper"
5
+ require "stringio"
6
+
7
+ class Tefil::LineSubstituter
8
+ public :process_stream
9
+ end
10
+
11
+ class TC_LineSubstituter < Test::Unit::TestCase
12
+ def setup
13
+ @is00 = Tefil::LineSubstituter.new('abc', 'XYZ')
14
+ @is01 = Tefil::LineSubstituter.new('abc', 'XYZ', {:global => true})
15
+ end
16
+
17
+ def test_process_stream
18
+ setup
19
+ $stdin = StringIO.new
20
+ $stdin.puts "abcdabcd"
21
+ $stdin.puts "ABCDABCD"
22
+ $stdin.rewind
23
+ str = capture_stdout{}
24
+ result = capture_stdout{ @is00.filter([])}
25
+ correct =
26
+ "XYZdabcd\n" +
27
+ "ABCDABCD\n"
28
+ assert_equal(correct, result)
29
+
30
+
31
+ setup
32
+ $stdin = StringIO.new
33
+ $stdin.puts "abcdabcd"
34
+ $stdin.puts "ABCDABCD"
35
+ $stdin.rewind
36
+ str = capture_stdout{}
37
+ result = capture_stdout{ @is01.filter([])}
38
+ correct =
39
+ "XYZdXYZd\n" +
40
+ "ABCDABCD\n"
41
+ assert_equal(correct, result)
42
+
43
+ end
44
+ end
45
+
@@ -0,0 +1,29 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require "helper"
5
+ require "stringio"
6
+
7
+ class Tefil::PercentPacker
8
+ public :process_stream
9
+ end
10
+
11
+ class TC_PercentPacker < Test::Unit::TestCase
12
+ def setup
13
+ @pp00 = Tefil::PercentPacker.new()
14
+ end
15
+
16
+ def test_process_stream
17
+ # stdin -> stdout
18
+ $stdin = StringIO.new
19
+ $stdin.puts '%E3%83%86%E3%82%B9%E3%83%88'
20
+ $stdin.rewind
21
+ str = capture_stdout{}
22
+ result = capture_stdout{ @pp00.filter([])}
23
+ correct = "テスト\n"
24
+ assert_equal(correct, result)
25
+ end
26
+ end
27
+
28
+
29
+
@@ -0,0 +1,182 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'helper'
5
+ require "test/unit"
6
+ require "tefil.rb"
7
+ require "stringio"
8
+ require "tempfile"
9
+ require "fileutils"
10
+
11
+ class SampleFilter < Tefil::TextFilterBase
12
+ def process_stream(in_file, out_file)
13
+ results = []
14
+ in_file.each do |line|
15
+ out_file.puts line.sub('a', 'A')
16
+ end
17
+ end
18
+ end
19
+
20
+ class TestTefil < Test::Unit::TestCase
21
+ TMP00 = "test/tmp00"
22
+ TMP01 = "test/tmp01"
23
+
24
+ def setup
25
+ @t00 = SampleFilter.new
26
+ $stdin = STDIN
27
+ $stdout = STDOUT
28
+ @t01 = SampleFilter.new({:overwrite => true})
29
+
30
+ @t02 = SampleFilter.new({:smart_filename => true})
31
+ @t03 = SampleFilter.new({:overwrite => true,
32
+ :smart_filename => true})
33
+
34
+ FileUtils.rm TMP00 if File.exist? TMP00
35
+ FileUtils.rm TMP01 if File.exist? TMP01
36
+ File.open(TMP00, "w") do |io|
37
+ io.puts "abc"
38
+ io.puts "def"
39
+ end
40
+ File.open(TMP01, "w") do |io|
41
+ io.puts "abc"
42
+ io.puts "def"
43
+ io.puts "cab"
44
+ end
45
+ end
46
+
47
+ def teardown
48
+ FileUtils.rm TMP00 if File.exist? TMP00
49
+ FileUtils.rm TMP01 if File.exist? TMP01
50
+ end
51
+
52
+ def test_filter
53
+ # stdin -> stdout
54
+ $stdin = StringIO.new
55
+ $stdin.puts "abc"
56
+ $stdin.puts "def"
57
+ $stdin.rewind
58
+ str = capture_stdout{}
59
+ result = capture_stdout{ @t00.filter([])}
60
+ correct = "Abc\n" + "def\n"
61
+ assert_equal(correct, result)
62
+
63
+ # 1 file-> stdout
64
+ setup
65
+ str = capture_stdout{}
66
+ result = capture_stdout{ @t00.filter([TMP00])}
67
+ correct =
68
+ "Abc\n" + "def\n"
69
+ assert_equal(correct, result)
70
+ tmp00 = File.open(TMP00, "r").readlines
71
+ assert_equal(["abc\n", "def\n"], tmp00)
72
+ tmp01 = File.open(TMP01, "r").readlines
73
+ assert_equal(["abc\n", "def\n", "cab\n"], tmp01)
74
+
75
+ # 2 files -> stdout
76
+ setup
77
+ str = capture_stdout{}
78
+ result = capture_stdout{ @t00.filter([TMP00, TMP01])}
79
+ correct = "Abc\n" + "def\n" + "Abc\n" + "def\n" + "cAb\n"
80
+ assert_equal(correct, result)
81
+ tmp00 = File.open(TMP00, "r").readlines
82
+ assert_equal(["abc\n", "def\n"], tmp00)
83
+ tmp01 = File.open(TMP01, "r").readlines
84
+ assert_equal(["abc\n", "def\n", "cab\n"], tmp01)
85
+
86
+ # smart_filename
87
+ setup
88
+ str = capture_stdout{}
89
+ result = capture_stdout{ @t02.filter([TMP00])}
90
+ correct = "Abc\n" + "def\n"
91
+ assert_equal(correct, result)
92
+ tmp00 = File.open(TMP00, "r").readlines
93
+ assert_equal(["abc\n", "def\n"], tmp00)
94
+ tmp01 = File.open(TMP01, "r").readlines
95
+ assert_equal(["abc\n", "def\n", "cab\n"], tmp01)
96
+
97
+ # smart_filename and overwrite # 2 files -> stdout
98
+ setup
99
+ str = capture_stdout{}
100
+ result = capture_stdout{ @t03.filter([TMP00, TMP01])}
101
+ correct = ""
102
+ assert_equal(correct, result)
103
+ tmp = File.open(TMP00, "r").readlines
104
+ assert_equal(["Abc\n", "def\n"], tmp)
105
+ tmp = File.open(TMP01, "r").readlines
106
+ assert_equal(["Abc\n", "def\n", "cAb\n"], tmp)
107
+
108
+ # Not found
109
+ assert_raise(Errno::ENOENT){ @t00.filter([""]) }
110
+ assert_raise(Errno::ENOENT){ @t01.filter([""]) }
111
+ end
112
+
113
+ def test_filter_overwrite
114
+ # 1 file-> stdout
115
+ setup
116
+ str = capture_stdout{}
117
+ result = capture_stdout{ @t01.filter([TMP00])}
118
+ correct = ""
119
+ assert_equal(correct, result)
120
+ tmp = File.open(TMP00, "r").readlines
121
+ assert_equal(["Abc\n", "def\n"], tmp)
122
+ tmp = File.open(TMP01, "r").readlines
123
+ assert_equal(["abc\n", "def\n", "cab\n"], tmp)
124
+
125
+ # 2 files -> stdout
126
+ setup
127
+ str = capture_stdout{}
128
+ result = capture_stdout{ @t01.filter([TMP00, TMP01])}
129
+ correct = ""
130
+ assert_equal(correct, result)
131
+ tmp = File.open(TMP00, "r").readlines
132
+ assert_equal(["Abc\n", "def\n"], tmp)
133
+ tmp = File.open(TMP01, "r").readlines
134
+ assert_equal(["Abc\n", "def\n", "cAb\n"], tmp)
135
+ end
136
+
137
+ # def test_self_filter
138
+ # $stdin = StringIO.new
139
+ # $stdin.puts "abc"
140
+ # $stdin.puts "def"
141
+ # $stdin.rewind
142
+ # str = capture_stdout{}
143
+ # result = capture_stdout{ SampleFilter.filter([], true) }
144
+ # correct = "Abc\n" + "def\n"
145
+ # assert_equal(correct, result)
146
+ # tmp = File.open(TMP00, "r").readlines
147
+ # assert_equal(["Abc\n", "def\n"], tmp)
148
+ # tmp = File.open(TMP01, "r").readlines
149
+ # assert_equal(["Abc\n", "def\n", "cAb\n"], tmp)
150
+ #
151
+ #
152
+ # # 単数のファイルを指定。
153
+ # # overwrite なし。
154
+ # setup
155
+ # $stdout = StringIO.new
156
+ # SampleFilter.filter([TMP00])
157
+ # $stdout.rewind
158
+ # tmp = $stdout.readlines
159
+ # assert_equal(["Abc\n", "def\n"], tmp)
160
+ # $stdout.close
161
+ # tmp = File.open(TMP00, "r").readlines
162
+ # assert_equal(["abc\n", "def\n"], tmp)
163
+ # tmp = File.open(TMP01, "r").readlines
164
+ # assert_equal(["abc\n", "def\n", "cab\n"], tmp)
165
+ #
166
+ # # 複数のファイルを指定。
167
+ # # overwrite なし。
168
+ # setup
169
+ # $stdout = StringIO.new
170
+ # SampleFilter.filter([TMP00, TMP01])
171
+ # $stdout.rewind
172
+ # tmp = $stdout.readlines
173
+ # assert_equal(["Abc\n", "def\n", "Abc\n", "def\n", "cAb\n"], tmp)
174
+ # $stdout.close
175
+ # tmp = File.open(TMP00, "r").readlines
176
+ # assert_equal(["abc\n", "def\n"], tmp)
177
+ # tmp = File.open(TMP01, "r").readlines
178
+ # assert_equal(["abc\n", "def\n", "cab\n"], tmp)
179
+ # end
180
+
181
+ end
182
+
@@ -0,0 +1,29 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require "helper"
5
+ require "stringio"
6
+
7
+ class Tefil::ZshEscaper
8
+ public :process_stream
9
+ end
10
+
11
+ class TC_ZshEscaper < Test::Unit::TestCase
12
+ def setup
13
+ @is00 = Tefil::ZshEscaper.new()
14
+ end
15
+
16
+ def test_process_stream
17
+ # stdin -> stdout
18
+ $stdin = StringIO.new
19
+ $stdin.puts "abcdABCD * * *"
20
+ $stdin.rewind
21
+ str = capture_stdout{}
22
+ result = capture_stdout{ @is00.filter([])}
23
+ correct = 'abcdABCD\ \*\ \*\ \*' + "\n"
24
+ assert_equal(correct, result)
25
+ end
26
+ end
27
+
28
+
29
+
@@ -0,0 +1,2 @@
1
+ abcdABCD * * *
2
+