From 74c863c73a57ee9a3dec87fd4b52ce90061f7c91 Mon Sep 17 00:00:00 2001 From: cryptogopher Date: Sat, 6 Jun 2020 15:58:12 +0200 Subject: [PATCH] FormulaBuilder now recognizes qualified quantity identifiers --- lib/body_tracking/formula_builder.rb | 7 ++++++- test/unit/formula_test.rb | 11 ++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/body_tracking/formula_builder.rb b/lib/body_tracking/formula_builder.rb index fe38a00..4c54121 100644 --- a/lib/body_tracking/formula_builder.rb +++ b/lib/body_tracking/formula_builder.rb @@ -110,7 +110,12 @@ module BodyTracking case left[0] when :bt_quantity - if @quantity_methods[left[1]].include?(right[1]) + case + when dot == :'::' + token = "#{left[1]}#{dot}#{right[1]}" + @identifiers << token + [:bt_quantity, token] + when @quantity_methods[left[1]].include?(right[1]) part_index = @parts.length if @quantity_methods.has_key?(left[1]) [:bt_numeric_method_call, diff --git a/test/unit/formula_test.rb b/test/unit/formula_test.rb index ee34079..772c33f 100644 --- a/test/unit/formula_test.rb +++ b/test/unit/formula_test.rb @@ -70,7 +70,16 @@ class FormulaTest < ActiveSupport::TestCase "quantities['Meal'][_index].created_at"}, {type: :unindexed, content: "quantities['RM'].lastBefore(parts[0])"}, {type: :indexed, content: "100*quantities['Energy'][_index]/parts[1][_index]"} - ] + ], + + # Qualified quantity identifiers + 'Energy::calculated > Energy', Set['Energy::calculated', 'Energy'], [ + {type: :indexed, content: "quantities['Energy::calculated'][_index]>" \ + "quantities['Energy'][_index]"} + ], + '"Energy::as %RM" < 100', Set['Energy::as %RM'], [ + {type: :indexed, content: "quantities['Energy::as %RM'][_index]<100"} + ], ] d_methods = ['nil?', 'abs']