virastar 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,3 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in virastar.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,25 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ virastar (0.0.1)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.1.2)
10
+ rspec (2.1.0)
11
+ rspec-core (~> 2.1.0)
12
+ rspec-expectations (~> 2.1.0)
13
+ rspec-mocks (~> 2.1.0)
14
+ rspec-core (2.1.0)
15
+ rspec-expectations (2.1.0)
16
+ diff-lcs (~> 1.1.2)
17
+ rspec-mocks (2.1.0)
18
+
19
+ PLATFORMS
20
+ ruby
21
+
22
+ DEPENDENCIES
23
+ bundler (~> 1.0.0)
24
+ rspec (~> 2.1.0)
25
+ virastar!
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ Copyright (c) 2011 Allen A. Bargi <http://github.com/aziz>
2
+
3
+ Permission is hereby granted, free of charge, to any person ob-
4
+ taining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without restric-
6
+ tion, including without limitation the rights to use, copy, modi-
7
+ fy, merge, publish, distribute, sublicense, and/or sell copies of
8
+ the Software, and to permit persons to whom the Software is fur-
9
+ nished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONIN-
17
+ FRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,82 @@
1
+ -----
2
+ #ویراستار
3
+ نوشته‌های فارسی شما را ویرایش می‌کند
4
+
5
+ -----
6
+ Virastar (in Persian:ویراستار)
7
+
8
+
9
+ ## Specifications
10
+
11
+ ###Virastar
12
+ * should add persian_cleanup method to String class
13
+ * should replace Arabic kaf with its Persian equivalent
14
+ * should replace Arabic Yeh with its Persian equivalent
15
+ * should replace Arabic numbers with their Persian equivalent
16
+ * should replace English numbers with their Persian equivalent
17
+ * should replace English comma and semicolon with their Persian equivalent
18
+ * should correct :;,.?! spacing (one space after and no space before)
19
+ * should replace English quotes with their Persian equivalent
20
+ * should replace three dots with ellipsis
21
+ * should convert ه ی to هٔ
22
+ * should replace double dash to ndash and triple dash to mdash
23
+ * should replace more than one space with just a single one
24
+ * should remove unnecessary zwnj chars that are succeeded/preceded by a space
25
+ * should fix spacing for () [] {} “” «» (one space outside, no space inside)
26
+ * should replace English percent sign to its Persian equivalent
27
+ * should replace more that one line breaks with just one
28
+ * should not replace line breaks
29
+ * should put zwnj between word and prefix/suffix (ha haye* tar* tarin mi* nemi*)
30
+ * should not replace English numbers in English phrases
31
+
32
+ #### aggressive editing
33
+ * should replace more than one ! or ? mark with just one
34
+ * should remove all kashidas
35
+
36
+ -----
37
+ ## Install
38
+ gem install virastar
39
+
40
+ ## Usage
41
+ "فارسي را كمی درست تر می نويسيم".persian_cleanup # => "فارسی را کمی درست‌تر می‌نویسیم"
42
+
43
+ virastar comes with a list of flags to control its behavior, all flags are turned on by default but you can
44
+ turn them off by passing an options hash to the `persian_cleanup` method
45
+
46
+ "سلام 123".persian_cleanup(:fix_english_numbers => false) # => "سلام 123"
47
+
48
+ here is the list of all flags:
49
+
50
+ * `fix_dashes`
51
+ * `fix_three_dots`
52
+ * `fix_english_quotes`
53
+ * `fix_hamzeh`
54
+ * `cleanup_zwnj`
55
+ * `fix_spacing_for_braces_and_quotes`
56
+ * `fix_arabic_numbers`
57
+ * `fix_english_numbers`
58
+ * `fix_misc_non_persian_chars`
59
+ * `fix_perfix_spacing`
60
+ * `fix_suffix_spacing`
61
+ * `aggresive`
62
+ * `cleanup_kashidas`
63
+ * `cleanup_extra_marks`
64
+ * `cleanup_spacing`
65
+ * `cleanup_begin_and_end`
66
+
67
+ ## Acknowledgment
68
+ Virastar is highly inspired by [Virasbaz](http://virasbaz.persianlanguage.ir).
69
+
70
+ ## Note on Patches/Pull Requests
71
+
72
+ * Fork the project.
73
+ * Make your feature addition or bug fix.
74
+ * Add tests for it. This is important so I don't break it in a
75
+ future version unintentionally.
76
+ * Commit, do not mess with rakefile, version, or history.
77
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
78
+ * Send me a pull request. Bonus points for topic branches.
79
+
80
+ ## Copyright
81
+
82
+ Copyright (c) 2011 Allen A. Bargi. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,3 @@
1
+ module Virastar
2
+ VERSION = "0.0.1"
3
+ end
data/lib/virastar.rb ADDED
@@ -0,0 +1,128 @@
1
+ # -*- encoding: utf-8 -*-
2
+ if RUBY_VERSION.to_f < 1.9
3
+ require 'jcode'
4
+ $KCODE = 'u'
5
+ end
6
+
7
+ module Virastar
8
+
9
+ class PersianEditor
10
+ def initialize(text,options)
11
+ @text = text
12
+ @fix_dashes = options[:fix_dashes] || true
13
+ @fix_three_dots = options[:fix_three_dots] || true
14
+ @fix_english_quotes = options[:fix_english_quotes] || true
15
+ @fix_hamzeh = options[:fix_hamzeh] || true
16
+ @cleanup_zwnj = options[:cleanup_zwnj] || true
17
+ @fix_spacing_for_braces_and_quotes = options[:fix_spacing_for_braces_and_quotes] || true
18
+ @fix_arabic_numbers = options[:fix_arabic_numbers] || true
19
+ @fix_english_numbers = options[:fix_english_numbers] || true
20
+ @fix_misc_non_persian_chars = options[:fix_misc_non_persian_chars] || true
21
+ @fix_perfix_spacing = options[:fix_perfix_spacing] || true
22
+ @fix_suffix_spacing = options[:fix_suffix_spacing] || true
23
+ @aggresive = options[:aggresive] || true
24
+ @cleanup_kashidas = options[:cleanup_kashidas] || true
25
+ @cleanup_extra_marks = options[:cleanup_extra_marks] || true
26
+ @cleanup_spacing = options[:cleanup_spacing] || true
27
+ @cleanup_begin_and_end = options[:cleanup_begin_and_end] || true
28
+ end
29
+
30
+ def cleanup
31
+ text = @text
32
+ # replace double dash to ndash and triple dash to mdash
33
+ if @fix_dashes
34
+ text.gsub!(/-{3}/,'—')
35
+ text.gsub!(/-{2}/,'–')
36
+ end
37
+
38
+ # replace three dots with ellipsis
39
+ text.gsub!(/\s*\.{3,}/,'…') if @fix_three_dots
40
+
41
+ # replace English quotes with their Persian equivalent
42
+ text.gsub!(/(["'`]+)(.+)(\1)/, '«\2»') if @fix_english_quotes
43
+
44
+ # should convert ه ی to ه
45
+ text.gsub!(/(\S)(ه[\s‌]+ی)(\s)/, '\1هٔ\3') if @fix_hamzeh
46
+
47
+ # remove unnecessary zwnj char that are succeeded/preceded by a space
48
+ text.gsub!(/\s+‌|‌\s+/,' ') if @cleanup_zwnj
49
+
50
+ # should fix spacing for () [] {} “” «»
51
+ if @fix_spacing_for_braces_and_quotes
52
+ text.gsub!(/\s*(\()\s*([^)]+?)\s*?(\))\s*/,' \1\2\3 ')
53
+ text.gsub!(/\s*(\[)\s*([^)]+?)\s*?(\])\s*/,' \1\2\3 ')
54
+ text.gsub!(/\s*(\{)\s*([^)]+?)\s*?(\})\s*/,' \1\2\3 ')
55
+ text.gsub!(/\s*(“)\s*([^)]+?)\s*?(”)\s*/,' \1\2\3 ')
56
+ text.gsub!(/\s*(«)\s*([^)]+?)\s*?(»)\s*/,' \1\2\3 ')
57
+ end
58
+
59
+ # character replacement
60
+ persian_numbers = "۱۲۳۴۵۶۷۸۹۰"
61
+ arabic_numbers = "١٢٣٤٥٦٧٨٩٠"
62
+ english_numbers = "1234567890"
63
+ bad_chars = ",;كي%"
64
+ good_chars = "،؛کی٪"
65
+ text.tr!(english_numbers,persian_numbers) if @fix_english_numbers
66
+ text.tr!(arabic_numbers,persian_numbers) if @fix_arabic_numbers
67
+ text.tr!(bad_chars,good_chars) if @fix_misc_non_persian_chars
68
+
69
+ # should not replace exnglish chars in english phrases
70
+ text.gsub!(/([a-z\-_]+[۰-۹]+|[۰-۹]+[a-z\-_]+)/i) do |s|
71
+ s.tr(persian_numbers,english_numbers)
72
+ end
73
+
74
+ # put zwnj between word and prefix (mi* nemi*)
75
+ # there's a possible bug here: می and نمی could be separate nouns and not prefix
76
+ if @fix_perfix_spacing
77
+ text.gsub!(/\s+(ن?می)\s+/,' \1‌')
78
+ end
79
+
80
+ # put zwnj between word and suffix (*tar *tarin *ha *haye)
81
+ # there's a possible bug here: های and تر could be separate nouns and not suffix
82
+ if @fix_suffix_spacing
83
+ text.gsub!(/\s+(تر(ین)?|ها(ی)?)\s+/,'‌\1 ')
84
+ end
85
+
86
+ # -- Aggressive Editing ------------------------------------------
87
+ if @aggresive
88
+
89
+ # replace more than one ! or ? mark with just one
90
+ if @cleanup_extra_marks
91
+ text.gsub!(/(!){2,}/, '\1')
92
+ text.gsub!(/(؟){2,}/, '\1')
93
+ end
94
+
95
+ # should remove all kashida
96
+ text.gsub!(/ـ+/,"") if @cleanup_kashidas
97
+
98
+ end
99
+ # ----------------------------------------------------------------
100
+
101
+ # : ; , . ! ? and their persian equivalents should have one space after and no space before
102
+ if @fix_spacing_for_braces_and_quotes
103
+ text.gsub!(/\s*([:;,؛،.؟!]{1})\s*/, '\1 ')
104
+ end
105
+
106
+ # should replace more than one space with just a single one
107
+ if @cleanup_spacing
108
+ text.gsub!(/[ ]+/,' ')
109
+ text.gsub!(/\s*[\n]+\s*/," \n")
110
+ end
111
+
112
+ # remove spaces, tabs, and new lines from the beginning and enf of file
113
+ text.strip! if @cleanup_begin_and_end
114
+
115
+ text
116
+ end
117
+
118
+ end
119
+ end
120
+
121
+ module VirastarStingExtensions
122
+ def persian_cleanup(options = {})
123
+ editor = Virastar::PersianEditor.new(self,options)
124
+ return editor.cleanup
125
+ end
126
+ end
127
+
128
+ String.send(:include, VirastarStingExtensions)
@@ -0,0 +1,10 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+
4
+ require 'virastar'
5
+ require 'rspec'
6
+ require 'rspec/autorun'
7
+
8
+ RSpec.configure do |config|
9
+
10
+ end
@@ -0,0 +1,196 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
+
4
+ describe Virastar do
5
+
6
+ it "should add persian_cleanup method to String class" do
7
+ test = "test string"
8
+ test.should respond_to(:persian_cleanup)
9
+ end
10
+
11
+ it "should replace Arabic kaf with its Persian equivalent" do
12
+ test = "ك"
13
+ test2 = "كمك"
14
+ result = "ک"
15
+ result2 = "کمک"
16
+ test.persian_cleanup.should == result
17
+ test2.persian_cleanup.should == result2
18
+ end
19
+
20
+ it "should replace Arabic Yeh with its Persian equivalent" do
21
+ test = "ي"
22
+ test2 = "بيني"
23
+ result = "ی"
24
+ result2 = "بینی"
25
+ test.persian_cleanup.should == result
26
+ test2.persian_cleanup.should == result2
27
+ end
28
+
29
+ it "should replace Arabic numbers with their Persian equivalent" do
30
+ test = "٠١٢٣٤٥٦٧٨٩"
31
+ result = "۰۱۲۳۴۵۶۷۸۹"
32
+ test.persian_cleanup.should == result
33
+ end
34
+
35
+ it "should replace English numbers with their Persian equivalent" do
36
+ test = "0123456789"
37
+ result = "۰۱۲۳۴۵۶۷۸۹"
38
+ test.persian_cleanup.should == result
39
+ end
40
+
41
+ it "should replace English comma and semicolon with their Persian equivalent" do
42
+ test = ";,"
43
+ result = "؛ ،"
44
+ test.persian_cleanup.should == result
45
+ end
46
+
47
+ it "should correct :;,.?! spacing (one space after and no space before)" do
48
+ test = "گفت : سلام"
49
+ result = "گفت: سلام"
50
+ #puts Diffy::Diff.new(test, result).to_s(:color) # TODO: char diff
51
+ test.persian_cleanup.should == result
52
+ end
53
+
54
+ it "should replace English quotes with their Persian equivalent" do
55
+ test = "''تست''"
56
+ test2 = "'تست'"
57
+ test3 = "\"گفت: سلام\""
58
+ test4 = "`تست`"
59
+ test5 = "``تست``"
60
+ result = result2 = result4 = result5 = "«تست»"
61
+ result3 = "«گفت: سلام»"
62
+ test.persian_cleanup.should == result
63
+ test2.persian_cleanup.should == result2
64
+ test3.persian_cleanup.should == result3
65
+ test4.persian_cleanup.should == result4
66
+ test5.persian_cleanup.should == result5
67
+ end
68
+
69
+ it "should replace three dots with ellipsis" do
70
+ test = "..."
71
+ result = "…"
72
+ test2 = "...."
73
+ result2 = "…"
74
+ test3 = "خداحافظ ... به به"
75
+ result3 = "خداحافظ… به به"
76
+ test4 = "........."
77
+ result4 = "…"
78
+ test.persian_cleanup.should == result
79
+ test2.persian_cleanup.should == result2
80
+ test3.persian_cleanup.should == result3
81
+ test4.persian_cleanup.should == result4
82
+ end
83
+
84
+ it "should convert ه ی to هٔ" do
85
+ test = "خانه ی ما"
86
+ test2 = "خانه ی ما"
87
+ result = result2 = "خانهٔ ما"
88
+ test.persian_cleanup.should == result
89
+ test2.persian_cleanup.should == result2
90
+ end
91
+
92
+ it "should replace double dash to ndash and triple dash to mdash" do
93
+ test = "--"
94
+ test2 = "---"
95
+ result = "–"
96
+ result2 = "—"
97
+ test.persian_cleanup.should == result
98
+ test2.persian_cleanup.should == result2
99
+ end
100
+
101
+ it "should replace more than one space with just a single one" do
102
+ test = " hello world! I'm virastar "
103
+ result = "hello world! I'm virastar"
104
+ test.persian_cleanup.should == result
105
+ end
106
+
107
+ it "should remove unnecessary zwnj chars that are succeeded/preceded by a space" do
108
+ test = "سلام‌ دنیا" # before
109
+ result = "سلام دنیا"
110
+ test2 = "سلام ‌دنیا" #after
111
+ result2 = "سلام دنیا"
112
+ test.persian_cleanup.should == result
113
+ test2.persian_cleanup.should == result2
114
+ end
115
+
116
+ it "should fix spacing for () [] {} “” «» (one space outside, no space inside)" do
117
+ [ ["(",")"],["[","]"],["{","}"],["“","”"],["«","»"] ].each do |b|
118
+ test = "this is#{b[0]} a test#{b[1]}"
119
+ test2 = "this is #{b[0]} a test #{b[1]}"
120
+ test3 = "this is #{b[0]} a test #{b[1]} yeah!"
121
+ test4 = "this is #{b[0]}a test #{b[1]} yeah!"
122
+ result = "this is #{b[0]}a test#{b[1]}"
123
+ result2 = "this is #{b[0]}a test#{b[1]}"
124
+ result3 = "this is #{b[0]}a test#{b[1]} yeah!"
125
+ result4 = "this is #{b[0]}a test#{b[1]} yeah!"
126
+ test.persian_cleanup.should == result
127
+ test2.persian_cleanup.should == result2
128
+ test3.persian_cleanup.should == result3
129
+ test4.persian_cleanup.should == result4
130
+ end
131
+ end
132
+
133
+ it "should replace English percent sign to its Persian equivalent" do
134
+ test = "%"
135
+ result = "٪"
136
+ test.persian_cleanup.should == result
137
+ end
138
+
139
+ it "should replace more that one line breaks with just one" do
140
+ test = "this is \n \n \n \n a test"
141
+ result = "this is \na test"
142
+ test2 = "this is\n\n\n\na test"
143
+ result2 = "this is \na test"
144
+ test3 = "this is \n\n\n\n a test"
145
+ result3 = "this is \na test"
146
+
147
+ test.persian_cleanup.should == result
148
+ test2.persian_cleanup.should == result2
149
+ test3.persian_cleanup.should == result3
150
+ end
151
+
152
+ it "should not replace line breaks" do
153
+ test = "this is \n a test"
154
+ result = "this is \na test"
155
+ test.persian_cleanup.should == result
156
+ end
157
+
158
+ it "should put zwnj between word and prefix/suffix (ha haye* tar* tarin mi* nemi*)" do
159
+ test = "ما می توانیم"
160
+ result = "ما می‌توانیم"
161
+ test2 = "ما نمی توانیم"
162
+ result2 = "ما نمی‌توانیم"
163
+ test3 = "این بهترین کتاب ها است"
164
+ result3 = "این بهترین کتاب‌ها است"
165
+ test4 = "بزرگ تر و قدرتمند ترین زبان های دنیا"
166
+ result4 = "بزرگ‌تر و قدرتمند‌ترین زبان‌های دنیا"
167
+ test.persian_cleanup.should == result
168
+ end
169
+
170
+ it "should not replace English numbers in English phrases" do
171
+ test = "عزیز ATM74 در IBM-96 085 B 95BCS"
172
+ result = "عزیز ATM74 در IBM-96 ۰۸۵ B 95BCS"
173
+ test.persian_cleanup.should == result
174
+ end
175
+
176
+
177
+ context "aggressive editing" do
178
+ it "should replace more than one ! or ? mark with just one" do
179
+ test = "salam!!!"
180
+ result = "salam!"
181
+ test2 = "چطور؟؟؟"
182
+ result2 = "چطور؟"
183
+ test.persian_cleanup.should == result
184
+ test2.persian_cleanup.should == result2
185
+ end
186
+
187
+ it "should remove all kashida" do
188
+ test = "سلامـــت"
189
+ result = "سلامت"
190
+ test.persian_cleanup.should == result
191
+ end
192
+
193
+ it "should correct wrong connections like in میشود or میدهد"
194
+ end
195
+
196
+ end
data/virastar.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "virastar/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "virastar"
7
+ s.version = Virastar::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Allen A. Bargi"]
10
+ s.email = ["allen.bargi@gmail.com"]
11
+ s.homepage = "http://github.com/aziz/virastar"
12
+ s.summary = %q{cleanning up Persian text!}
13
+ s.description = %q{cleanning up Persian text!}
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = "virastar"
19
+ s.extra_rdoc_files = [ "LICENSE", "README.md"]
20
+ s.rdoc_options = ["--charset=UTF-8"]
21
+ s.add_development_dependency(%q<rspec>, ["~> 2.1.0"])
22
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
23
+ end
metadata ADDED
@@ -0,0 +1,111 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: virastar
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Allen A. Bargi
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-01-19 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rspec
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 11
30
+ segments:
31
+ - 2
32
+ - 1
33
+ - 0
34
+ version: 2.1.0
35
+ type: :development
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: bundler
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ hash: 23
46
+ segments:
47
+ - 1
48
+ - 0
49
+ - 0
50
+ version: 1.0.0
51
+ type: :development
52
+ version_requirements: *id002
53
+ description: cleanning up Persian text!
54
+ email:
55
+ - allen.bargi@gmail.com
56
+ executables: []
57
+
58
+ extensions: []
59
+
60
+ extra_rdoc_files:
61
+ - LICENSE
62
+ - README.md
63
+ files:
64
+ - .gitignore
65
+ - Gemfile
66
+ - Gemfile.lock
67
+ - LICENSE
68
+ - README.md
69
+ - Rakefile
70
+ - lib/virastar.rb
71
+ - lib/virastar/version.rb
72
+ - spec/spec_helper.rb
73
+ - spec/virastar_spec.rb
74
+ - virastar.gemspec
75
+ has_rdoc: true
76
+ homepage: http://github.com/aziz/virastar
77
+ licenses: []
78
+
79
+ post_install_message:
80
+ rdoc_options:
81
+ - --charset=UTF-8
82
+ require_paths:
83
+ - lib
84
+ required_ruby_version: !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ hash: 3
90
+ segments:
91
+ - 0
92
+ version: "0"
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ hash: 3
99
+ segments:
100
+ - 0
101
+ version: "0"
102
+ requirements: []
103
+
104
+ rubyforge_project: virastar
105
+ rubygems_version: 1.4.2
106
+ signing_key:
107
+ specification_version: 3
108
+ summary: cleanning up Persian text!
109
+ test_files:
110
+ - spec/spec_helper.rb
111
+ - spec/virastar_spec.rb