tefil 0.1.4 → 0.1.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a9f33d97e6372c4513f17026dab55e47d8452db9
4
- data.tar.gz: 658c279c7e6a680f391835939078731c54f59d64
3
+ metadata.gz: b17ca385c9007e407470b7bc20a352f1e218a46f
4
+ data.tar.gz: 61dc4ec8abad83dc9e306a60347a383b99c90628
5
5
  SHA512:
6
- metadata.gz: 7f5c7690d8c562c88f7337553d793d66529660a6ee661ea9f50a1a19f2f08c5c6efbe3c601bbb0018b39dd1f9b9c150742b539a917ad43daa9bf3ba323a5eb12
7
- data.tar.gz: 234e09896e7d87602852e0c5469dcb28206a7897db63ecf485ad7b1a6c429dd31284dfe309cf0fe4b9d5617e650e565f46c86adf57c512129f18dcd7434018be
6
+ metadata.gz: ca0479bb7601d8f976bed6e8db4aaa9722c22721a8e8cdde0d53f177d5d26b48f8609dd95c9f845316359eb6d0aadc436777b33aa1770a009dc85317f4f8fd55
7
+ data.tar.gz: b8544dd354cf217ebcead34b7db977184dd0e24329cce552dd02c1df4aaa0a5ef1ab36b926860b2823f79b9804b30ee936e0d1dc6cefcd7a9b7a4071f0ecee29
data/CHANGES CHANGED
@@ -1,6 +1,15 @@
1
1
  = tefil changelog
2
2
 
3
- == Master (for 0.1.5)
3
+ == Version 0.1.5 [2018-05-11] released
4
+
5
+ * bin/fswiki2md: add new line after header
6
+ * bugfix for new line at the end of the stream
7
+ * Enable to use not String in the matrix for Tefil::ColumnFormer#form
8
+ * bugfix for bin/md2fswiki
9
+ * delete bin/statistics # move to gem 'malge'
10
+ * catch broken pipe and do nothing
11
+ * bin/columnform: add --transpose option
12
+ * rename: bin/eachsentence to bin/linesplit with adding some functions
4
13
 
5
14
  == Version 0.1.4 [2017-05-31] released
