Sha256: ea24c0f5c0629b351e40980914cb0db399ae82d444e85766f775638da7faf3fb

Contents?: true

Size: 1.39 KB

Versions: 3

Compression:

Stored size: 1.39 KB

Contents

#!/usr/bin/ruby
#
#	sentence.rb - this file contains the class definition for the
#	LinkParser::Sentence class.
#

require "forwardable"

class LinkParser

	class Sentence
		
		extend Forwardable

		# initializes a new Sentence object
		def initialize 
			@definitions = []
			@linkages = []
			@names = []
		end

		# the definitions in this sentence
		attr_accessor :definitions

		# the linkages of this sentence
		attr_accessor :linkages

		# the words in this sentence
		attr_accessor :names

		def_delegators :@definitions, *(Array.instance_methods(false))

		def to_str 
			@names.join(" ")
		end

		def sentence? 
			! @linkages.empty?
		end

		def verb 
			return nil if @linkages.empty?
			@linkages.find {|linkage|
				vrb = linkage.connections.find {|conn|
					conn.name.match(/^S/)
				}
				return vrb.rword if vrb
				vrb = linkage.connections.find {|conn|
					conn.name.match(/^O/)
				}
				return vrb.lword if vrb
			}
			return nil
		end

		def subject 
			return nil if @linkages.empty?
			@linkages.find {|linkage|
				subj = linkage.connections.find {|conn|
					conn.name.match(/^S/)
				}
				return subj.lword if subj
			}
			return nil
		end

		def object 
			return nil if @linkages.empty?
			@linkages.find {|linkage|
				obj = linkage.connections.find {|conn|
					conn.name.match(/^O/)
				}
				return obj.rword if obj
			}
			return nil
		end

	end # class Sentence
end # class LinkParser

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rwdeliza-0.03 lib/linkparser/sentence.rb
rwdeliza-0.05 lib/linkparser/sentence.rb
rwdeliza-0.04 lib/linkparser/sentence.rb