class GabTree
Attributes
match_critera[R]
node_counter[RW]
phoneme_convert[R]
root_node[RW]
target_phoneme[RW]
Public Class Methods
new(target_phoneme, args={})
click to toggle source
# File lib/promper/gab_tree.rb, line 11 def initialize(target_phoneme, args={}) @target_phoneme = target_phoneme @phoneme_convert = args[:phoneme_convert] || default_phoneme_convert @match_critera = args[:match_criteria] || default_match_criteria if @phoneme_convert == true @target_phoneme = target_phoneme_convert else @target_phoneme = default_target_phoneme end @node_counter = 0 @root_node = Tree::TreeNode.new( node_counter_to_string, ["NONE IM THE ROOT!", @target_phoneme, state: :ready_to_continue]) end
Public Instance Methods
change_node_state_aborted(node)
click to toggle source
# File lib/promper/gab_tree.rb, line 116 def change_node_state_aborted(node) node.content[2][:state] = :aborted end
change_node_state_completed(node)
click to toggle source
# File lib/promper/gab_tree.rb, line 120 def change_node_state_completed(node) node.content[2][:state] = :completed end
check_leaves()
click to toggle source
# File lib/promper/gab_tree.rb, line 100 def check_leaves root_node.each_leaf end
check_node_state(node)
click to toggle source
# File lib/promper/gab_tree.rb, line 104 def check_node_state(node) node.content[2][:state] end
checked_all_target_phonemes?(node)
click to toggle source
# File lib/promper/gab_tree.rb, line 108 def checked_all_target_phonemes?(node) begin node.content[1].length == 0 rescue true end end
default_match_criteria()
click to toggle source
# File lib/promper/gab_tree.rb, line 32 def default_match_criteria ExactMatch.new end
default_phoneme_convert()
click to toggle source
# File lib/promper/gab_tree.rb, line 28 def default_phoneme_convert false end
default_target_phoneme()
click to toggle source
# File lib/promper/gab_tree.rb, line 46 def default_target_phoneme target_phoneme.downcase.gsub(/\s+/, "") end
failedToMakeLeaves?(node)
click to toggle source
# File lib/promper/gab_tree.rb, line 124 def failedToMakeLeaves?(node) node.is_leaf? && !checked_all_target_phonemes?(node) end
finished?()
click to toggle source
# File lib/promper/gab_tree.rb, line 60 def finished? @finished_check = false nodes = check_leaves nodes.each do |node| if check_node_state(node) == :completed # How can I do this on one line? @finished_check = true elsif check_node_state(node) == :aborted @finished_check = true else @finished_check = false break end end @finished_check end
get_remaining_phoneme_from(node)
click to toggle source
# File lib/promper/gab_tree.rb, line 136 def get_remaining_phoneme_from(node) node.content[1] end
iterate_over_leaves()
click to toggle source
# File lib/promper/gab_tree.rb, line 78 def iterate_over_leaves nodes = check_leaves nodes.each do |node| unless check_node_state(node) == :ready_to_continue next else if checked_all_target_phonemes?(node) change_node_state_completed(node) else try_to_make_leaves(node) change_node_state_completed(node) end end if failedToMakeLeaves?(node) change_node_state_aborted(node) end end end
iterate_until_finished()
click to toggle source
# File lib/promper/gab_tree.rb, line 54 def iterate_until_finished until finished? do iterate_over_leaves end end
make_child_nodes(match_array, node)
click to toggle source
# File lib/promper/gab_tree.rb, line 152 def make_child_nodes(match_array, node) match_array.each do |matched_phoneme, remaining_phoneme_chunk| node_counter_increment node << Tree::TreeNode.new( node_counter_to_string, [matched_phoneme, remaining_phoneme_chunk, state: :ready_to_continue]) end end
make_match_array(node_target_phoneme)
click to toggle source
# File lib/promper/gab_tree.rb, line 140 def make_match_array(node_target_phoneme) # Consider renaming to remaining_phoneme match_array = match_critera.match(node_target_phoneme) match_array end
node_counter_increment()
click to toggle source
Put as a separate method to remind me I have to figure out what is going on! For some reason I can't increment the counter if I use node_counter
+= 1. Strange!
# File lib/promper/gab_tree.rb, line 148 def node_counter_increment @node_counter += 1 end
node_counter_to_string()
click to toggle source
# File lib/promper/gab_tree.rb, line 50 def node_counter_to_string node_counter.to_s end
target_phoneme_convert()
click to toggle source
# File lib/promper/gab_tree.rb, line 36 def target_phoneme_convert if @phoneme_convert == true list_of_words = @target_phoneme.split ipa_list = list_of_words.map do |word| word.to_ipa.tr('ˈˌ', '') end ipa_list = ipa_list.join end end
try_to_make_leaves(node)
click to toggle source
# File lib/promper/gab_tree.rb, line 128 def try_to_make_leaves(node) @remaining_phoneme = get_remaining_phoneme_from(node) @match_array = make_match_array(@remaining_phoneme) unless @match_array == nil make_child_nodes(@match_array, node) end end