linkparser 1.0.3 → 1.0.4

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 CHANGED
@@ -1,3 +1,50 @@
1
+ -- Tue, 09 Jun 2009 06:21:42 -0000 by deveiant (r55) -----
2
+ Changed: README
3
+ INSTALL
4
+ ChangeLog
5
+
6
+ * Updated versions of the link-grammar library referenced in the docs.
7
+
8
+
9
+ -- Wed, 03 Jun 2009 14:29:26 -0000 by deveiant (r54) -----
10
+ Deleted: link-grammar-4.4.3.tar.gz
11
+
12
+ Removing old link-grammar library
13
+
14
+
15
+ -- Wed, 03 Jun 2009 12:52:13 -0000 by deveiant (r53) -----
16
+ Added: link-grammar-4.5.6.tar.gz
17
+ -> renamed from /trunk/link-grammar-4.4.1.tar.gz@r51
18
+ Changed: lib/linkparser.rb
19
+ spec/linkparser/sentence_spec.rb
20
+ ext/sentence.c
21
+ lib/linkparser/sentence.rb
22
+ spec/linkparser/parseoptions_spec.rb
23
+ ChangeLog (and 5 other/s)
24
+
25
+ * Updated to link-grammar-4.5.6.
26
+ * Added support for ParseOptions#spell_guessing_enabled
27
+ * Fixed buggy sentence behavior when the underlying Sentence hadn't yet been parsed.
28
+ * Made the exception raised when a delegated linkage method is called on a Sentence
29
+ that doesn't have any linkages. Thanks to Michael Bisignani <mbisignani@gmail.com> for
30
+ bringing this problem to my attention.
31
+ * Fixed some type-qualifier warnings.
32
+ * Bumped version to 1.0.4.
33
+
34
+
35
+ -- Wed, 18 Mar 2009 21:51:03 -0000 by deveiant (r52) -----
36
+ Added: link-grammar-4.4.3.tar.gz
37
+ -> renamed from /trunk/link-grammar-4.4.1.tar.gz@r51
38
+ Changed: README
39
+ LICENSE
40
+ Rakefile
41
+ project.yml
42
+ Deleted: link-grammar-4.4.1.tar.gz
43
+
44
+ * Update license year.
45
+ * Updated build.
46
+
47
+
1
48
  -- Sat, 20 Dec 2008 19:51:24 -0000 by deveiant (r49) -----
2
49
  Changed: Rakefile
3
50
  project.yml
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2008, Michael Granger
1
+ Copyright (c) 2006-2009, The FaerieMUD Consortium
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
data/README CHANGED
@@ -12,7 +12,7 @@ of English.
12
12
  == Requirements
13
13
 
14
14
  * Ruby 1.8.6
