lib/rulebase.rb in rkneufeld-fuzzy-realty-0.3.1 vs lib/rulebase.rb in rkneufeld-fuzzy-realty-0.4.0

- old
+ new

@@ -1,18 +1,19 @@ module FuzzyRealty - METHODS = { + RULES = { # Not yet implemented - :bathroom => 1, - :garage => 1, - :deck => 1, + #:bathrooms => , + #:bedrooms => , + #:garage => , + #:deck => , # Price is match when desired is 90-105% of actual. Otherwise give a # reduced factor. :price => - lambda do |listing,param| + lambda do |listing,desired| puts "Called price" if $debug - actual,desired = listing.price.to_f, param.desired + actual = listing.price.to_f result = if (desired*0.90..desired*1.05) === actual 1.0 else 1 - ((desired - actual) / actual).abs end @@ -21,21 +22,21 @@ 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| + lambda do |listing,desired| 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] + puts FuzzyRealty::LOCN[desired.to_sym][listing.location.to_sym] if $debug + FuzzyRealty::LOCN[desired.to_sym][listing.location.to_sym] end, :sqft => - lambda do |listing,param| + lambda do |listing,desired| puts "Called sqft" if $debug - actual, desired = listing.sqft, param.desired + actual = listing.sqft result = if (actual + 50) >= desired 1.0 elsif (actual + 150) >= desired 0.8 elsif (actual + 300) >= desired @@ -47,12 +48,12 @@ result end, # Style's follow lookup table similar to Location :style => - lambda do |listing,param| + lambda do |listing,desired| puts "Called style" if $debug - desired = FuzzyRealty::STYLE[:Symbol][param.desired] + desired = FuzzyRealty::STYLE[:Symbol][desired] actual = FuzzyRealty::STYLE[:Symbol][listing.style] puts FuzzyRealty::STYLE[desired][actual] if $debug FuzzyRealty::STYLE[desired][actual] end } \ No newline at end of file