Sha256: fb6cce893d444779af8c2d52732e5042ae3e4f259d0e0cda19e09e190b0d19dd
Contents?: true
Size: 1.3 KB
Versions: 4
Compression:
Stored size: 1.3 KB
Contents
require 'ruby2ruby' class DRG::Ruby::Condition attr_reader :statement, :nested_conditions, :sexp def initialize(sexp) @sexp = sexp @statement = Ruby2Ruby.new.process(sexp.deep_clone) @nested_conditions = create_nested_conditions end def short_statement if @statement =~ /(unless|if)(.+)$/ ($1 << $2).strip elsif @statement =~ /(.*?)\s+\?\s+/ $1.strip end end def return_value edit find_return_value end def find_return_value if @statement =~ /\s+\?\s+(.*?)(:|$)/ $1.strip elsif @statement[/then\n(.+)\nend/] $1.strip else @statement[/(.*?)(unless|if)/, 1].to_s.strip end end def edit(txt) txt.sub! /^return\s*/, 'returns ' txt.sub! /^returns\s*$/, 'returns nil' if txt.split(/\s/).length == 1 txt = "returns #{txt}" elsif txt.include?(' = ') txt = "assigns #{txt}" end txt.strip end # # Set related stuff # def eql?(other) hash == other.hash end def hash sexp.object_id end # # Private # def create_nested_conditions nc = Set.new s = sexp.drop(1) s.flatten.include?(:if) && s.deep_each do |exp| DRG::Decorators::SexpDecorator.new(exp).each_sexp_condition do |node| nc << self.class.new(node) end end nc.to_a end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
drg-0.15.3 | lib/drg/ruby/condition.rb |
drg-0.15.2 | lib/drg/ruby/condition.rb |
drg-0.15.1 | lib/drg/ruby/condition.rb |
drg-0.15.0 | lib/drg/ruby/condition.rb |