similar_text 0.0.2 → 0.0.3

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/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.0.3, released 2011-09-19
2
+
3
+ * Replaced method similar? with similar_chars.
4
+
1
5
  == 0.0.1, released 2011-09-12
2
6
 
3
7
  * Extended core String class by adding two methods: similar and similar?
data/README.markdown CHANGED
@@ -1,7 +1,11 @@
1
1
  Ruby similar_text
2
2
  =================
3
3
 
4
- Port of PHP similar_text function to Ruby, built as a native extension.
4
+ Calculate the similarity between two strings. Port of PHP similar_text function to Ruby, built as a native extension.
5
+
6
+ Description from php.net:
7
+
8
+ This calculates the similarity between two strings as described in Oliver [1993]. Note that this implementation does not use a stack as in Oliver's pseudo code, but recursive calls which may or may not speed up the whole process. Note also that the complexity of this algorithm is O(N**3) where N is the length of the longest string.
5
9
 
6
10
  INSTALL
7
11
  =======
@@ -17,8 +21,8 @@ Load extension:
17
21
 
18
22
  require 'similar_text'
19
23
 
20
- And use it by calling one of two methods (similar or similar?):
24
+ And use it by calling one of two methods (similar or similar_chars):
21
25
 
22
- "Hello, World!".similar("Hello World!") # 96.0
23
- "Hello, World!".similar?(Hello World!") # false
26
+ "Hello, World!".similar("Hello World!") #=> 96.0
27
+ "Hello, World!".similar_chars("Hello World!") #=> 12
24
28
 
@@ -55,6 +55,13 @@ int similar_text(const char *txt1, const char *txt2, double *percent)
55
55
  return sim;
56
56
  }
57
57
 
58
+ /**
59
+ * Calculate the similarity between strings.
60
+ *
61
+ * "Hello, World!".similar("Hello, World!") #=> 100.0
62
+ *
63
+ * @return the percentage of similarity between two strings. Type of value Float from 0.0 to 100.0.
64
+ */
58
65
  static VALUE t_similar(VALUE str1, VALUE str2)
59
66
  {
60
67
  double percent;
@@ -64,24 +71,27 @@ static VALUE t_similar(VALUE str1, VALUE str2)
64
71
  return rb_float_new(percent);
65
72
  }
66
73
 
67
- static VALUE t_similar_bool(VALUE str1, VALUE str2)
74
+ /**
75
+ * Calculate the similarity between strings.
76
+ *
77
+ * 'Hello WORLD!'.similar_chars 'Hello, World!' #=> 8
78
+ *
79
+ * @return number of matching chars between strings.
80
+ */
81
+ static VALUE t_similar_chars(VALUE str1, VALUE str2)
68
82
  {
69
83
  double percent;
84
+ int sim;
70
85
 
71
- similar_text(StringValueCStr(str1), StringValueCStr(str2), &percent);
86
+ sim = similar_text(StringValueCStr(str1), StringValueCStr(str2), &percent);
72
87
 
73
- if (percent == 100.0) {
74
- return Qtrue;
75
- }
76
- else {
77
- return Qfalse;
78
- }
88
+ return rb_int_new(sim);
79
89
  }
80
90
 
81
91
  void Init_similar_text()
82
92
  {
83
93
  rb_cString = rb_define_class("String", rb_cObject);
84
94
  rb_define_method(rb_cString, "similar", t_similar, 1);
85
- rb_define_method(rb_cString, "similar?", t_similar_bool, 1);
95
+ rb_define_method(rb_cString, "similar_chars", t_similar_chars, 1);
86
96
  }
87
97
 
data/lib/similar_text.rb CHANGED
@@ -2,7 +2,3 @@ $:.unshift File.dirname(__FILE__) + "/../lib/similar_text"
2
2
  require "similar_text/version"
3
3
  require 'similar_text.so'
4
4
 
5
- module SimilarText
6
- # Your code goes here...
7
- end
8
-
@@ -1,3 +1,3 @@
1
- module SimilarText
2
- VERSION = "0.0.2"
1
+ module SimilarText #:nodoc:
2
+ VERSION = "0.0.3"
3
3
  end
data/similar_text.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
8
8
  s.authors = ["Arthur Murauskas"]
9
9
  s.email = ["arthur.murauskas@gmail.com"]
10
10
  s.homepage = "http://github.com/valcker/similar_text-ruby"
11
- s.summary = %q{Port of PHP function similar_text to Ruby as a native extension. Adds methods similar and similar? to core String class.}
12
- s.description = %q{Port of PHP function similar_text to Ruby as a native extension. Adds methods similar and similar? to core String class.}
11
+ s.summary = %q{Port of PHP function similar_text to Ruby as a native extension. Adds methods similar and similar_chars to core String class.}
12
+ s.description = %q{Port of PHP function similar_text to Ruby as a native extension. Adds methods similar and similar_chars to core String class.}
13
13
 
14
14
  s.rubyforge_project = "similar_text"
15
15
 
@@ -6,9 +6,9 @@ class SimilarTextTest < Test::Unit::TestCase
6
6
  assert_equal(96.0, "Hello, World!".similar("Hello World!"))
7
7
  end
8
8
 
9
- def test_similar?
10
- assert_equal(true, "Hello, World!".similar?("Hello, World!"))
11
- assert_equal(false, "Hello WORLD!".similar?("Hello, World!"))
9
+ def test_similar_chars
10
+ assert_equal(13, "Hello, World!".similar_chars("Hello, World!"))
11
+ assert_equal(8, "Hello WORLD!".similar_chars("Hello, World!"))
12
12
  end
13
13
  end
14
14
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: similar_text
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,10 +9,10 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-13 00:00:00.000000000Z
12
+ date: 2011-09-19 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: Port of PHP function similar_text to Ruby as a native extension. Adds
15
- methods similar and similar? to core String class.
15
+ methods similar and similar_chars to core String class.
16
16
  email:
17
17
  - arthur.murauskas@gmail.com
18
18
  executables: []
@@ -59,5 +59,5 @@ rubygems_version: 1.8.6
59
59
  signing_key:
60
60
  specification_version: 3
61
61
  summary: Port of PHP function similar_text to Ruby as a native extension. Adds methods
62
- similar and similar? to core String class.
62
+ similar and similar_chars to core String class.
63
63
  test_files: []