15
- * link-grammar (version 4.4.1 or later) from the AbiWord project
15
+ * link-grammar (version 4.5.6 or later) from the AbiWord project
16
16
  (http://www.abisource.com/projects/link-grammar/)
17
17
 
18
18
 
@@ -51,38 +51,11 @@ of English.
51
51
 
52
52
  == Legal
53
53
 
54
+ For licensing information, see the LICENSE file.
55
+
54
56
  For copyright and licensing information for link-grammar itself, see the
55
57
  LICENSE file in that distribution.
56
58
 
57
- Copyright (c) 2006-2008, Michael Granger
58
- All rights reserved.
59
-
60
- Redistribution and use in source and binary forms, with or without
61
- modification, are permitted provided that the following conditions are met:
62
-
63
- * Redistributions of source code must retain the above copyright notice,
64
- this list of conditions and the following disclaimer.
65
-
66
- * Redistributions in binary form must reproduce the above copyright notice,
67
- this list of conditions and the following disclaimer in the documentation
68
- and/or other materials provided with the distribution.
69
-
70
- * Neither the name of the author/s, nor the names of the project's
71
- contributors may be used to endorse or promote products derived from this
72
- software without specific prior written permission.
73
-
74
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
75
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
76
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
77
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
78
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
79
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
80
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
81
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
82
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
83
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
84
-
85
-
86
- $Id: README 48 2008-12-19 18:30:33Z deveiant $
59
+ $Id: README 55 2009-06-09 06:21:42Z deveiant $
87
60
 
88
61
 
data/Rakefile CHANGED
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # Based on various other Rakefiles, especially one by Ben Bleything
6
6
  #
7
- # Copyright (c) 2008 The FaerieMUD Consortium
7
+ # Copyright (c) 2007-2009 The FaerieMUD Consortium
8
8
  #
9
9
  # Authors:
10
10
  # * Michael Granger <ged@FaerieMUD.org>
@@ -21,15 +21,13 @@ BEGIN {
21
21
  $LOAD_PATH.unshift( extdir.to_s ) unless $LOAD_PATH.include?( extdir.to_s )
22
22
  }
23
23
 
24
- require 'rubygems'
25
- gem 'rake', '>= 0.8.3'
26
-
27
24
  require 'rbconfig'
28
25
  require 'rake'
29
26
  require 'rake/rdoctask'
30
27
  require 'rake/testtask'
31
28
  require 'rake/packagetask'
32
29
  require 'rake/clean'
30
+ require 'rake/191_compat.rb'
33
31
 
34
32
  $dryrun = false
35
33
 
@@ -174,7 +172,7 @@ DEVELOPMENT_DEPENDENCIES = {
174
172
 
175
173
  # Non-gem requirements: packagename => version
176
174
  REQUIREMENTS = {
177
- 'link-grammar' => '>= 4.4.1',
175
+ 'link-grammar' => '>= 4.4.2',
178
176
  }
179
177
 
180
178
  # RubyGem specification
@@ -242,7 +240,8 @@ $dryrun = Rake.application.options.dryrun ? true : false
242
240
  RAKE_TASKLIBS.each do |tasklib|
243
241
  next if tasklib =~ %r{/(helpers|svn|verifytask)\.rb$}
244
242
  begin
245
- require tasklib
243
+ trace " loading tasklib %s" % [ tasklib ]
244
+ require tasklib.expand_path
246
245
  rescue ScriptError => err
247
246
  fail "Task library '%s' failed to load: %s: %s" %
248
247
  [ tasklib, err.class.name, err.message ]
data/Rakefile.local CHANGED
@@ -58,3 +58,8 @@ task :clobber do
58
58
  end
59
59
  CLOBBER.include( EXT_MAKEFILE )
60
60
 
61
+ task :debug do
62
+ log "Setting $DEBUG to true"
63
+ $DEBUG = true
64
+ end
65
+
data/ext/extconf.rb CHANGED
@@ -50,4 +50,6 @@ unless have_func( "linkgrammar_get_version" )
50
50
  message "Trying to build anyway.\n"
51
51
  end
52
52
 
53
+ have_func( 'parse_options_get_spell_guess' )
54
+
53
55
  create_makefile( 'linkparser_ext' )
data/ext/linkage.c CHANGED
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * linkage.c - Ruby LinkParser Linkage class
3
- * $Id: linkage.c 48 2008-12-19 18:30:33Z deveiant $
3
+ * $Id: linkage.c 53 2009-06-03 12:52:13Z deveiant $
4
4
  *
5
5
  * Authors:
6
6
  * * Michael Granger <ged@FaerieMUD.org>
@@ -470,7 +470,7 @@ rlink_linkage_get_link_num_domains( VALUE self, VALUE index ) {
470
470
  static VALUE
471
471
  rlink_linkage_get_link_domain_names( VALUE self, VALUE index ) {
472
472
  rlink_LINKAGE *ptr = get_linkage( self );
473
- char **names;
473
+ const char **names;
474
474
  int i = NUM2INT( index );
475
475
  int count;
476
476
  VALUE names_ary;
data/ext/parseoptions.c CHANGED
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * parseoptions.c - Ruby LinkParser::ParseOptions class
3
- * $Id: parseoptions.c 48 2008-12-19 18:30:33Z deveiant $
3
+ * $Id: parseoptions.c 53 2009-06-03 12:52:13Z deveiant $
4
4
  *
5
5
  * Authors:
6
6
  * * Michael Granger <ged@FaerieMUD.org>
@@ -972,6 +972,49 @@ rlink_parseopts_get_echo_on_p( VALUE self ) {
972
972
  }
973
973
 
974
974
 
975
+
976
+
977
+ /*
978
+ * call-seq:
979
+ * opts.spell_guessing_enabled= boolean
980
+ *
981
+ * Enable/disable spell-guessing if it's supported.
982
+ */
983
+ static VALUE
984
+ rlink_parseopts_set_spell_guess( VALUE self, VALUE val ) {
985
+ #ifdef HAVE_PARSE_OPTIONS_GET_SPELL_GUESS
986
+ Parse_Options opts = get_parseopts( self );
987
+ parse_options_set_spell_guess( opts, RTEST(val) );
988
+ return val;
989
+ #else
990
+ rb_notimplement();
991
+ return Qnil;
992
+ #endif /* HAVE_PARSE_OPTIONS_GET_SPELL_GUESS */
993
+ }
994
+
995
+
996
+ /*
997
+ * call-seq:
998
+ * opts.spell_guessing_enabled? -> true or false
999
+ *
1000
+ * Returns +true+ if spell-guessing is enabled. Note that a +true+ return value doesn't
1001
+ * mean that it's supported, only that it will be used if it is.
1002
+ */
1003
+ static VALUE
1004
+ rlink_parseopts_get_spell_guess_p( VALUE self ) {
1005
+ #ifdef HAVE_PARSE_OPTIONS_GET_SPELL_GUESS
1006
+ Parse_Options opts = get_parseopts( self );
1007
+ int rval;
1008
+
1009
+ rval = parse_options_get_spell_guess( opts );
1010
+ return rval ? Qtrue : Qfalse;
1011
+ #else
1012
+ rb_notimplement();
1013
+ return Qnil;
1014
+ #endif /* HAVE_PARSE_OPTIONS_GET_SPELL_GUESS */
1015
+ }
1016
+
1017
+
975
1018
  /*
976
1019
  * call-seq:
977
1020
  * opts.timer_expired? -> +true+ or +false+
@@ -1175,6 +1218,10 @@ rlink_init_parseoptions() {
1175
1218
  rlink_parseopts_set_echo_on, 1 );
1176
1219
  rb_define_method( rlink_cParseOptions, "echo_on?",
1177
1220
  rlink_parseopts_get_echo_on_p, 0 );
1221
+ rb_define_method( rlink_cParseOptions, "spell_guessing_enabled=",
1222
+ rlink_parseopts_set_spell_guess, 1 );
1223
+ rb_define_method( rlink_cParseOptions, "spell_guessing_enabled?",
1224
+ rlink_parseopts_get_spell_guess_p, 0 );
1178
1225
 
1179
1226
  rb_define_method( rlink_cParseOptions, "timer_expired?",
1180
1227
  rlink_parseopts_timer_expired_p, 0 );
@@ -1184,5 +1231,6 @@ rlink_init_parseoptions() {
1184
1231
  rlink_parseopts_resources_exhausted_p, 0 );
1185
1232
  rb_define_method( rlink_cParseOptions, "reset_resources",
1186
1233
  rlink_parseopts_reset_resources, 0 );
1234
+
1187
1235
  }
1188
1236
 
data/ext/sentence.c CHANGED
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * sentence.c - Ruby LinkParser
3
- * $Id: sentence.c 48 2008-12-19 18:30:33Z deveiant $
3
+ * $Id: sentence.c 53 2009-06-03 12:52:13Z deveiant $
4
4
  *
5
5
  * Authors:
6
6
  * * Michael Granger <ged@FaerieMUD.org>
@@ -201,8 +201,11 @@ rlink_sentence_parse( int argc, VALUE *argv, VALUE self ) {
201
201
  VALUE options = Qnil;
202
202
  int link_count = 0;
203
203
 
204
+ /*
204
205
  if ( RTEST(ptr->parsed_p) )
205
206
  rb_raise( rlink_eLpError, "Can't reparse a sentence." );
207
+ */
208
+ debugMsg(( "Parsing sentence <%p>", ptr ));
206
209
 
207
210
  /* Merge the hash from this call with the one from the dict and build
208
211
  Parse_Options from it. */
@@ -307,6 +310,10 @@ rlink_sentence_linkages( VALUE self ) {
307
310
  static VALUE
308
311
  rlink_sentence_length( VALUE self ) {
309
312
  rlink_SENTENCE *ptr = get_sentence( self );
313
+
314
+ if ( !RTEST(ptr->parsed_p) )
315
+ rlink_sentence_parse( 0, 0, self );
316
+
310
317
  return INT2FIX( sentence_length((Sentence)ptr->sentence) );
311
318
  }
312
319
 
@@ -321,8 +328,11 @@ rlink_sentence_length( VALUE self ) {
321
328
  static VALUE
322
329
  rlink_sentence_word( VALUE self, VALUE n ) {
323
330
  rlink_SENTENCE *ptr = get_sentence( self );
324
- char *word;
331
+ const char *word;
325
332
 
333
+ if ( !RTEST(ptr->parsed_p) )
334
+ rlink_sentence_parse( 0, 0, self );
335
+
326
336
  word = sentence_get_word( (Sentence)ptr->sentence, FIX2INT(n) );
327
337
  return rb_str_new2( word );
328
338
  }
@@ -340,13 +350,17 @@ rlink_sentence_word( VALUE self, VALUE n ) {
340
350
  static VALUE
341
351
  rlink_sentence_words( VALUE self ) {
342
352
  rlink_SENTENCE *ptr = get_sentence( self );
343
- char *word;
353
+ const char *word;
344
354
  int i, length;
345
355
  VALUE words = rb_ary_new();
346
356
 
357
+ if ( !RTEST(ptr->parsed_p) )
358
+ rlink_sentence_parse( 0, 0, self );
359
+
347
360
  length = sentence_length( (Sentence)ptr->sentence );
348
361
  for ( i = 0; i < length; i++ ) {
349
362
  word = sentence_get_word( (Sentence)ptr->sentence, i );
363
+ debugMsg(( "Word %d: <%s>", i, word ));
350
364
  rb_ary_push( words, rb_str_new2(word) );
351
365
  }
352
366
 
@@ -395,6 +409,9 @@ rlink_sentence_null_count( VALUE self ) {
395
409
  rlink_SENTENCE *ptr = get_sentence( self );
396
410
  int count;
397
411
 
412
+ if ( !RTEST(ptr->parsed_p) )
413
+ rlink_sentence_parse( 0, 0, self );
414
+
398
415
  count = sentence_null_count( (Sentence)ptr->sentence );
399
416
  return INT2FIX( count );
400
417
  }
@@ -414,6 +431,7 @@ rlink_sentence_num_linkages_found( VALUE self ) {
414
431
 
415
432
  if ( !RTEST(ptr->parsed_p) )
416
433
  rlink_sentence_parse( 0, 0, self );
434
+
417
435
  i = sentence_num_linkages_found( (Sentence)ptr->sentence );
418
436
 
419
437
  return INT2FIX( i );
@@ -431,6 +449,9 @@ rlink_sentence_num_valid_linkages( VALUE self ) {
431
449
  rlink_SENTENCE *ptr = get_sentence( self );
432
450
  int count;
433
451
 
452
+ if ( !RTEST(ptr->parsed_p) )
453
+ rlink_sentence_parse( 0, 0, self );
454
+
434
455
  count = sentence_num_valid_linkages( (Sentence)ptr->sentence );
435
456
  return INT2FIX( count );
436
457
  }
@@ -448,6 +469,9 @@ rlink_sentence_num_linkages_post_processed( VALUE self ) {
448
469
  rlink_SENTENCE *ptr = get_sentence( self );
449
470
  int count;
450
471
 
472
+ if ( !RTEST(ptr->parsed_p) )
473
+ rlink_sentence_parse( 0, 0, self );
474
+
451
475
  count = sentence_num_linkages_post_processed( (Sentence)ptr->sentence );
452
476
  return INT2FIX( count );
453
477
  }
@@ -465,6 +489,9 @@ rlink_sentence_num_violations( VALUE self, VALUE i ) {
465
489
  rlink_SENTENCE *ptr = get_sentence( self );
466
490
  int count;
467
491
 
492
+ if ( !RTEST(ptr->parsed_p) )
493
+ rlink_sentence_parse( 0, 0, self );
494
+
468
495
  count = sentence_num_violations( (Sentence)ptr->sentence, FIX2INT(i) );
469
496
  return INT2FIX( count );
470
497
  }
@@ -481,6 +508,9 @@ rlink_sentence_disjunct_cost( VALUE self, VALUE i ) {
481
508
  rlink_SENTENCE *ptr = get_sentence( self );
482
509
  int count;
483
510
 
511
+ if ( !RTEST(ptr->parsed_p) )
512
+ rlink_sentence_parse( 0, 0, self );
513
+
484
514
  count = sentence_disjunct_cost( (Sentence)ptr->sentence, FIX2INT(i) );
485
515
  return INT2FIX( count );
486
516
  }
data/lib/linkparser.rb CHANGED
@@ -12,7 +12,7 @@ require 'linkparser_ext'
12
12
  #
13
13
  # == Version
14
14
  #
15
- # $Id: linkparser.rb 48 2008-12-19 18:30:33Z deveiant $
15
+ # $Id: linkparser.rb 53 2009-06-03 12:52:13Z deveiant $
16
16
  #
17
17
  # == License
18
18
  #
@@ -26,13 +26,13 @@ module LinkParser
26
26
  require 'linkparser/linkage'
27
27
 
28
28
  # Release version
29
- VERSION = '1.0.3'
29
+ VERSION = '1.0.4'
30
30
 
31
31
  # SVN Revision
32
- SVNRev = %q$Rev: 48 $
32
+ SVNRev = %q$Rev: 53 $
33
33
 
34
34
  # SVN Id
35
- SVNId = %q$Id: linkparser.rb 48 2008-12-19 18:30:33Z deveiant $
35
+ SVNId = %q$Id: linkparser.rb 53 2009-06-03 12:52:13Z deveiant $
36
36
 
37
37
  end # class LinkParser
38
38
 
@@ -33,7 +33,7 @@
33
33
  #
34
34
  # == Version
35
35
  #
36
- # $Id: sentence.rb 21 2008-05-26 21:49:02Z deveiant $
36
+ # $Id: sentence.rb 53 2009-06-03 12:52:13Z deveiant $
37
37
  #
38
38
 
39
39
  require 'linkparser'
@@ -42,10 +42,11 @@ require 'linkparser'
42
42
  class LinkParser::Sentence
43
43
 
44
44
  # SVN Revision
45
- SVNRev = %q$Rev: 21 $
45
+ SVNRev = %q$Rev: 53 $
46
46
 
47
47
  # SVN Id
48
- SVNId = %q$Id: sentence.rb 21 2008-05-26 21:49:02Z deveiant $
48
+ SVNId = %q$Id: sentence.rb 53 2009-06-03 12:52:13Z deveiant $
49
+
49
50
 
50
51
 
51
52
  ######
@@ -54,25 +55,25 @@ class LinkParser::Sentence
54
55
 
55
56
  ### Return a human-readable representation of the Sentence object.
56
57
  def inspect
57
- %{#<%s:0x%x "%s"/%d linkages/%d nulls>} % [
58
+ contents = ''
59
+ if self.parsed?
60
+ contents = %{"%s"/%d linkages/%d nulls} % [
61
+ self.to_s,
62
+ self.num_linkages_found,
63
+ self.null_count,
64
+ ]
65
+ else
66
+ contents = "(unparsed)"
67
+ end
68
+
69
+ return "#<%s:0x%x %s>" % [
58
70
  self.class.name,
59
71
  self.object_id / 2,
60
- self.words.join(" "),
61
- self.num_linkages_found,
62
- self.null_count,
72
+ contents,
63
73
  ]
64
74
  end
65
75
 
66
76
 
67
- ### Return the Array of words in the sentence as tokenized by the
68
- ### parser.
69
- def words
70
- (0...self.length).to_a.collect do |i|
71
- self.word( i )
72
- end
73
- end
74
-
75
-
76
77
  ### Print out the sentence
77
78
  def to_s
78
79
  return self.words.join(" ")
@@ -91,8 +92,13 @@ class LinkParser::Sentence
91
92
 
92
93
  ### Proxy method -- auto-delegate calls to the first linkage.
93
94
  def method_missing( sym, *args )
94
- linkage = self.linkages.first
95
- return super unless !linkage.nil? && linkage.respond_to?( sym )
95
+
96
+ # Check both symbol and string for forward-compatibility with 1.9.x
97
+ return super unless
98
+ LinkParser::Linkage.instance_methods.include?( sym.to_s ) ||
99
+ LinkParser::Linkage.instance_methods.include?( sym )
100
+
101
+ linkage = self.linkages.first or raise LinkParser::Error, "sentence has no linkages"
96
102
 
97
103
  meth = linkage.method( sym )
98
104
  self.singleton_class.send( :define_method, sym, &meth )