highscore 0.5.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,9 @@
1
+ == 1.0.0 / 2013-02-02
2
+
3
+ * added per-language support for black- and whitelists (thanks to bobjflong)
4
+ * added support for language recognition
5
+ * fixed tokenization for UTF-8 strings (this is broken in Ruby 1.8.x!) (thanks to pdg)
6
+
1
7
  == 0.5.2 / 2012-02-25
2
8
 
3
9
  * added (optional) support for word stemming using the fast-stemmer gem
data/README.md CHANGED
@@ -1,24 +1,21 @@
1
- highscore
2
- ===========
1
+ # highscore
3
2
 
4
3
  Easily find and rank keywords in long texts.
5
4
 
6
- [![Build Status](https://secure.travis-ci.org/domnikl/highscore.png?branch=develop)](http://travis-ci.org/domnikl/highscore)
5
+ [![Build Status](https://secure.travis-ci.org/domnikl/highscore.png?branch=develop)](http://travis-ci.org/domnikl/highscore) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/domnikl/highscore)
7
6
 
8
- Features
9
- --------
7
+ ## Features
10
8
 
11
9
  * configurable to rank different types of words different (uppercase, long words, etc.)
12
10
  * rate based on amount (%) of vowels and consonants in a string
13
11
  * directly get keywords from String objects
14
- * blacklist words via a plain text file, String or an Array of words
12
+ * blacklist words via a plain text file, String or an Array of words (per language if needed)
15
13
  * optionally, configure a whitelist and only words from that list will get ranked
16
- * use word stemming (requires the fast-stemmer gem, doesn't work on JRuby platforms!)
14
+ * use word stemming (requires the `fast-stemmer` gem, or the `stemmer` gem)
17
15
  * merge together Keywords from multiple sources
18
16
  * contains a CLI tool that operates on STDIN/OUT and is configurable via parameters
19
17
 
20
- Examples
21
- --------
18
+ ## Examples
22
19
 
23
20
  ```ruby
24
21
  text = Highscore::Content.new "foo bar"
@@ -64,8 +61,7 @@ end
64
61
 
65
62
  Have a look at bin/highscore, you can run highscore on your CLI and feed it with text on STDIN.
66
63
 
67
- Using a custom blacklist to ignore keywords
68
- -------------------------------------------
64
+ ## Using a custom blacklist to ignore keywords
69
65
 
70
66
  ```ruby
71
67
  # setting single words
@@ -86,8 +82,7 @@ blacklist = Highscore::Blacklist.load_default_file
86
82
  content = Highscore::Content.new "a string", blacklist
87
83
  ```
88
84
 
89
- Using a whitelist instead of ranking all words
90
- ----------------------------------------------
85
+ ## Using a whitelist instead of ranking all words
91
86
 
92
87
  ```ruby
93
88
  # construct and inject it just like a blacklist
@@ -95,22 +90,38 @@ whitelist = Highscore::Whitelist.load %w{these are valid keywords}
95
90
  content = Highscore::Content.new "invalid words", whitelist
96
91
  ```
97
92
 
98
- Install
99
- -------
93
+ ## Multiple languages
94
+
95
+ ```ruby
96
+ # Load a default blacklist
97
+ blacklist_default = Highscore::Blacklist.load "mister"
98
+ text = Highscore::Content.new "oui mister interesting", blacklist_default
99
+ text.keywords.top(3).join " "
100
+
101
+ # Prints "interesting oui"
102
+
103
+ # Load a rudimentary blacklist for French
104
+ blacklist_francais = Highscore::Blacklist.load "oui"
105
+ text.add_wordlist blacklist_francais, "fr"
106
+ text.keywords(:lang => :fr).top(3).join " "
107
+
108
+ # Prints "interesting mister"
109
+ ```
110
+
111
+ ## Install
100
112
 
101
113
  * `[sudo] gem install highscore`
102
114
 
103
- To use word stemming, you need to have the fast-stemmer gem installed:
115
+ To use word stemming, you need to have the `fast-stemmer` (C extension) or `stemmer` gem installed:
104
116
 
105
117
  * `[sudo] gem install fast-stemmer`
118
+ * `[sudo] gem install stemmer`
106
119
 
107
- Author
108
- ------
120
+ ## Author
109
121
 
110
122
  Original author: Dominik Liebler <liebler.dominik@googlemail.com>
111
123
 
112
- License
113
- -------
124
+ ## License
114
125
 
115
126
  (The MIT License)
116
127
 
data/Rakefile CHANGED
@@ -1,18 +1,34 @@
1
1
  require 'rubygems'
2
+ require 'rake/testtask'
2
3
 
3
- begin
4
- require 'bones'
5
- rescue LoadError
6
- abort '### Please install the "bones" gem ###'
7
- end
4
+ task :default => 'test'
5
+
6
+ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
7
+ require "highscore"
8
+
9
+ gem_name = "highscore-#{Highscore::VERSION}.gem"
8
10
 
9
- task :default => 'test:run'
10
- task 'gem:release' => 'test:run'
11
+ namespace :gem do
12
+ task :clean do
13
+ system "rm -f *.gem"
14
+ end
15
+
16
+ task :build => [:clean, :test] do
17
+ system "gem build highscore.gemspec"
18
+ end
19
+
20
+ task :install => :build do
21
+ system "gem install #{gem_name}"
22
+ end
23
+
24
+ task :release => :build do
25
+ system "gem push #{gem_name}"
26
+ end
27
+ end
11
28
 
12
- Bones {
13
- name 'highscore'
14
- authors 'Dominik Liebler'
15
- email 'liebler.dominik@googlemail.com'
16
- url 'http://thewebdev.de'
17
- ignore_file '.gitignore'
18
- }
29
+ Rake::TestTask.new do |t|
30
+ t.libs = ["lib"]
31
+ t.warning = true
32
+ t.verbose = true
33
+ t.test_files = FileList['test/**/test_*.rb']
34
+ end
@@ -76,6 +76,11 @@ optparse = OptionParser.new do |opts|
76
76
  opts.on('-s', '--short', 'don\'t print rank weight') do
77
77
  options[:short] = true
78
78
  end
79
+
80
+ opts.on('-v', '--version', 'show version') do
81
+ puts Highscore::VERSION
82
+ exit
83
+ end
79
84
  end
80
85
 
81
86
  optparse.parse!
@@ -1,60 +1,28 @@
1
+ require 'rubygems' if RUBY_VERSION !~ /^1\.9/
1
2
 
2
3
  module Highscore
3
-
4
4
  # :stopdoc:
5
5
  LIBPATH = ::File.expand_path('..', __FILE__) + ::File::SEPARATOR
6
6
  PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
7
7
  VERSION = ::File.read(PATH + 'version.txt').strip
8
8
  # :startdoc:
9
9
 
10
- # Returns the library path for the module. If any arguments are given,
11
- # they will be joined to the end of the libray path using
12
- # <tt>File.join</tt>.
13
- #
14
- def self.libpath( *args )
15
- rv = args.empty? ? LIBPATH : ::File.join(LIBPATH, args.flatten)
16
- if block_given?
17
- begin
18
- $LOAD_PATH.unshift LIBPATH
19
- rv = yield
20
- ensure
21
- $LOAD_PATH.shift
22
- end
23
- end
24
- return rv
25
- end
26
-
27
- # Returns the lpath for the module. If any arguments are given,
28
- # they will be joined to the end of the path using
29
- # <tt>File.join</tt>.
30
- #
31
- def self.path( *args )
32
- rv = args.empty? ? PATH : ::File.join(PATH, args.flatten)
33
- if block_given?
34
- begin
35
- $LOAD_PATH.unshift PATH
36
- rv = yield
37
- ensure
38
- $LOAD_PATH.shift
39
- end
10
+ def self.load_modules
11
+ modules = %w(
12
+ blacklist
13
+ content
14
+ keyword
15
+ keywords
16
+ string
17
+ whitelist
18
+ wordlist
19
+ )
20
+
21
+ modules.each do |m|
22
+ require ::File.expand_path('highscore/' + m, LIBPATH)
40
23
  end
41
- return rv
42
24
  end
25
+ end
43
26
 
44
- # Utility method used to require all files ending in .rb that lie in the
45
- # directory below this file that has the same name as the filename passed
46
- # in. Optionally, a specific _directory_ name can be passed in such that
47
- # the _filename_ does not have to be equivalent to the directory.
48
- #
49
- def self.require_all_libs_relative_to( fname, dir = nil )
50
- dir ||= ::File.basename(fname, '.*')
51
- search_me = ::File.expand_path(
52
- ::File.join(::File.dirname(fname), dir, '**', '*.rb'))
53
-
54
- Dir.glob(search_me).sort.each {|rb| require rb}
55
- end
56
-
57
- end # module Highscore
58
-
59
- Highscore.require_all_libs_relative_to(__FILE__)
27
+ Highscore.load_modules
60
28
 
@@ -7,12 +7,14 @@ require 'rubygems'
7
7
  module Highscore
8
8
  class Content
9
9
  attr_reader :content
10
+ attr_accessor :language_wordlists
10
11
 
11
12
  # @param content String
12
13
  # @param wordlist Highscore::Wordlist
13
14
  def initialize(content, wordlist = nil)
14
15
  @content = content
15
16
  @whitelist = @blacklist = nil
17
+ @language_wordlists = {}
16
18
 
17
19
  if wordlist.nil?
18
20
  @blacklist = Highscore::Blacklist.load_default_file
@@ -31,9 +33,13 @@ module Highscore
31
33
  :consonants => 0,
32
34
  :ignore_short_words => true,
33
35
  :ignore_case => false,
34
- :word_pattern => /\w+/,
36
+ :word_pattern => /\p{Word}+/u,
35
37
  :stemming => false
36
38
  }
39
+
40
+ if RUBY_VERSION =~ /^1\.8/
41
+ @emphasis[:word_pattern] = /\w+/
42
+ end
37
43
  end
38
44
 
39
45
  # configure ranking
@@ -50,16 +56,32 @@ module Highscore
50
56
  def set(key, value)
51
57
  @emphasis[key.to_sym] = value
52
58
  end
59
+
60
+ # add another wordlist, given a language
61
+ #
62
+ # @param language_wordlist Highscore::Wordlist
63
+ # @param language String
64
+ def add_wordlist(language_wordlist, language)
65
+ raise ArgumentError, "Not a valid Wordlist" unless language_wordlist.kind_of? Highscore::Wordlist
66
+ language_wordlists[language.to_sym] = language_wordlist
67
+ end
53
68
 
54
69
  # get the ranked keywords
55
70
  #
56
71
  # @return Highscore::Keywords
57
- def keywords
72
+ def keywords(opts = {})
73
+ used_wordlist = nil
74
+ if opts[:lang]
75
+ used_wordlist = language_wordlists[opts[:lang].to_sym]
76
+ else
77
+ used_wordlist = wordlist
78
+ end
79
+
58
80
  @emphasis[:stemming] = use_stemming?
59
81
 
60
82
  keywords = Keywords.new
61
83
 
62
- Keywords.find_keywords(processed_content, wordlist, word_pattern).each do |text|
84
+ Keywords.find_keywords(processed_content, used_wordlist, word_pattern).each do |text|
63
85
  text = text.to_s
64
86
  text = text.stem if @emphasis[:stemming]
65
87
 
@@ -84,6 +106,14 @@ module Highscore
84
106
  end
85
107
  end
86
108
 
109
+ # guess the language of the content and return a symbol for it
110
+ # => done via whatlanguage gem
111
+ #
112
+ # @return Symbol
113
+ def language
114
+ @content.language
115
+ end
116
+
87
117
  private
88
118
 
89
119
  # processes the text content applying any necessary transformations
@@ -148,8 +178,6 @@ module Highscore
148
178
  percent * @emphasis[:consonants]
149
179
  end
150
180
 
151
- private
152
-
153
181
  # using stemming is only possible, if fast-stemmer is installed
154
182
  # doesn't work for JRuby
155
183
  def use_stemming?
@@ -158,7 +186,12 @@ module Highscore
158
186
  require 'fast_stemmer'
159
187
  true
160
188
  rescue LoadError
161
- false
189
+ begin
190
+ require 'stemmer'
191
+ true
192
+ rescue LoadError
193
+ false
194
+ end
162
195
  end
163
196
  else
164
197
  false
@@ -1,3 +1,5 @@
1
+ require 'whatlanguage'
2
+
1
3
  # monkey patch to call custom methods on arbitrary strings
2
4
  #
3
5
  class String
@@ -1,8 +1,6 @@
1
- $:.unshift(File.join(File.dirname(__FILE__), %w{.. .. lib highscore}))
2
- require "blacklist"
3
- require "test/unit"
1
+ require File.dirname(__FILE__) + '/../test_highscore'
4
2
 
5
- class TestBlacklist < Test::Unit::TestCase
3
+ class TestBlacklist < Highscore::TestCase
6
4
  def test_is_a_wordlist
7
5
  blacklist = Highscore::Blacklist.new
8
6
  assert blacklist.kind_of? Highscore::Wordlist
@@ -1,9 +1,10 @@
1
+ # encoding: utf-8
1
2
  $:.unshift(File.join(File.dirname(__FILE__), %w{.. .. lib highscore}))
2
3
  require "content"
3
4
  require "test/unit"
4
5
  require 'rubygems'
5
6
 
6
- class TestContent < Test::Unit::TestCase
7
+ class TestContent < Highscore::TestCase
7
8
  def setup
8
9
  @text = "This is some text"
9
10
  @content = Highscore::Content.new(@text)
@@ -32,6 +33,19 @@ class TestContent < Test::Unit::TestCase
32
33
  assert_equal 1, content.keywords.length
33
34
  end
34
35
 
36
+ def test_keywords_utf8
37
+ content = 'Schöne Grüße, caractères, русский'
38
+
39
+ content = Highscore::Content.new content
40
+
41
+ if RUBY_VERSION =~ /^1\.8/
42
+ # Ruby 1.8 doesn't support correct tokenization
43
+ assert_equal 3, content.keywords.length
44
+ else
45
+ assert_equal 4, content.keywords.length
46
+ end
47
+ end
48
+
35
49
  def test_vowels_and_consonants
36
50
  keywords = 'foobar RubyGems'.keywords do
37
51
  set :vowels, 2
@@ -77,9 +91,22 @@ class TestContent < Test::Unit::TestCase
77
91
  end
78
92
 
79
93
  def test_stemming
94
+ loaded_stemmer = false
95
+
80
96
  begin
81
97
  require 'fast_stemmer'
98
+ loaded_stemmer = true
99
+ rescue LoadError
100
+ begin
101
+ require 'stemmer'
102
+ loaded_stemmer = true
103
+ rescue LoadError
104
+ # skip this test, neither fast_stemmer nor stemmer is installed!
105
+ fail
106
+ end
107
+ end
82
108
 
109
+ if loaded_stemmer
83
110
  keywords = 'word words boards board woerter wort'.keywords do
84
111
  set :stemming, true
85
112
  end
@@ -87,10 +114,17 @@ class TestContent < Test::Unit::TestCase
87
114
  assert_equal 4, keywords.length
88
115
 
89
116
  keywords.each do |k|
90
- assert (%w{board word woerter wort}).include?(k.text)
117
+ assert %w{board word woerter wort}.include?(k.text)
91
118
  end
92
- rescue LoadError
93
- # do nothing, just skip this test
94
119
  end
95
120
  end
96
- end
121
+
122
+ def test_language_english
123
+ assert_equal :english, Highscore::Content.new("this is obviously an english text").language
124
+ end
125
+
126
+ def test_language_german
127
+ assert_equal :german, Highscore::Content.new("Das ist sicherlich ein deutscher Text!").language
128
+ end
129
+ end
130
+
@@ -1,8 +1,6 @@
1
- $:.unshift(File.join(File.dirname(__FILE__), %w{.. .. lib highscore}))
2
- require 'keyword'
3
- require "test/unit"
1
+ require File.dirname(__FILE__) + '/../test_highscore'
4
2
 
5
- class TestKeyword < Test::Unit::TestCase
3
+ class TestKeyword < Highscore::TestCase
6
4
  def setup
7
5
  @keyword = Highscore::Keyword.new('Ruby', 2)
8
6
  end
@@ -1,9 +1,6 @@
1
- $:.unshift(File.join(File.dirname(__FILE__), %w{.. .. lib highscore}))
2
- require 'keywords'
3
- require 'keyword'
4
- require "test/unit"
1
+ require File.dirname(__FILE__) + '/../test_highscore'
5
2
 
6
- class TestKeywords < Test::Unit::TestCase
3
+ class TestKeywords < Highscore::TestCase
7
4
  def setup
8
5
  @keywords = Highscore::Keywords.new
9
6
  @keywords << Highscore::Keyword.new('Ruby', 2)
@@ -0,0 +1,47 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__), %w{.. .. lib highscore}))
2
+ require "content"
3
+ require "blacklist"
4
+ require "whitelist"
5
+ require "test/unit"
6
+ require 'rubygems'
7
+
8
+ class TestMultipleBlacklists < Test::Unit::TestCase
9
+ def setup
10
+ @nonsense = "Oui monsieur, je suis un programmer. You OK?"
11
+
12
+ @blacklist_francais = Highscore::Blacklist.load %w{oui je un}
13
+ @blacklist_default = Highscore::Blacklist.load %w{ok you programmer}
14
+ @whitelist_simple = Highscore::Whitelist.load %{programmer}
15
+
16
+ @content = Highscore::Content.new @nonsense, @blacklist_default
17
+ @content.configure do
18
+ set :ignore_case, true
19
+ end
20
+ @content.add_wordlist @blacklist_francais, 'fr'
21
+ @content.add_wordlist @whitelist_simple, 'si'
22
+ end
23
+
24
+ def sort_for_ruby18(keywords)
25
+ keywords.join(' ').split(' ').sort
26
+ end
27
+
28
+ def test_different_language
29
+ assert_equal %w(monsieur programmer suis you), sort_for_ruby18(@content.keywords(:lang => :fr).top(4))
30
+ end
31
+
32
+ def test_bad_wordlist
33
+ assert_raise ArgumentError do
34
+ @content.add_wordlist 3.14159, "pi"
35
+ end
36
+ end
37
+
38
+ def test_normal_operation
39
+ assert_equal %w(monsieur oui suis), sort_for_ruby18(@content.keywords.top(3))
40
+ end
41
+
42
+ def test_added_whitelist
43
+ assert_equal %w(programmer), sort_for_ruby18(@content.keywords(:lang => :si).top(3))
44
+ end
45
+ end
46
+
47
+
@@ -1,8 +1,6 @@
1
- $:.unshift(File.join(File.dirname(__FILE__), %w{.. .. lib}))
2
- require 'highscore'
3
- require "test/unit"
1
+ require File.dirname(__FILE__) + '/../test_highscore'
4
2
 
5
- class TestString < Test::Unit::TestCase
3
+ class TestString < Highscore::TestCase
6
4
  def setup
7
5
  blacklist_file = File.join(File.dirname(__FILE__), %w{.. fixtures blacklist.txt})
8
6
  @blacklist = Highscore::Blacklist.load_file(blacklist_file)
@@ -1,8 +1,6 @@
1
- $:.unshift(File.join(File.dirname(__FILE__), %w{.. .. lib highscore}))
2
- require "whitelist"
3
- require "test/unit"
1
+ require File.dirname(__FILE__) + '/../test_highscore'
4
2
 
5
- class TestBlacklist < Test::Unit::TestCase
3
+ class TestBlacklist < Highscore::TestCase
6
4
  def test_is_wordlist
7
5
  whitelist = Highscore::Whitelist.new
8
6
  assert whitelist.kind_of? Highscore::Wordlist
@@ -1,8 +1,6 @@
1
- $:.unshift(File.join(File.dirname(__FILE__), %w{.. .. lib highscore}))
2
- require "wordlist"
3
- require "test/unit"
1
+ require File.dirname(__FILE__) + '/../test_highscore'
4
2
 
5
- class TestBlacklist < Test::Unit::TestCase
3
+ class TestBlacklist < Highscore::TestCase
6
4
 
7
5
  def test_load_file
8
6
  file_path = File.join(File.dirname(__FILE__), %w{.. fixtures blacklist.txt})
@@ -0,0 +1,19 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__), %w{.. lib highscore}))
2
+
3
+ begin
4
+ require 'simplecov'
5
+ SimpleCov.start
6
+ rescue LoadError
7
+ # ignore ...
8
+ end
9
+
10
+ require 'highscore'
11
+ require 'test/unit'
12
+
13
+ module Highscore
14
+ class TestCase < Test::Unit::TestCase
15
+ def test_version
16
+ assert_not_nil Highscore::VERSION
17
+ end
18
+ end
19
+ end
@@ -1 +1 @@
1
- 0.5.3
1
+ 1.0.0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: highscore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,38 +9,41 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-09 00:00:00.000000000 Z
12
+ date: 2012-12-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: bones
16
- requirement: &70276433082620 !ruby/object:Gem::Requirement
15
+ name: simplecov
16
+ requirement: &70317557633680 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 3.7.3
21
+ version: 0.6.4
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70276433082620
25
- description: Easily find and rank keywords in long texts.
24
+ version_requirements: *70317557633680
25
+ - !ruby/object:Gem::Dependency
26
+ name: whatlanguage
27
+ requirement: &70317557633200 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70317557633200
36
+ description: Find and rank keywords in text.
26
37
  email: liebler.dominik@googlemail.com
27
38
  executables:
28
39
  - highscore
29
40
  extensions: []
30
41
  extra_rdoc_files:
31
42
  - History.txt
32
- - bin/highscore
33
43
  - lib/blacklist.txt
34
- - test/fixtures/blacklist.txt
35
44
  files:
36
- - .gitignore
37
- - .travis.yml
38
- - History.txt
39
- - README.md
40
- - Rakefile
41
45
  - bin/highscore
42
46
  - lib/blacklist.txt
43
- - lib/highscore.rb
44
47
  - lib/highscore/blacklist.rb
45
48
  - lib/highscore/content.rb
46
49
  - lib/highscore/keyword.rb
@@ -48,17 +51,22 @@ files:
48
51
  - lib/highscore/string.rb
49
52
  - lib/highscore/whitelist.rb
50
53
  - lib/highscore/wordlist.rb
54
+ - lib/highscore.rb
51
55
  - test/fixtures/blacklist.txt
52
56
  - test/highscore/test_blacklist.rb
53
57
  - test/highscore/test_content.rb
54
58
  - test/highscore/test_keyword.rb
55
59
  - test/highscore/test_keywords.rb
60
+ - test/highscore/test_multiple_blacklists.rb
56
61
  - test/highscore/test_string.rb
57
62
  - test/highscore/test_whitelist.rb
58
63
  - test/highscore/test_wordlist.rb
59
64
  - test/test_highscore.rb
65
+ - README.md
66
+ - History.txt
67
+ - Rakefile
60
68
  - version.txt
61
- homepage: http://thewebdev.de
69
+ homepage: https://domnikl.github.com/highscore
62
70
  licenses: []
63
71
  post_install_message:
64
72
  rdoc_options:
@@ -85,10 +93,12 @@ signing_key:
85
93
  specification_version: 3
86
94
  summary: Easily find and rank keywords in long texts.
87
95
  test_files:
96
+ - test/fixtures/blacklist.txt
88
97
  - test/highscore/test_blacklist.rb
89
98
  - test/highscore/test_content.rb
90
99
  - test/highscore/test_keyword.rb
91
100
  - test/highscore/test_keywords.rb
101
+ - test/highscore/test_multiple_blacklists.rb
92
102
  - test/highscore/test_string.rb
93
103
  - test/highscore/test_whitelist.rb
94
104
  - test/highscore/test_wordlist.rb
data/.gitignore DELETED
@@ -1,12 +0,0 @@
1
- # general
2
- .DS_Store
3
- *.gemspec
4
-
5
- # RubyMine
6
- .idea
7
-
8
- # bones
9
- announcement.txt
10
- coverage
11
- doc
12
- pkg
@@ -1,12 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 1.8.7
4
- - 1.9.2
5
- - 1.9.3
6
- - jruby-18mode # JRuby in 1.8 mode
7
- - jruby-19mode # JRuby in 1.9 mode
8
- - rbx-18mode
9
- - rbx-19mode
10
-
11
- # fast-stemmer is a C extension, so it won't work with JRuby ...
12
- before_install: gem install bones; (gem install fast-stemmer &); sleep 10