gottani 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+ gem "rspec", "~> 2.14.1"
5
+ gem "thor", "~> 0.18.1"
6
+ gem "simplecov", "~> 0.8.2"
7
+ gem "activesupport", "~> 4.0.1"
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 tbpgr
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,146 @@
1
+ # Gottani
2
+
3
+ Gottani is coverter for indent-style text.
4
+
5
+ ## Support type
6
+
7
+ * Tab indent
8
+ * Space2 indent
9
+ * Space4 indent
10
+ * Markdown indent
11
+
12
+ ## Installation
13
+
14
+ Add this line to your application's Gemfile:
15
+
16
+ gem 'gottani'
17
+
18
+ And then execute:
19
+
20
+ $ bundle
21
+
22
+ Or install it yourself as:
23
+
24
+ $ gem install gottani
25
+
26
+ ## Usage
27
+ ### Convert List
28
+ | type | convert_type key | convert_method_name |
29
+ |:----------- |:------------ |:------------ |
30
+ |tab-indent |Gottani::Core.new :tab, text |to_tab |
31
+ |space2-indent |Gottani::Core.new :space2, text |to_space2 |
32
+ |space4-indent |Gottani::Core.new :space4, text |to_space4 |
33
+ |markdown |Gottani::Core.new :markdown, text|to_markdown |
34
+
35
+ ### tab-indent to space2 indent
36
+
37
+ ~~~ruby
38
+ require 'gottani_core'
39
+
40
+ text =<<-EOS
41
+ root
42
+ child1
43
+ child1_1
44
+ child1_1_1
45
+ child1_1_2
46
+ child1_2
47
+ child2
48
+ child2_1
49
+ child3
50
+ EOS
51
+
52
+ gottani_core = Gottani::Core.new :tab, text
53
+ gottani_core.to_space2
54
+ ~~~
55
+
56
+ output
57
+ ~~~
58
+ root
59
+ child1
60
+ child1_1
61
+ child1_1_1
62
+ child1_1_2
63
+ child1_2
64
+ child2
65
+ child2_1
66
+ child3
67
+ ~~~
68
+
69
+ ### space2 to space4 indent
70
+
71
+ ~~~ruby
72
+ require 'gottani_core'
73
+
74
+ text =<<-EOS
75
+ root
76
+ child1
77
+ child1_1
78
+ child1_1_1
79
+ child1_1_2
80
+ child1_2
81
+ child2
82
+ child2_1
83
+ child3
84
+ EOS
85
+
86
+ gottani_core = Gottani::Core.new :space2, text
87
+ gottani_core.to_space4
88
+ ~~~
89
+
90
+ output
91
+ ~~~
92
+ root
93
+ child1
94
+ child1_1
95
+ child1_1_1
96
+ child1_1_2
97
+ child1_2
98
+ child2
99
+ child2_1
100
+ child3
101
+ ~~~
102
+
103
+ ### space4 to Markdown indent
104
+
105
+ ~~~ruby
106
+ require 'gottani_core'
107
+
108
+ text =<<-EOS
109
+ root
110
+ child1
111
+ child1_1
112
+ child1_1_1
113
+ child1_1_2
114
+ child1_2
115
+ child2
116
+ child2_1
117
+ child3
118
+ EOS
119
+
120
+ gottani_core = Gottani::Core.new :space4, text
121
+ gottani_core.to_markdown
122
+ ~~~
123
+
124
+ output
125
+ ~~~
126
+ # root
127
+ ## child1
128
+ ### child1_1
129
+ #### child1_1_1
130
+ #### child1_1_2
131
+ ### child1_2
132
+ ## child2
133
+ ### child2_1
134
+ ## child3
135
+ ~~~
136
+
137
+ ## History
138
+ * version 0.0.1 : first release.
139
+
140
+ ## Contributing
141
+
142
+ 1. Fork it
143
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
144
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
145
+ 4. Push to the branch (`git push origin my-new-feature`)
146
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/gottani.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'gottani/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "gottani"
8
+ spec.version = Gottani::VERSION
9
+ spec.authors = ["tbpgr"]
10
+ spec.email = ["tbpgr@tbpgr.jp"]
11
+ spec.description = %q{Gottani is coverter for indent-style text.}
12
+ spec.summary = %q{Gottani is coverter for indent-style text.}
13
+ spec.homepage = "https://github.com/tbpgr/gottani"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency "activesupport", "~> 4.0.1"
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rspec", "~> 2.14.1"
26
+ spec.add_development_dependency "simplecov", "~> 0.8.2"
27
+ end
@@ -0,0 +1,3 @@
1
+ module Gottani
2
+ VERSION = '0.0.1'
3
+ end
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+ require 'active_support/inflector'
3
+ require 'indents/tab'
4
+ require 'indents/space2'
5
+ require 'indents/space4'
6
+ require 'indents/markdown'
7
+
8
+ module Gottani
9
+ class Core
10
+ attr_reader :type, :common
11
+ FORMAT = {
12
+ tab: Gottani::Tab,
13
+ space2: Gottani::Space2,
14
+ space4: Gottani::Space4,
15
+ markdown: Gottani::Markdown,
16
+ }
17
+
18
+ def initialize(type, base)
19
+ instance = FORMAT[type].new
20
+ @common = instance.send "#{type.to_s}_to_common", base
21
+ end
22
+
23
+ def method_missing(method_name, *args, &block)
24
+ method_name.match /^to_(.*)$/
25
+ super unless Regexp.last_match[1]
26
+ instance = FORMAT[Regexp.last_match[1].to_sym].new
27
+ return instance.send("to_#{Regexp.last_match[1]}", @common) if instance
28
+ super
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,59 @@
1
+ # encoding: utf-8
2
+ require 'active_support/concern'
3
+
4
+ module Gottani
5
+ module Base
6
+ extend ActiveSupport::Concern
7
+ attr_accessor :indent_char, :separator
8
+
9
+ module ClassMethods
10
+ def define_to_common(base)
11
+ define_method "#{base.to_s}_to_common".to_sym do |text|
12
+ to_common text, indent_char, separator
13
+ end
14
+ alias_method "to_#{base.to_s}".to_sym, :to_indent_text
15
+ end
16
+ end
17
+
18
+ def initialize
19
+ @indent_char = get_indent_char
20
+ @zero_start = zero_start?
21
+ @separator = get_separator
22
+ end
23
+
24
+ def to_common(text, indent_char, separator = '')
25
+ ret = []
26
+ text.each_line.with_index do |line, index|
27
+ chopped_line = line.chop
28
+ line_hash = {}
29
+ level = zero_start? ? indent_level(chopped_line) - 1 : indent_level(chopped_line)
30
+ line_hash[:level] = level
31
+ line_hash[:value] = indentless_line(chopped_line)
32
+ line_hash[:value].gsub!(/^#{@separator}/, '') unless @separator.nil?
33
+ ret << line_hash
34
+ end
35
+ ret
36
+ end
37
+
38
+ def to_indent_text(common)
39
+ common.reduce([]) do |ret, line|
40
+ level = zero_start? ? line[:level] + 1 : line[:level]
41
+ indent = @indent_char * level
42
+ indent = indent + @separator unless @separator.nil?
43
+ ret << "#{indent}#{line[:value]}"
44
+ end.join("\n") + "\n"
45
+ end
46
+
47
+ private
48
+
49
+ def indent_level(line)
50
+ prefix_indents = line.scan(/^#{@indent_char}*/).first
51
+ prefix_indents = prefix_indents.nil? ? '' : prefix_indents
52
+ prefix_indents.scan(@indent_char).size
53
+ end
54
+
55
+ def indentless_line(chopped_line)
56
+ chopped_line.gsub(/^#{@indent_char}*/, '')
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+ require 'indents/base'
3
+
4
+ module Gottani
5
+ class Markdown
6
+ include Base
7
+
8
+ define_to_common :markdown
9
+
10
+ def get_indent_char
11
+ '#'
12
+ end
13
+
14
+ def zero_start?
15
+ true
16
+ end
17
+
18
+ def get_separator
19
+ ' '
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+ require 'indents/base'
3
+
4
+ module Gottani
5
+ class Space2
6
+ include Base
7
+ define_to_common :space2
8
+
9
+ def get_indent_char
10
+ ' '
11
+ end
12
+
13
+ def zero_start?
14
+ false
15
+ end
16
+
17
+ def get_separator
18
+ nil
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+ require 'indents/base'
3
+
4
+ module Gottani
5
+ class Space4
6
+ include Base
7
+ define_to_common :space4
8
+
9
+ def get_indent_char
10
+ ' '
11
+ end
12
+
13
+ def zero_start?
14
+ false
15
+ end
16
+
17
+ def get_separator
18
+ nil
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+ require 'indents/base'
3
+
4
+ module Gottani
5
+ class Tab
6
+ include Base
7
+
8
+ define_to_common :tab
9
+
10
+ def get_indent_char
11
+ "\t"
12
+ end
13
+
14
+ def zero_start?
15
+ false
16
+ end
17
+
18
+ def get_separator
19
+ nil
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,125 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'gottani_core'
4
+
5
+ describe Gottani::Core do
6
+ context :to_tab do
7
+ TAB = <<-EOS
8
+ root
9
+ child1
10
+ child1_1
11
+ child1_1_1
12
+ child1_1_2
13
+ child1_2
14
+ child2
15
+ child2_1
16
+ child3
17
+ EOS
18
+
19
+ SPACE2 = <<-EOS
20
+ root
21
+ child1
22
+ child1_1
23
+ child1_1_1
24
+ child1_1_2
25
+ child1_2
26
+ child2
27
+ child2_1
28
+ child3
29
+ EOS
30
+
31
+ SPACE4 = <<-EOS
32
+ root
33
+ child1
34
+ child1_1
35
+ child1_1_1
36
+ child1_1_2
37
+ child1_2
38
+ child2
39
+ child2_1
40
+ child3
41
+ EOS
42
+
43
+ MARKDOWN = <<-EOS
44
+ # root
45
+ ## child1
46
+ ### child1_1
47
+ #### child1_1_1
48
+ #### child1_1_2
49
+ ### child1_2
50
+ ## child2
51
+ ### child2_1
52
+ ## child3
53
+ EOS
54
+
55
+ cases = [
56
+ {
57
+ case_no: 1,
58
+ case_title: 'space2 to tab case',
59
+ type: :space2,
60
+ input: SPACE2,
61
+ method_name: :to_tab,
62
+ expected: TAB
63
+ },
64
+ {
65
+ case_no: 2,
66
+ case_title: 'tab to space2 case',
67
+ type: :tab,
68
+ input: TAB,
69
+ method_name: :to_space2,
70
+ expected: SPACE2
71
+ },
72
+ {
73
+ case_no: 3,
74
+ case_title: 'tab to space4 case',
75
+ type: :tab,
76
+ input: TAB,
77
+ method_name: :to_space4,
78
+ expected: SPACE4
79
+ },
80
+ {
81
+ case_no: 4,
82
+ case_title: 'tab to markdown case',
83
+ type: :tab,
84
+ input: TAB,
85
+ method_name: :to_markdown,
86
+ expected: MARKDOWN
87
+ },
88
+ {
89
+ case_no: 5,
90
+ case_title: 'markdown to tab case',
91
+ type: :markdown,
92
+ input: MARKDOWN,
93
+ method_name: :to_tab,
94
+ expected: TAB
95
+ },
96
+ ]
97
+
98
+ cases.each do |c|
99
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
100
+ begin
101
+ case_before c
102
+
103
+ # -- given --
104
+ gottani_core = Gottani::Core.new c[:type], c[:input]
105
+
106
+ # -- when --
107
+ actual = gottani_core.send c[:method_name]
108
+
109
+ # -- then --
110
+ expect(actual).to eq(c[:expected])
111
+ ensure
112
+ case_after c
113
+ end
114
+ end
115
+
116
+ def case_before(c)
117
+ # implement each case before
118
+ end
119
+
120
+ def case_after(c)
121
+ # implement each case after
122
+ end
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,188 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'indents/tab'
4
+
5
+ describe Gottani::Tab do
6
+ class ConcreteTab
7
+ attr_reader :text, :common
8
+
9
+ def initialize(text)
10
+ @text = text
11
+ @common = Gottani::Tab.new.tab_to_common text
12
+ end
13
+ end
14
+
15
+ context :tab_to_common do
16
+ CASE1_INPUT = <<-EOS
17
+ root
18
+ child1
19
+ child1_1
20
+ child1_1_1
21
+ child1_1_2
22
+ child1_2
23
+ child2
24
+ child2_1
25
+ child3
26
+ EOS
27
+ cases = [
28
+ {
29
+ case_no: 1,
30
+ case_title: 'valid case',
31
+ klass: ConcreteTab,
32
+ input: CASE1_INPUT,
33
+ expected: [
34
+ {
35
+ level: 0,
36
+ value: 'root'
37
+ },
38
+ {
39
+ level: 1,
40
+ value: 'child1'
41
+ },
42
+ {
43
+ level: 2,
44
+ value: 'child1_1'
45
+ },
46
+ {
47
+ level: 3,
48
+ value: 'child1_1_1'
49
+ },
50
+ {
51
+ level: 3,
52
+ value: 'child1_1_2'
53
+ },
54
+ {
55
+ level: 2,
56
+ value: 'child1_2'
57
+ },
58
+ {
59
+ level: 1,
60
+ value: 'child2'
61
+ },
62
+ {
63
+ level: 2,
64
+ value: 'child2_1'
65
+ },
66
+ {
67
+ level: 1,
68
+ value: 'child3'
69
+ },
70
+ ],
71
+ },
72
+ ]
73
+
74
+ cases.each do |c|
75
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
76
+ begin
77
+ case_before c
78
+
79
+ # -- given --
80
+ tab = c[:klass].new c[:input]
81
+
82
+ # -- when --
83
+ actual = tab.common
84
+
85
+ # -- then --
86
+ expect(actual).to eq(c[:expected])
87
+ ensure
88
+ case_after c
89
+ end
90
+ end
91
+
92
+ def case_before(c)
93
+ # implement each case before
94
+ end
95
+
96
+ def case_after(c)
97
+ # implement each case after
98
+ end
99
+ end
100
+ end
101
+
102
+ context :to_tab do
103
+ EXPECTED_TABTREE_CASE1 = <<-EOS
104
+ root
105
+ child1
106
+ child1_1
107
+ child1_1_1
108
+ child1_1_2
109
+ child1_2
110
+ child2
111
+ child2_1
112
+ child3
113
+ EOS
114
+ cases = [
115
+ {
116
+ case_no: 1,
117
+ case_title: 'valid case',
118
+ input: [
119
+ {
120
+ level: 0,
121
+ value: 'root'
122
+ },
123
+ {
124
+ level: 1,
125
+ value: 'child1'
126
+ },
127
+ {
128
+ level: 2,
129
+ value: 'child1_1'
130
+ },
131
+ {
132
+ level: 3,
133
+ value: 'child1_1_1'
134
+ },
135
+ {
136
+ level: 3,
137
+ value: 'child1_1_2'
138
+ },
139
+ {
140
+ level: 2,
141
+ value: 'child1_2'
142
+ },
143
+ {
144
+ level: 1,
145
+ value: 'child2'
146
+ },
147
+ {
148
+ level: 2,
149
+ value: 'child2_1'
150
+ },
151
+ {
152
+ level: 1,
153
+ value: 'child3'
154
+ },
155
+ ],
156
+ expected: EXPECTED_TABTREE_CASE1
157
+ },
158
+ ]
159
+
160
+ cases.each do |c|
161
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
162
+ begin
163
+ case_before c
164
+
165
+ # -- given --
166
+ tab = Gottani::Tab.new
167
+
168
+ # -- when --
169
+ common = Gottani::Tab.new.tab_to_common c[:expected]
170
+ actual = tab.to_tab common
171
+
172
+ # -- then --
173
+ expect(actual).to eq(c[:expected])
174
+ ensure
175
+ case_after c
176
+ end
177
+ end
178
+
179
+ def case_before(c)
180
+ # implement each case before
181
+ end
182
+
183
+ def case_after(c)
184
+ # implement each case after
185
+ end
186
+ end
187
+ end
188
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+ require 'simplecov'
3
+ SimpleCov.start
4
+ RSpec.configure do |config|
5
+ config.treat_symbols_as_metadata_keys_with_true_values = true
6
+ config.run_all_when_everything_filtered = true
7
+ config.filter_run :focus
8
+ end
metadata ADDED
@@ -0,0 +1,122 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gottani
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - tbpgr
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-02-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: &30370980 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 4.0.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *30370980
25
+ - !ruby/object:Gem::Dependency
26
+ name: bundler
27
+ requirement: &30370680 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '1.3'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *30370680
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
38
+ requirement: &30370452 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *30370452
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: &30370128 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 2.14.1
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *30370128
58
+ - !ruby/object:Gem::Dependency
59
+ name: simplecov
60
+ requirement: &30369828 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: 0.8.2
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *30369828
69
+ description: Gottani is coverter for indent-style text.
70
+ email:
71
+ - tbpgr@tbpgr.jp
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - .rspec
78
+ - Gemfile
79
+ - LICENSE.txt
80
+ - README.md
81
+ - Rakefile
82
+ - gottani.gemspec
83
+ - lib/gottani/version.rb
84
+ - lib/gottani_core.rb
85
+ - lib/indents/base.rb
86
+ - lib/indents/markdown.rb
87
+ - lib/indents/space2.rb
88
+ - lib/indents/space4.rb
89
+ - lib/indents/tab.rb
90
+ - spec/gottani_core_spec.rb
91
+ - spec/indents/tab_spec.rb
92
+ - spec/spec_helper.rb
93
+ homepage: https://github.com/tbpgr/gottani
94
+ licenses:
95
+ - MIT
96
+ post_install_message:
97
+ rdoc_options: []
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
103
+ - - ! '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ requirements: []
113
+ rubyforge_project:
114
+ rubygems_version: 1.8.11
115
+ signing_key:
116
+ specification_version: 3
117
+ summary: Gottani is coverter for indent-style text.
118
+ test_files:
119
+ - spec/gottani_core_spec.rb
120
+ - spec/indents/tab_spec.rb
121
+ - spec/spec_helper.rb
122
+ has_rdoc: