Sha256: d56b9c20451e2ee5932523c8973458983b23144972d3dc29371180a86fbd7648

Contents?: true

Size: 1.79 KB

Versions: 1

Compression:

Stored size: 1.79 KB

Contents

module FuzzyRealty
  METHODS = {
    # Not yet implemented
    :bathroom => 1,
    :garage => 1,
    :deck => 1,
    
    # Price is match when desired is 90-105%  of actual. Otherwise give a
    # reduced factor.
    :price => 
      lambda do |listing,param| 
        puts "Called price" if $debug
        actual,desired = listing.price.to_f, param.desired
        result = if (desired*0.90..desired*1.05) === actual
          1.0
        else 
          1 - ((desired - actual) / actual).abs
        end
        puts result if $debug
        result
      end,
  
    # Location calc. does lookup to find score for desired and actual
    ## Currently just return 1 if exact, 0 otherwise
    :location => 
      lambda do |listing,param|
        puts "Called location" if $debug
        # Perform a quick lookup (i.e. FuzzyRealty::LOCN[:A][:A] => 1.0)
        puts FuzzyRealty::LOCN[param.desired.to_sym][listing.location.to_sym] if $debug
        FuzzyRealty::LOCN[param.desired.to_sym][listing.location.to_sym]
      end,
      
    :sqft => 
      lambda do |listing,param|
                puts "Called sqft" if $debug
        actual, desired = listing.sqft, param.desired
        result = if (actual + 50) >= desired
          1.0
        elsif (actual + 150) >= desired
          0.8
        elsif (actual + 300) >= desired
          0.5
        else
          0.0
        end
        puts result if $debug
        result
      end,
    # Style's follow lookup table similar to Location

    :style => 
      lambda do |listing,param|
                puts "Called style" if $debug
        desired = FuzzyRealty::STYLE[:Symbol][param.desired]
        actual  = FuzzyRealty::STYLE[:Symbol][listing.style]
        puts FuzzyRealty::STYLE[desired][actual] if $debug
        FuzzyRealty::STYLE[desired][actual]
      end
  }
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rkneufeld-fuzzy-realty-0.3.1 lib/rulebase.rb