tefil 0.0.0 → 0.0.1
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 +13 -0
- data/Gemfile +2 -1
- data/VERSION +1 -1
- data/bin/formcolumn +48 -0
- data/bin/lineedit +10 -10
- data/bin/{textfilter → lineescapezsh} +8 -12
- data/bin/linesub +36 -0
- data/lib/tefil.rb +46 -46
- data/tefil.gemspec +68 -0
- data/test/formcolumn_space +2 -0
- data/test/test_tefil.rb +132 -132
- metadata +31 -8
data/CHANGES
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
= vasputils changelog
|
2
|
+
|
3
|
+
== Master (for 0.0.2)
|
4
|
+
|
5
|
+
== Version 0.0.1
|
6
|
+
* Change indent character from tab to two spaces.
|
7
|
+
* Rename textfilter to linesub
|
8
|
+
* Add bin/lineescapezsh
|
9
|
+
* Add bin/formcolumn
|
10
|
+
* Add -g option to bin/linesub
|
11
|
+
|
12
|
+
== Version 0.0.0
|
13
|
+
* Initial release.
|
data/Gemfile
CHANGED
@@ -7,7 +7,8 @@ source "http://rubygems.org"
|
|
7
7
|
# Include everything needed to run rake, tests, features, etc.
|
8
8
|
group :development do
|
9
9
|
gem "rdoc", "~> 3.12"
|
10
|
-
gem "bundler", "~> 1.
|
10
|
+
gem "bundler", "~> 1.2.2"
|
11
11
|
gem "jeweler", "~> 1.8.3"
|
12
12
|
gem "simplecov", ">= 0"
|
13
|
+
gem "psych", ">= 0"
|
13
14
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.1
|
data/bin/formcolumn
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
#
|
4
|
+
# USAGE: formcolumn [options] files ...
|
5
|
+
|
6
|
+
INPUT_SEPARATOR = /\s+/
|
7
|
+
|
8
|
+
|
9
|
+
require "pp"
|
10
|
+
require "optparse"
|
11
|
+
require "rubygems"
|
12
|
+
require "tefil"
|
13
|
+
|
14
|
+
# option analysis
|
15
|
+
OPTIONS = {:separator => ' '}
|
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}
|
19
|
+
op.parse!(ARGV)
|
20
|
+
|
21
|
+
module TextFilter
|
22
|
+
def self.process_stream(in_io, out_io)
|
23
|
+
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
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
OPTIONS[:overwrite] ||= false
|
47
|
+
|
48
|
+
TextFilter.run(ARGV, OPTIONS[:overwrite])
|
data/bin/lineedit
CHANGED
@@ -18,16 +18,16 @@ op.on("-o" , "--overwrite" , "Overwrite."){ OPTIONS[:overwrite] = true}
|
|
18
18
|
op.parse!(ARGV)
|
19
19
|
|
20
20
|
module TextFilter
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
21
|
+
def self.process_stream(in_io, out_io)
|
22
|
+
in_io.each do |line|
|
23
|
+
if OPTIONS[:sort]
|
24
|
+
out_io.puts line.chomp.split(//).sort.join('')
|
25
|
+
end
|
26
|
+
if OPTIONS[:random]
|
27
|
+
out_io.puts line.chomp.split(//).sort_by{rand}.join('')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
31
|
end
|
32
32
|
|
33
33
|
OPTIONS[:overwrite] ||= false
|
@@ -1,13 +1,15 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
# coding: utf-8
|
3
3
|
#
|
4
|
-
# USAGE:
|
4
|
+
# USAGE: lineescapezsh [options] files ...
|
5
5
|
|
6
6
|
require "pp"
|
7
7
|
require "optparse"
|
8
8
|
require "rubygems"
|
9
9
|
#gem "tefil"
|
10
10
|
require "tefil.rb"
|
11
|
+
gem "builtinextension"
|
12
|
+
require "string_escape_zsh"
|
11
13
|
|
12
14
|
## option analysis
|
13
15
|
OPTIONS = {}
|
@@ -15,20 +17,14 @@ op = OptionParser.new
|
|
15
17
|
op.on("-o" , "--overwrite" , "Overwrite."){ OPTIONS[:overwrite] = true}
|
16
18
|
op.parse!(ARGV)
|
17
19
|
|
18
|
-
OLD_PATTERN = ARGV.shift
|
19
|
-
NEW_STR = ARGV.shift
|
20
|
-
|
21
20
|
module TextFilter
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
def self.process_stream(in_io, out_io)
|
22
|
+
in_io.each do |line|
|
23
|
+
out_io.puts line.escape_zsh
|
24
|
+
end
|
25
|
+
end
|
27
26
|
end
|
28
27
|
|
29
28
|
OPTIONS[:overwrite] ||= false
|
30
29
|
|
31
|
-
|
32
|
-
#pp OPTIONS[:overwrite]
|
33
|
-
#TextFilter.run(ARGV, OPTIONS[:overwrite])
|
34
30
|
TextFilter.run(ARGV, OPTIONS[:overwrite])
|
data/bin/linesub
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
# coding: utf-8
|
3
|
+
#
|
4
|
+
# USAGE: linesub [options] str0 str1 files ...
|
5
|
+
|
6
|
+
require "pp"
|
7
|
+
require "optparse"
|
8
|
+
require "rubygems"
|
9
|
+
#gem "tefil"
|
10
|
+
require "tefil.rb"
|
11
|
+
|
12
|
+
## option analysis
|
13
|
+
OPTIONS = {}
|
14
|
+
op = OptionParser.new
|
15
|
+
op.on("-o" , "--overwrite" , "Overwrite."){ OPTIONS[:overwrite] = true}
|
16
|
+
op.on("-g" , "--global" , "Globally substitute."){ OPTIONS[:global] = true}
|
17
|
+
op.parse!(ARGV)
|
18
|
+
|
19
|
+
OLD_PATTERN = ARGV.shift
|
20
|
+
NEW_STR = ARGV.shift
|
21
|
+
|
22
|
+
module TextFilter
|
23
|
+
def self.process_stream(in_io, out_io)
|
24
|
+
in_io.each do |line|
|
25
|
+
if OPTIONS[:global]
|
26
|
+
out_io.puts line.gsub(OLD_PATTERN, NEW_STR)
|
27
|
+
else
|
28
|
+
out_io.puts line.sub(OLD_PATTERN, NEW_STR)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
OPTIONS[:overwrite] ||= false
|
35
|
+
|
36
|
+
TextFilter.run(ARGV, OPTIONS[:overwrite])
|
data/lib/tefil.rb
CHANGED
@@ -28,55 +28,55 @@ require "tempfile"
|
|
28
28
|
#
|
29
29
|
module TextFilter
|
30
30
|
|
31
|
-
|
32
|
-
|
31
|
+
class NotRedefinedMethodError < Exception; end
|
32
|
+
class TypeError < Exception; end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
34
|
+
# 保持している入力ファイル対して、順に処理を実行する。
|
35
|
+
# filenames.size が 0 ならば STDIN からの入力を待つことになる。
|
36
|
+
#
|
37
|
+
# STDIN からの入力だった場合、出力先は必ず STDOUT になる。
|
38
|
+
# STDIN からの入力ではない、すなわちファイル入力であった場合、
|
39
|
+
# - overwrite_flag が false ならば STDOUT に出力する。
|
40
|
+
# - overwrite_flag が true ならば 個々のファイルに上書きする。
|
41
|
+
#
|
42
|
+
# Process of each file is defined in 'process_stream' method.
|
43
|
+
#
|
44
|
+
def self.run(filenames, overwrite_flag = false)
|
45
|
+
#p self; exit
|
46
|
+
if filenames.size == 0
|
47
|
+
self.process_stream( $stdin, $stdout )
|
48
|
+
else
|
49
|
+
#p filenames
|
50
|
+
filenames.each do |filename|
|
51
|
+
if overwrite_flag
|
52
|
+
tempfile = Tempfile.new("tefil", "/tmp")
|
53
|
+
File.open(filename, "r") do |input_file|
|
54
|
+
self.process_stream(input_file, tempfile)
|
55
|
+
end
|
56
|
+
tempfile.close
|
57
|
+
tempfile.open
|
58
|
+
File.open(filename, "w") do |output_file|
|
59
|
+
tempfile.each { |line| output_file.puts(line) }
|
60
|
+
end
|
61
|
+
else
|
62
|
+
File.open(filename, "r") do |input_file|
|
63
|
+
self.process_stream(input_file, $stdout)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
69
|
|
70
|
-
|
70
|
+
private
|
71
71
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
72
|
+
# Process a file.
|
73
|
+
# An argument 'in_io' indicates an io (file handle) for input.
|
74
|
+
# Another argument 'out_io' indicates an io (file handle) for output.
|
75
|
+
# This method must be redefined in a subclass or be overridden.
|
76
|
+
# If not redefined, raise an exception TextFilter::NotRedefinedMethodError.
|
77
|
+
def self.process_stream(in_io, out_io)
|
78
|
+
raise NotRedefinedMethodError
|
79
|
+
end
|
80
80
|
|
81
81
|
end
|
82
82
|
|
data/tefil.gemspec
ADDED
@@ -0,0 +1,68 @@
|
|
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.1"
|
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-03-05"
|
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.23"
|
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.2.2"])
|
50
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
|
51
|
+
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
52
|
+
s.add_development_dependency(%q<psych>, [">= 0"])
|
53
|
+
else
|
54
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
55
|
+
s.add_dependency(%q<bundler>, ["~> 1.2.2"])
|
56
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
57
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
58
|
+
s.add_dependency(%q<psych>, [">= 0"])
|
59
|
+
end
|
60
|
+
else
|
61
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
62
|
+
s.add_dependency(%q<bundler>, ["~> 1.2.2"])
|
63
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
64
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
65
|
+
s.add_dependency(%q<psych>, [">= 0"])
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
data/test/test_tefil.rb
CHANGED
@@ -7,141 +7,141 @@ require "tempfile"
|
|
7
7
|
require "fileutils"
|
8
8
|
|
9
9
|
module TextFilter
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
def self.process_stream(in_file, out_file)
|
11
|
+
results = []
|
12
|
+
in_file.each do |line|
|
13
|
+
out_file.puts line.sub('a', 'A')
|
14
|
+
end
|
15
|
+
end
|
16
16
|
end
|
17
17
|
|
18
18
|
class TestTefil < Test::Unit::TestCase
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
19
|
+
TMP00 = "test/tmp00"
|
20
|
+
TMP01 = "test/tmp01"
|
21
|
+
|
22
|
+
def setup
|
23
|
+
FileUtils.rm TMP00 if File.exist? TMP00
|
24
|
+
FileUtils.rm TMP01 if File.exist? TMP01
|
25
|
+
File.open(TMP00, "w") do |io|
|
26
|
+
io.puts "abc"
|
27
|
+
io.puts "def"
|
28
|
+
end
|
29
|
+
File.open(TMP01, "w") do |io|
|
30
|
+
io.puts "abc"
|
31
|
+
io.puts "def"
|
32
|
+
io.puts "cab"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def teardown
|
37
|
+
FileUtils.rm TMP00 if File.exist? TMP00
|
38
|
+
FileUtils.rm TMP01 if File.exist? TMP01
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_self_run
|
42
|
+
# Not found
|
43
|
+
assert_raise(Errno::ENOENT){ TextFilter.run([""]) }
|
44
|
+
assert_raise(Errno::ENOENT){ TextFilter.run([""], true) }
|
45
|
+
|
46
|
+
# ファイル指定なしで標準入力
|
47
|
+
$stdin = StringIO.new
|
48
|
+
$stdin.puts "abc"
|
49
|
+
$stdin.puts "def"
|
50
|
+
$stdin.rewind
|
51
|
+
# stdout
|
52
|
+
$stdout = StringIO.new
|
53
|
+
TextFilter.run([], false)
|
54
|
+
$stdout.rewind
|
55
|
+
t = $stdout.readlines
|
56
|
+
assert_equal([ "Abc\n", "def\n" ], t)
|
57
|
+
$stdout.close
|
58
|
+
|
59
|
+
$stdin = StringIO.new
|
60
|
+
$stdin.puts "abc"
|
61
|
+
$stdin.puts "def"
|
62
|
+
$stdin.rewind
|
63
|
+
$stdout = StringIO.new
|
64
|
+
TextFilter.run([], true)
|
65
|
+
$stdout.rewind
|
66
|
+
t = $stdout.readlines
|
67
|
+
assert_equal([ "Abc\n", "def\n" ], t)
|
68
|
+
$stdout.close
|
69
|
+
|
70
|
+
# 単数のファイルを指定。
|
71
|
+
# overwrite なし。
|
72
|
+
setup
|
73
|
+
$stdout = StringIO.new
|
74
|
+
TextFilter.run([TMP00])
|
75
|
+
$stdout.rewind
|
76
|
+
tmp = $stdout.readlines
|
77
|
+
assert_equal(["Abc\n", "def\n"], tmp)
|
78
|
+
$stdout.close
|
79
|
+
tmp = File.open(TMP00, "r").readlines
|
80
|
+
assert_equal(["abc\n", "def\n"], tmp)
|
81
|
+
tmp = File.open(TMP01, "r").readlines
|
82
|
+
assert_equal(["abc\n", "def\n", "cab\n"], tmp)
|
83
|
+
|
84
|
+
# overwrite あり
|
85
|
+
setup
|
86
|
+
$stdout = StringIO.new
|
87
|
+
TextFilter.run([TMP00], true)
|
88
|
+
$stdout.rewind
|
89
|
+
tmp = $stdout.readlines
|
90
|
+
assert_equal([], tmp)
|
91
|
+
$stdout.close
|
92
|
+
tmp = File.open(TMP00, "r").readlines
|
93
|
+
assert_equal(["Abc\n", "def\n"], tmp)
|
94
|
+
tmp = File.open(TMP01, "r").readlines
|
95
|
+
assert_equal(["abc\n", "def\n", "cab\n"], tmp)
|
96
|
+
|
97
|
+
# 複数のファイルを指定。
|
98
|
+
# overwrite なし。
|
99
|
+
setup
|
100
|
+
$stdout = StringIO.new
|
101
|
+
TextFilter.run([TMP00, TMP01])
|
102
|
+
$stdout.rewind
|
103
|
+
tmp = $stdout.readlines
|
104
|
+
assert_equal(["Abc\n", "def\n", "Abc\n", "def\n", "cAb\n"], tmp)
|
105
|
+
$stdout.close
|
106
|
+
tmp = File.open(TMP00, "r").readlines
|
107
|
+
assert_equal(["abc\n", "def\n"], tmp)
|
108
|
+
tmp = File.open(TMP01, "r").readlines
|
109
|
+
assert_equal(["abc\n", "def\n", "cab\n"], tmp)
|
110
|
+
|
111
|
+
# overwrite あり。
|
112
|
+
setup
|
113
|
+
$stdout = StringIO.new
|
114
|
+
TextFilter.run([TMP00, TMP01], true)
|
115
|
+
$stdout.rewind
|
116
|
+
stdout = $stdout.readlines
|
117
|
+
assert_equal([], stdout)
|
118
|
+
$stdout.close
|
119
|
+
tmp = File.open(TMP00, "r").readlines
|
120
|
+
assert_equal(["Abc\n", "def\n"], tmp)
|
121
|
+
tmp = File.open(TMP01, "r").readlines
|
122
|
+
assert_equal(["Abc\n", "def\n", "cAb\n"], tmp)
|
123
|
+
|
124
|
+
# グローバル変数の標準出力、標準入力を元に戻す。
|
125
|
+
$stdout = STDOUT
|
126
|
+
$stdin = STDIN
|
127
|
+
end
|
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
145
|
|
146
146
|
end
|
147
147
|
|
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.
|
4
|
+
version: 0.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-03-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rdoc
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
requirements:
|
35
35
|
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: 1.
|
37
|
+
version: 1.2.2
|
38
38
|
type: :development
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 1.
|
45
|
+
version: 1.2.2
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: jeweler
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,26 +75,49 @@ dependencies:
|
|
75
75
|
- - ! '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: psych
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
78
94
|
description: ! "This gem provides a framework of text filter.\n Tefil eneable to
|
79
95
|
make text filter commands which have overwrite option easily.\n "
|
80
96
|
email: ippei94da@gmail.com
|
81
97
|
executables:
|
98
|
+
- formcolumn
|
82
99
|
- lineedit
|
83
|
-
-
|
100
|
+
- lineescapezsh
|
101
|
+
- linesub
|
84
102
|
extensions: []
|
85
103
|
extra_rdoc_files:
|
86
104
|
- LICENSE.txt
|
87
105
|
- README.rdoc
|
88
106
|
files:
|
89
107
|
- .document
|
108
|
+
- CHANGES
|
90
109
|
- Gemfile
|
91
110
|
- LICENSE.txt
|
92
111
|
- README.rdoc
|
93
112
|
- Rakefile
|
94
113
|
- VERSION
|
114
|
+
- bin/formcolumn
|
95
115
|
- bin/lineedit
|
96
|
-
- bin/
|
116
|
+
- bin/lineescapezsh
|
117
|
+
- bin/linesub
|
97
118
|
- lib/tefil.rb
|
119
|
+
- tefil.gemspec
|
120
|
+
- test/formcolumn_space
|
98
121
|
- test/helper.rb
|
99
122
|
- test/test_tefil.rb
|
100
123
|
homepage: http://github.com/ippei94da/tefil
|
@@ -112,7 +135,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
112
135
|
version: '0'
|
113
136
|
segments:
|
114
137
|
- 0
|
115
|
-
hash: -
|
138
|
+
hash: -608691921
|
116
139
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
140
|
none: false
|
118
141
|
requirements:
|
@@ -121,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
144
|
version: '0'
|
122
145
|
requirements: []
|
123
146
|
rubyforge_project:
|
124
|
-
rubygems_version: 1.8.
|
147
|
+
rubygems_version: 1.8.23
|
125
148
|
signing_key:
|
126
149
|
specification_version: 3
|
127
150
|
summary: Basic framework of text filter
|