Module: InterMine::PathQuery::AttributeConstraint
- Included in:
- MultiValueConstraint, SingleValueConstraint
- Defined in:
- lib/intermine/query.rb
Instance Method Summary collapse
Instance Method Details
#coerce_value(val) ⇒ Object
1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 |
# File 'lib/intermine/query.rb', line 1126 def coerce_value(val) nums = ["Float", "Double", "float", "double"] ints = ["Integer", "int"] bools = ["Boolean", "boolean"] dataType = @path.elements.last.dataType.split(".").last coerced = val if nums.include?(dataType) if !val.is_a?(Numeric) coerced = val.to_f end end if ints.include?(dataType) coerced = val.to_i end if bools.include?(dataType) if !val.is_a?(TrueClass) && !val.is_a?(FalseClass) if val == 0 or val == "0" or val.downcase == "yes" or val.downcase == "true" or val.downcase == "t" coerced = true elsif val == 1 or val == "1" or val.downcase == "no" or val.downcase == "false" or val.downcase == "f" coerced = false end end end if coerced == 0 and not val.to_s.start_with?("0") raise ArgumentError, "cannot coerce #{val} to a #{dataType}" end return coerced end |
#validate ⇒ Object
1120 1121 1122 1123 1124 |
# File 'lib/intermine/query.rb', line 1120 def validate if !@path.elements.last.is_a?(InterMine::Metadata::AttributeDescriptor) raise ArgumentError, "Attribute constraints must be on attributes, got #{@path}" end end |
#validate_value(val) ⇒ Object
1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 |
# File 'lib/intermine/query.rb', line 1155 def validate_value(val) nums = ["Float", "Double", "float", "double"] ints = ["Integer", "int"] bools = ["Boolean", "boolean"] dataType = @path.elements.last.dataType.split(".").last if nums.include?(dataType) if !val.is_a?(Numeric) raise ArgumentError, "value #{val} is not numeric for #{@path}" end end if ints.include?(dataType) val = val.to_i if !val.is_a?(Integer) raise ArgumentError, "value #{val} is not an integer for #{@path}" end end if bools.include?(dataType) if !val.is_a?(TrueClass) && !val.is_a?(FalseClass) raise ArgumentError, "value #{val} is not a boolean value for #{@path}" end end end |