Class: RubySpeech::GRXML::Rule
- Includes:
- XML::Language
- Defined in:
- lib/ruby_speech/grxml/rule.rb
Overview
A rule definition associates a legal rule expansion with a rulename. The rule definition is also responsible for defining the scope of the rule definition: whether it is local to the grammar in which it is defined or whether it may be referenced within other grammars.
http://www.w3.org/TR/speech-grammar/#S3
http://www.w3.org/TR/speech-grammar/#S3.1
The rule element has two attributes: id and scope. The id attribute is always required; the scope is optional.
The id must be unique with-in the grammar document
The scope is either “private” or “public”. If it is not explicitly declared in a rule definition then the scope defaults to “private”.
Constant Summary collapse
- VALID_CHILD_TYPES =
[Nokogiri::XML::Element, Nokogiri::XML::Text, String, OneOf, Item, Ruleref, Tag, Token].freeze
Instance Attribute Summary
Attributes included from RubySpeech::GenericElement
Instance Method Summary collapse
- #<<(arg) ⇒ Object
- #eql?(o) ⇒ Boolean
-
#id ⇒ String
The id attribute is the unique name to identify the rule.
- #id=(ia) ⇒ Object
-
#scope ⇒ String
The scope attribute is optional…
-
#scope=(sc) ⇒ Object
The scope attribute should only be “private” or “public”.
Methods included from XML::Language
Methods inherited from Element
module, namespace, #regexp_content, root_element, #to_doc
Methods included from RubySpeech::GenericElement
#+, #==, #base_uri, #base_uri=, #build, #children, #clone, #create_node, #embed, #eval_dsl_block, included, #inherit, #initialize, #inspect, #mass_assign, #method_missing, #namespace=, #namespace_href, #node, #nokogiri_children, #read_attr, #respond_to_missing?, #string, #to_s, #traverse, #version, #version=, #write_attr
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class RubySpeech::GenericElement
Instance Method Details
#<<(arg) ⇒ Object
73 74 75 76 |
# File 'lib/ruby_speech/grxml/rule.rb', line 73 def <<(arg) raise InvalidChildError, "A Rule can only accept OneOf, Item, Ruleref, Tag, or Token as children" unless VALID_CHILD_TYPES.include? arg.class super end |
#eql?(o) ⇒ Boolean
78 79 80 |
# File 'lib/ruby_speech/grxml/rule.rb', line 78 def eql?(o) super o, :id, :scope, :language end |
#id ⇒ String
The id attribute is the unique name to identify the rule
41 42 43 |
# File 'lib/ruby_speech/grxml/rule.rb', line 41 def id read_attr :id, :to_sym end |
#id=(ia) ⇒ Object
48 49 50 |
# File 'lib/ruby_speech/grxml/rule.rb', line 48 def id=(ia) self[:id] = ia end |
#scope ⇒ String
The scope attribute is optional…
58 59 60 |
# File 'lib/ruby_speech/grxml/rule.rb', line 58 def scope read_attr :scope, :to_sym end |
#scope=(sc) ⇒ Object
The scope attribute should only be “private” or “public”
68 69 70 71 |
# File 'lib/ruby_speech/grxml/rule.rb', line 68 def scope=(sc) raise ArgumentError, "A Rule's scope can only be 'public' or 'private'" unless %w{public private}.include?(sc.to_s) self[:scope] = sc end |