Любой способ реорганизовать этот код меньше? - PullRequest
0 голосов
/ 24 июня 2011

Я довольно неплохо взломал исходный код, но я не вижу способа сжать это меньше, не вставляя проверки в другой файл в модуле.Текст регулярного выражения различен для каждого случая, когда / x /, поэтому они не могут быть больше объединены, что я могу придумать

    case state
      when /OH|PA|MN/
        if @browser.text.include?("My text")
            raise "x" unless /foo/.match(@browser.text)
            raise "y" unless /foo2/.match(@browser.text)
            raise "z" unless /foo3/.match(@browser.text)
        else
            raise "x1" unless /foofoo/.match(@browser.text)
            raise "y1" unless /foofoo2/.match(@browser.text)
            raise "z1" unless /foofoo3/.match(@browser.text)
        end
      when /IL|VA/
        if @browser.text.include?("My text")
            raise "x" unless /foo/.match(@browser.text)
            raise "y" unless /foo2/.match(@browser.text)
            raise "z" unless /foo3/.match(@browser.text)
        else
            raise "x1" unless /foofoo/.match(@browser.text)
            raise "y1" unless /foofoo2/.match(@browser.text)
            raise "z1" unless /foofoo3/.match(@browser.text)
        end
      when /WI|SC|TN|IN|IA/
        if @browser.text.include?("My text")
            raise "x" unless /foo/.match(@browser.text)
            raise "y" unless /foo2/.match(@browser.text)
            raise "z" unless /foo3/.match(@browser.text)
        else
            raise "x1" unless /foofoo/.match(@browser.text)
            raise "y1" unless /foofoo2/.match(@browser.text)
            raise "z1" unless /foofoo3/.match(@browser.text)
        end
      when /SC/
        if @browser.text.include?("My text")
            raise "x" unless /foo/.match(@browser.text)
            raise "y" unless /foo2/.match(@browser.text)
            raise "z" unless /foo3/.match(@browser.text)
        else
            raise "x1" unless /foofoo/.match(@browser.text)
            raise "y1" unless /foofoo2/.match(@browser.text)
            raise "z1" unless /foofoo3/.match(@browser.text)
        end
      when /GA/
        if @browser.text.include?("My text")
            raise "x" unless /foo/.match(@browser.text)
            raise "y" unless /foo2/.match(@browser.text)
            raise "z" unless /foo3/.match(@browser.text)
        else
            raise "x1" unless /foofoo/.match(@browser.text)
            raise "y1" unless /foofoo2/.match(@browser.text)
            raise "z1" unless /foofoo3/.match(@browser.text)
        end
      else
        raise "Not a valid state"
      end

Ответы [ 2 ]

1 голос
/ 24 июня 2011
raise "Not a valid state" unless %w[OH PA MN IL VA WI SC TN IN IA SC GA].include?(state)
if @browser.text.include?("My text")
  raise case @browser.text
  when /foo/; "x"
  when /foo2/; "y"
  when /foo3/; "z"
  end
else
  raise case @browser.text
  when /foofoo/; "x1"
  when /foofoo2/; "y1"
  when /foofoo3/; "z1"
  end
end
1 голос
/ 24 июня 2011

Я предполагаю, что он отличается от вашего реального кода, поэтому вы не можете сделать

if state =~/OH|PA|MN|IL|VA|WI|SC|TN|IN|IA|SC|GA/
    if @browser.text.include?("My text")
        raise "x" unless /foo/.match(@browser.text)
        raise "y" unless /foo2/.match(@browser.text)
        raise "z" unless /foo3/.match(@browser.text)
    else
        raise "x1" unless /foofoo/.match(@browser.text)
        raise "y1" unless /foofoo2/.match(@browser.text)
        raise "z1" unless /foofoo3/.match(@browser.text)
    end
else
    raise "Not a valid state"
end

потому что прямо сейчас ты можешь. Итак, если вы действительно хотели получить ответ, почему вы разместили фальшивый код, который можно легко уменьшить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...