Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何去掉这个ruby代码_Ruby_Dry - Fatal编程技术网

如何去掉这个ruby代码

如何去掉这个ruby代码,ruby,dry,Ruby,Dry,我想擦干这段代码。我似乎不知道怎么做 def get_all_verb_nodes all_verb_nodes = @all_nodes_ins_del_nodes.select { |node| previous_node = node.xpath('preceding-sibling::w:r').last base_word = previous_node.text.split.last.strip.delete('.!?,:') if previous_node

我想擦干这段代码。我似乎不知道怎么做

def get_all_verb_nodes
    all_verb_nodes = @all_nodes_ins_del_nodes.select { |node|
    previous_node = node.xpath('preceding-sibling::w:r').last
    base_word = previous_node.text.split.last.strip.delete('.!?,:') if previous_node
  words = get_node_text(node)
  next_node = node.next_element
  next_node_is_insert_or_delete = is_insert_or_delete?(next_node.name) if next_node
  next_node_word = next_node.text.strip if next_node
  words.length <= 2 && words.any? { |word| is_a_verb?(base_word+word) || is_a_verb?(word) && !is_pluralized?(base_word+word, base_word+next_node_word) } && !next_node_is_insert_or_delete
    }
end


def get_all_article_nodes
    all_article_nodes = @all_nodes_ins_del_nodes.select { |node|
    previous_node = node.xpath('preceding-sibling::w:r').last
    base_word = previous_node.text.split.last.strip.delete('.!?,:') if previous_node
  words = get_node_text(node) 
  next_node = node.next_element
  next_node_is_insert_or_delete = is_insert_or_delete?(next_node.name) if next_node
  next_node_word = next_node.text.strip if next_node
  words.length <= 2 && words.any? { |word| @articleset.include?(word) || (@articleset.include?(base_word) if word == 'n') } && !@articleset.include?(next_node_word) && !next_node_is_insert_or_delete
    }
end
def get_all_动词_节点
all_verb_nodes=@all_nodes_ins_del_nodes.select{| node|
previous_node=node.xpath('previous-sibling::w:r')。last
基本单词=上一个节点。text.split.last.strip.delete(“.!?,:”)如果是上一个节点
words=获取节点文本(节点)
下一个\u节点=node.next\u元素
下一个\u节点\u是\u插入\u或\u删除=是\u插入\u或\u删除?(下一个\u节点.名称)如果是下一个\u节点
下一个\u节点\u单词=下一个\u节点.text.strip如果下一个\u节点

words.length这是第一个切入点。我移动了一些东西,使它们按逻辑进行分组,以提高产量

def get_all_nodes
  @all_nodes_ins_del_nodes.select do |node|
    previous_node = node.xpath('preceding-sibling::w:r').last
    base_word = previous_node.text.split.last.strip.delete('.!?,:') if previous_node

    next_node = node.next_element
    next_node_is_insert_or_delete = is_insert_or_delete?(next_node.name) if next_node
    next_node_word = next_node.text.strip if next_node

    words = get_node_text(node) 
    words.length <= 2 &&
    !next_node_is_insert_or_delete &&
    yield(words, base_word, next_node_word)
  end
end

all_verb_nodes = get_all_nodes do |words, base_word, next_node_word|
  words.any? do |word|
    is_a_verb?(base_word + word) ||
    is_a_verb?(word) &&
    !is_pluralized?(base_word + word, base_word + next_node_word)
  end
end

all_article_nodes = get_all_nodes do |words, base_word, next_node_word|
  !@articleset.include?(next_node_word) &&
  words.any? do |word|
    @articleset.include?(word) || (@articleset.include?(base_word) if word == 'n')
  end
end
def获取所有节点
@所有_节点_in_del_节点。选择do |节点|
previous_node=node.xpath('previous-sibling::w:r')。last
基本单词=上一个节点。text.split.last.strip.delete(“.!?,:”)如果是上一个节点
下一个\u节点=node.next\u元素
下一个\u节点\u是\u插入\u或\u删除=是\u插入\u或\u删除?(下一个\u节点.名称)如果是下一个\u节点
下一个\u节点\u单词=下一个\u节点.text.strip如果下一个\u节点
words=获取节点文本(节点)

words.length这看起来很程序化,很难用注释来阅读,但是阻塞和调用
yield
可能是您在这里需要的。感谢seph提供您的想法和代码。我会尝试一下,然后回复给您。从我所能看到的情况来看,它让我走上了正确的道路,并回答了我的问题。