6
15
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
@@ -19,6 +19,7 @@ op.on("-o" , "--overwrite" , "Overwrite"){ OPTIONS[:overwrite] = true
19
19
  op.on("-s char", "--separator=char", "Indicate separator"){|val| OPTIONS[:separator] = val}
20
20
  op.on("-l" , "--left-just" , "Left justified (Default)" ){ OPTIONS[:just] = :left}
21
21
  op.on("-r" , "--right-just" , "Right justified"){ OPTIONS[:just] = :right}
22
+ op.on("-t" , "--transpose" , "Transpose matrix"){ OPTIONS[:transpose] = true}
22
23
  op.parse!(ARGV)
23
24
 
24
25
  ## default settings
@@ -0,0 +1,48 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ # split a line to lines.
5
+
6
+ require "pp"
7
+ require "optparse"
8
+ require "rubygems"
9
+ require "tefil"
10
+
11
+
12
+ # option analysis
13
+ options = {
14
+ #:period => true,
15
+ :separator => ".",
16
+ :except => ""
17
+ }
18
+ op = OptionParser.new
19
+ #op.banner = [
20
+ # "Usage: #{File.basename("#{__FILE__}")} [options] [files]",
21
+ #].join("\n")
22
+ op.on("-o" , "--overwrite" , "Overwrite."){ options[:overwrite] = true}
23
+ op.on("-t str" , "--separator=str" , "Target strings. Default value is '.'"){ |v| options[:separator] = v}
24
+ op.on("-e str" , "--except=str" , "Except strings."){ |v| options[:except] = v}
25
+ op.on("-s" , "--space" , "Add space to separators."){ options[:space] = true}
26
+ op.on("-S" , "--strip" , "Strip extra space at head and tail of line."){ options[:strip] = true}
27
+ op.parse!(ARGV)
28
+
29
+ options[:overwrite] ||= false
30
+
31
+ #EXCEPT_WORDS = ["Fig.", "FIG."]
32
+
33
+ separators = []
34
+ separators += options[:separator].split(" ")
35
+ separators << ' ' if options[:space]
36
+ separators.uniq!
37
+
38
+ indent_mode = :no
39
+ indent_mode = :strip if options[:strip]
40
+
41
+ #pp separators; exit
42
+
43
+ is = Tefil::LineSplitter.new(separators: separators,
44
+ except_words: options[:except].split(" "),
45
+ indent_mode: indent_mode,
46
+ options: options)
47
+ #pp is; exit
48
+ is.filter(ARGV)
@@ -0,0 +1,6 @@
1
+ #! /bin/sh
2
+
3
+ linesplit sample1.txt --separator="." --except="Fig."
4
+ linesplit sample2.txt --separator="。 . 、 ,"
5
+ linesplit sample3.txt --separator="、 。" --except="Fig."
6
+ linesplit sample4.txt --strip
@@ -0,0 +1 @@
1
+ A bad workman always blames his tools. Once a beggar, always a beggar.
@@ -0,0 +1,2 @@
1
+ あいうえお。かきくけこ。あいうえお.かきくけこ.あいうえお、かきくけこ、あいうえお,かきくけこ,
2
+
@@ -0,0 +1,2 @@
1
+ 本日は晴天なり。晴天の写真を Fig. 1 に示す。かるいきびんなこねこなんびきいるかといわれれば、たけやぶやけた、しんぶんし、きつつき、とまとと返された。
2
+ 昨日は曇天なり。
@@ -0,0 +1,5 @@
1
+ indent0. abcde.
2
+ indent2. abcde.
3
+ indent4. abcde.
4
+ indent2. abcde.
5
+ indent0. abcde.
@@ -11,11 +11,10 @@ require 'tefil/columnformer'
11
11
  require 'tefil/columnanalyzer'
12
12
  require 'tefil/indentconverter'
13
13
  require 'tefil/indentstatistics'
14
- require 'tefil/statistics'
15
14
  require 'tefil/linesubstituter'
16
15
  require 'tefil/percentpacker'
17
16
  require 'tefil/zshescaper'
18
- require 'tefil/eachsentence.rb'
17
+ require 'tefil/linesplitter.rb'
19
18
  require 'tefil/fswikitomd.rb'
20
19
  require 'tefil/mdtofswiki.rb'
21
20
 
@@ -29,12 +29,16 @@ class Tefil::ColumnFormer < Tefil::TextFilterBase
29
29
  def initialize(options = {})
30
30
  @just = options[:just] || :left
31
31
  @separator = options[:separator] || ' '
32
+ @transpose = options[:transpose]
32
33
  super(options)
33
34
  end
34
35
 
35
36
  #def form(matrix, io = $stdout, separator = " ", left = false)
36
37
  def form(matrix, io = $stdout, indent = 0)
37
38
  #Obtain max length for each column.
39
+
40
+ matrix = matrix.transpose if @transpose
41
+
38
42
  max_lengths = []
39
43
  matrix.each do |row|
40
44
  row.each_with_index do |item, index|
@@ -49,6 +53,7 @@ class Tefil::ColumnFormer < Tefil::TextFilterBase
49
53
  matrix.each do |row|
50
54
  new_items = []
51
55
  row.each_with_index do |item, index|
56
+ item = item.to_s
52
57
  method = (@just.to_s + "_just").to_sym
53
58
  new_items[index] = item.send(method, max_lengths[index])
54
59
  end
@@ -57,7 +57,17 @@ class Tefil::FswikiToMd < Tefil::TextFilterBase
57
57
  end
58
58
 
59
59
  # 出力
60
- out_io.puts line
60
+ out_io.print line
61
+
62
+ #p "test"
63
+ ## 空行処理
64
+ case
65
+ when type == :head1 then out_io.puts
66
+ when type == :head2 then out_io.puts
67
+ when type == :head3 then out_io.puts
68
+ else # type == :pain then 'do nothing'
69
+ end
70
+
61
71
  end
62
72
  end
63
73
  end
@@ -0,0 +1,50 @@
1
+ # coding: utf-8
2
+ class Tefil::LineSplitter < Tefil::TextFilterBase
3
+
4
+ def initialize(separators: , indent_mode: :no, except_words: [], options: {})
5
+ options[:smart_filename] = true
6
+ @minimum = options[:minimum]
7
+ @separators = separators
8
+ @except_words = except_words
9
+ @indent_mode = indent_mode
10
+ super(options)
11
+ end
12
+
13
+ def process_stream(in_io, out_io)
14
+ results = []
15
+
16
+ # prepare substitute info to get back to original for except rule.
17
+ sub_except_words = Marshal.load(Marshal.dump(@except_words))
18
+ @separators.each do |str|
19
+ sub_except_words.map do |word|
20
+ word.gsub!(str, str + "\n")
21
+ end
22
+ end
23
+
24
+ in_io.read.split("\n").each do |line|
25
+ #if @indent_mode == :indent
26
+ # /^( *)/ =~ line
27
+ # head_spaces = $1
28
+ #end
29
+ @separators.each do |str|
30
+ line.gsub!(str, str + "\n")
31
+ end
32
+ @except_words.each_with_index do |word, index|
33
+ line.gsub!(sub_except_words[index], word)
34
+ end
35
+ # 行の頭と末尾の空白 strip
36
+ if @indent_mode == :strip
37
+ line.gsub!(/\n */, "\n")
38
+ line.strip!
39
+ line.gsub!(/ */, " ")
40
+ end
41
+ #if @indent_mode == :indent
42
+ # results << head_spaces + line
43
+ #end
44
+ results << line
45
+ end
46
+ out_io.puts results.join("\n")
47
+ end
48
+
49
+ end
50
+
@@ -18,10 +18,10 @@ class Tefil::MdToFswiki < Tefil::TextFilterBase
18
18
  when line.sub!(/^ \*/ , '') then type = :item3
19
19
  when line.sub!(/^ \*/ , '') then type = :item2
20
20
  when line.sub!(/^\*/ , '') then type = :item1
21
- when line.sub!(/^ \d+./, '') then type = :enum4
22
- when line.sub!(/^ \d+./ , '') then type = :enum3
23
- when line.sub!(/^ \d+./ , '') then type = :enum2
24
- when line.sub!(/^\d+./ , '') then type = :enum1
21
+ when line.sub!(/^ \d+\./, '') then type = :enum4
22
+ when line.sub!(/^ \d+\./ , '') then type = :enum3
23
+ when line.sub!(/^ \d+\./ , '') then type = :enum2
24
+ when line.sub!(/^\d+\./ , '') then type = :enum1
25
25
  when line.sub!(/^ / , '') then type = :pre
26
26
  when line.sub!(/^---/ , '') then type = :hline
27
27
  else type = :plain
@@ -54,7 +54,7 @@ class Tefil::MdToFswiki < Tefil::TextFilterBase
54
54
  end
55
55
 
56
56
  # 出力
57
- out_io.puts line
57
+ out_io.print line
58
58
  end
59
59
  end
60
60
  end
@@ -71,6 +71,7 @@ class Tefil::TextFilterBase
71
71
  rescue ArgumentError, Errno::EISDIR
72
72
  $stderr.puts $!
73
73
  next
74
+ rescue Errno::EPIPE
74
75
  end
75
76
 
76
77
  if @overwrite
@@ -105,5 +106,13 @@ class Tefil::TextFilterBase
105
106
  raise NotRedefinedMethodError
106
107
  end
107
108
 
109
+ def process_string(in_str)
110
+ in_io = StringIO.open in_str
111
+ out_io = StringIO.new
112
+ process_stream(in_io, out_io)
113
+ out_io.rewind
114
+ out_io.read
115
+ end
116
+
108
117
  end
109
118
 
@@ -2,19 +2,19 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: tefil 0.1.4 ruby lib
5
+ # stub: tefil 0.1.5 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "tefil"
9
- s.version = "0.1.4"
9
+ s.version = "0.1.5"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["ippei94da"]
14
- s.date = "2017-05-31"
14
+ s.date = "2018-05-11"
15
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
16
  s.email = "ippei94da@gmail.com"
17
- s.executables = ["calc", "columnanalyze", "columnform", "eachsentence", "fswiki2md", "indentconv", "indentstat", "linesub", "md2fswiki", "percentpack", "statistics", "zshescape"]
17
+ s.executables = ["calc", "columnanalyze", "columnform", "fswiki2md", "indentconv", "indentstat", "linesplit", "linesub", "md2fswiki", "percentpack", "zshescape"]
18
18
  s.extra_rdoc_files = [
19
19
  "LICENSE.txt",
20
20
  "README.rdoc"
@@ -30,14 +30,13 @@ Gem::Specification.new do |s|
30
30
  "bin/calc",
31
31
  "bin/columnanalyze",
32
32
  "bin/columnform",
33
- "bin/eachsentence",
34
33
  "bin/fswiki2md",
35
34
  "bin/indentconv",
36
35
  "bin/indentstat",
36
+ "bin/linesplit",
37
37
  "bin/linesub",
38
38
  "bin/md2fswiki",
39
39
  "bin/percentpack",
40
- "bin/statistics",
41
40
  "bin/zshescape",
42
41
  "doc/memo.txt",
43
42
  "example/calc/run.zsh",
@@ -46,26 +45,29 @@ Gem::Specification.new do |s|
46
45
  "example/columnanalyze/run.zsh",
47
46
  "example/columnformer/indent.txt",
48
47
  "example/columnformer/sample.txt",
49
- "example/eachsentence/sample.txt",
50
48
  "example/indentconv/sample0.txt",
51
49
  "example/indentconv/sample1.txt",
52
50
  "example/indentstat/indent4.txt",
53
51
  "example/indentstat/sample0.txt",
54
52
  "example/indentstat/sample1.txt",
53
+ "example/linesplit/run.sh",
54
+ "example/linesplit/sample1.txt",
55
+ "example/linesplit/sample2.txt",
56
+ "example/linesplit/sample3.txt",
57
+ "example/linesplit/sample4.txt",
55
58
  "example/percentpack/sample.txt",
56
59
  "example/zshescape/sample.txt",
57
60
  "lib/tefil.rb",
58
61
  "lib/tefil/calculator.rb",
59
62
  "lib/tefil/columnanalyzer.rb",
60
63
  "lib/tefil/columnformer.rb",
61
- "lib/tefil/eachsentence.rb",
62
64
  "lib/tefil/fswikitomd.rb",
63
65
  "lib/tefil/indentconverter.rb",
64
66
  "lib/tefil/indentstatistics.rb",
67
+ "lib/tefil/linesplitter.rb",
65
68
  "lib/tefil/linesubstituter.rb",
66
69
  "lib/tefil/mdtofswiki.rb",
67
70
  "lib/tefil/percentpacker.rb",
68
- "lib/tefil/statistics.rb",
69
71
  "lib/tefil/textfilterbase.rb",
70
72
  "lib/tefil/zshescaper.rb",
71
73
  "tefil.gemspec",
@@ -76,14 +78,13 @@ Gem::Specification.new do |s|
76
78
  "test/test_calculator.rb",
77
79
  "test/test_columnanalyzer.rb",
78
80
  "test/test_columnformer.rb",
79
- "test/test_eachsentence.rb",
80
81
  "test/test_fswikitomd.rb",
81
82
  "test/test_indentconverter.rb",
82
83
  "test/test_indentstatistics.rb",
84
+ "test/test_linesplitter.rb",
83
85
  "test/test_linesubstituter.rb",
84
86
  "test/test_mdtofswiki.rb",
85
87
  "test/test_percentpacker.rb",
86
- "test/test_statistics.rb",
87
88
  "test/test_textfilterbase.rb",
88
89
  "test/test_zshescaper.rb"
89
90
  ]
@@ -15,6 +15,7 @@ class TC_ColumnFormer < Test::Unit::TestCase
15
15
  @cf00 = Tefil::ColumnFormer.new
16
16
  @cf01 = Tefil::ColumnFormer.new({:just => :right})
17
17
  @cf02 = Tefil::ColumnFormer.new({:separator => ','})
18
+ @cf03 = Tefil::ColumnFormer.new({:transpose => true})
18
19
  end
19
20
 
20
21
  def test_print_size
@@ -38,7 +39,6 @@ class TC_ColumnFormer < Test::Unit::TestCase
38
39
  io.rewind
39
40
  assert_equal(" a ab\n abc a\n", io.read)
40
41
 
41
-
42
42
  io = StringIO.new
43
43
  @cf01.form(matrix, io)
44
44
  io.rewind
@@ -60,8 +60,25 @@ class TC_ColumnFormer < Test::Unit::TestCase
60
60
  io.rewind
61
61
  assert_equal("abc def\nあいう えおか\n", io.read)
62
62
 
63
- ####
64
-
63
+ ##### not string
64
+ io = StringIO.new
65
+ matrix = [
66
+ [0, 1],
67
+ [2, 3],
68
+ ]
69
+ @cf00.form(matrix, io)
70
+ io.rewind
71
+ assert_equal("0 1\n2 3\n", io.read)
72
+
73
+ #### transpose
74
+ io = StringIO.new
75
+ matrix = [
76
+ [0, 1],
77
+ [2, 3],
78
+ ]
79
+ @cf03.form(matrix, io)
80
+ io.rewind
81
+ assert_equal("0 2\n1 3\n", io.read)
65
82
  end
66
83
  end
67
84
 
@@ -5,7 +5,8 @@ require "helper"
5
5
  require "stringio"
6
6
 
7
7
  class Tefil::FswikiToMd
8
- public :process_stream
8
+ public :process_stream,
9
+ :process_string
9
10
  end
10
11
 
11
12
  class TC_FswikiToMd < Test::Unit::TestCase
@@ -13,91 +14,140 @@ class TC_FswikiToMd < Test::Unit::TestCase
13
14
  @f00 = Tefil::FswikiToMd.new()
14
15
  end
15
16
 
16
- def test_process_stream
17
- [
18
- ["!!! head1" , "# head1" ],
19
- ["!! head2" , "## head2" ],
20
- ["! head3" , "### head3" ],
21
- ["abc ''italic'' def" , "abc *italic* def" ],
22
- ["abc '''bold''' def" , "abc **bold** def" ],
23
- #["abc ==strike== def" , ],
24
- #["abc __underline__ def" , ],
25
- #['"" quotation' , ],
26
- ["* item" , "* item" ],
27
- ["** item" , " * item" ],
28
- ["*** item" , " * item" ],
29
- ["**** item" , " * item" ],
30
- ["+ enum" , "1. enum" ],
31
- ["++ enum" , " 1. enum" ],
32
- ["+++ enum" , " 1. enum" ],
33
- ["++++ enum" , " 1. enum" ],
34
- #["*http://www.yahoo.co.jp/" , ],
35
- ["[Google|http://www.google.co.jp/]" , "[Google](http://www.google.co.jp/)" ],
36
- [" formatted text" , " formatted text" ],
37
- ["----" , "---" ],
38
- ["// comment" , "<!-- comment-->" ],
39
- ].each do |i|
40
- $stdin = StringIO.new
41
- $stdin.puts i[0]
42
- $stdin.rewind
43
- #str = capture_stdout{}
44
- result = capture_stdout{ @f00.filter([])}
45
- correct = sprintf("#{i[1]}\n")
46
- assert_equal(correct, result)
47
- end
17
+ def test_process_string
18
+ assert_equal("# head1\n\n", @f00.process_string("!!! head1\n"))
19
+ assert_equal("# head2\n\n", @f00.process_string("!!! head2\n"))
20
+ assert_equal("# head3\n\n", @f00.process_string("!!! head3\n"))
48
21
 
49
- ## stdin -> stdout
50
- #$stdin = StringIO.new
51
- #$stdin.puts "!!! head1"
52
- #$stdin.puts "!! head2"
53
- #$stdin.puts "! head3"
54
- #$stdin.puts "abc ''italic'' def"
55
- #$stdin.puts "abc '''bold''' def"
56
- ##$stdin.puts "abc ==strike== def"
57
- ##$stdin.puts "abc __underline__ def"
58
- ##$stdin.puts '"" quotation'
59
- #$stdin.puts "* item"
60
- #$stdin.puts "** item"
61
- #$stdin.puts "*** item"
62
- #$stdin.puts "**** item"
63
- #$stdin.puts "+ enum"
64
- #$stdin.puts "++ enum"
65
- #$stdin.puts "+++ enum"
66
- #$stdin.puts "++++ enum"
67
- ##$stdin.puts "*http://www.yahoo.co.jp/"
68
- #$stdin.puts "[Google|http://www.google.co.jp/]"
69
- #$stdin.puts " formatted text"
70
- #$stdin.puts "----" #horizontal line
71
- ##$stdin.puts "abc // commented out"
72
- #$stdin.rewind
73
- #str = capture_stdout{}
74
- #result = capture_stdout{ @f00.filter([])}
75
- #correct = [
76
- # "# head1",
77
- # "## head2",
78
- # "### head3",
79
- # "abc *italic* def",
80
- # "abc **bold** def",
81
- # "* item",
82
- # " * item",
83
- # " * item",
84
- # " * item",
85
- # "0. enum",
86
- # " 0. enum",
87
- # " 0. enum",
88
- # " 0. enum",
89
- # "[Google](http://www.google.co.jp/)",
90
- # " formatted text",
91
- # "---",
92
- # ""
93
- #].join("\n")
94
- #assert_equal(correct, result)
22
+ assert_equal("abc *italic* def",
23
+ @f00.process_string("abc ''italic'' def"))
24
+ assert_equal("abc **bold** def",
25
+ @f00.process_string("abc '''bold''' def"))
26
+ assert_equal( "* item",
27
+ @f00.process_string("* item"))
28
+ assert_equal(" * item",
29
+ @f00.process_string("** item"))
30
+ assert_equal(" * item",
31
+ @f00.process_string("*** item"))
32
+ assert_equal(" * item",
33
+ @f00.process_string("**** item"))
34
+ assert_equal("1. enum",
35
+ @f00.process_string("+ enum"))
36
+ assert_equal(" 1. enum",
37
+ @f00.process_string("++ enum"))
38
+ assert_equal(" 1. enum",
39
+ @f00.process_string("+++ enum"))
40
+ assert_equal(" 1. enum",
41
+ @f00.process_string("++++ enum"))
42
+ assert_equal("[Google](http://www.google.co.jp/)",
43
+ @f00.process_string("[Google|http://www.google.co.jp/]" ))
44
+ assert_equal(" formatted text",
45
+ @f00.process_string(" formatted text"))
46
+ assert_equal("---",
47
+ @f00.process_string("----"))
48
+ assert_equal("<!-- comment-->",
49
+ @f00.process_string("// comment"))
95
50
  end
96
- end
97
51
 
52
+ def test_process_stream
53
+ input = <<HERE
54
+ !!! head1
55
+ !! head2
56
+ ! head3
57
+ abc ''italic'' def
58
+ abc '''bold''' def
59
+ * item
60
+ ** item
61
+ *** item
62
+ **** item
63
+ + enum
64
+ ++ enum
65
+ +++ enum
66
+ ++++ enum
67
+ [Google|http://www.google.co.jp/]" ,
68
+ formatted text"
69
+ ----"
70
+ // comment"
71
+ HERE
72
+
73
+ #abc ==strike== def
74
+ #abc __underline__ def
75
+ #"" quotation'
76
+ #*http://www.yahoo.co.jp/"
98
77
 
78
+ # correct = <<HERE
79
+ ## head1
80
+ #
81
+ ## head1
82
+ #
83
+ ### head2
84
+ #
85
+ #### head3
86
+ #
87
+ #abc *italic* def
88
+ #abc **bold** def
89
+ #
90
+ #* item
91
+ # * item
92
+ # * item
93
+ # * item
94
+ #1. enum
95
+ # 1. enum
96
+ # 1. enum
97
+ # 1. enum
98
+ #
99
+ #[Google](http://www.google.co.jp/)
100
+ # formatted text
101
+ #---
102
+ #<!-- comment-->
103
+ #HERE
104
+ #
105
+ #
106
+ # in_io = StringIO.new
107
+ # in_io.puts input
108
+ # in_io.rewind
109
+ # out_io = StringIO.new
110
+ # @f00.process_stream(in_io, out_io)
111
+ # out_io.rewind
112
+ # result = out_io.read
113
+ #
114
+ # assert_equal(correct, result)
115
+ #end
99
116
 
117
+ #[
118
+ # ["!!! head1" , "# head1" ],
119
+ # ["!! head2" , "## head2" ],
120
+ # ["! head3" , "### head3" ],
121
+ # ["abc ''italic'' def" , "abc *italic* def" ],
122
+ # ["abc '''bold''' def" , "abc **bold** def" ],
123
+ # #["abc ==strike== def" , ],
124
+ # #["abc __underline__ def" , ],
125
+ # #['"" quotation' , ],
126
+ # ["* item" , "* item" ],
127
+ # ["** item" , " * item" ],
128
+ # ["*** item" , " * item" ],
129
+ # ["**** item" , " * item" ],
130
+ # ["+ enum" , "1. enum" ],
131
+ # ["++ enum" , " 1. enum" ],
132
+ # ["+++ enum" , " 1. enum" ],
133
+ # ["++++ enum" , " 1. enum" ],
134
+ # #["*http://www.yahoo.co.jp/" , ],
135
+ # ["[Google|http://www.google.co.jp/]" , "[Google](http://www.google.co.jp/)" ],
136
+ # [" formatted text" , " formatted text" ],
137
+ # ["----" , "---" ],
138
+ # ["// comment" , "<!-- comment-->" ],
139
+ #].each do |i|
140
+ # $stdin = StringIO.new
141
+ # $stdin.puts i[0]
142
+ # $stdin.rewind
143
+ # #str = capture_stdout{}
144
+ # result = capture_stdout{ @f00.filter([])}
145
+ # correct = sprintf("#{i[1]}\n")
146
+ # assert_equal(correct, result)
147
+ #end
100
148
 
101
149
 
102
150
 
103
151
 
152
+ end
153
+ end