Skip to content
This repository has been archived by the owner on Oct 15, 2022. It is now read-only.

Commit

Permalink
Conversions: Adding support for n'm" format (#3891)
Browse files Browse the repository at this point in the history
* Conversions: Failing test for n'm" format

* Conversions: Adding a totally specific workaround for 3 feet 5 inches or 6'1" queries

* Conversions: Accuracy correct relative to output

* Conversions: Improving test coverage around whitespace

* Conversions: Removing duplication

* Conversions: Handling foot and inch

* Conversions: Adding tests for feet and inches into another unit and failing test for the UK common "n foot m", commonly used for height

* Conversions: Implemeting the UK common 6 foot 1 query support
  • Loading branch information
mintsoft authored and moollaza committed Jan 26, 2017
1 parent ac73384 commit d05d64d
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 1 deletion.
6 changes: 6 additions & 0 deletions lib/DDG/Goodie/Conversions.pm
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,16 @@ sub magnitude_order {
my $maximum_input = 10**100;

handle query_lc => sub {

# hack around issues with feet and inches for now
$_ =~ s/"/inches/;
$_ =~ s/'/feet/;

if($_ =~ /(\d+)\s*(?:feet|foot)\s*(\d+)(?:\s*inch(?:es)?)?/){
my $feetHack = $1 + $2/12;
$_ =~ s/(\d+)\s*(?:feet|foot)\s*(\d+)(?:\s*inch(?:es)?)?/$feetHack feet/;
}

# hack support for "degrees" prefix on temperatures
$_ =~ s/ degree[s]? (centigrade|celsius|fahrenheit|rankine)/ $1/;

Expand Down
74 changes: 73 additions & 1 deletion t/Conversions.t
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,66 @@ ddg_goodie_test(
physical_quantity => 'mass'
})
),
q`5' 7" in inches` => test_zci(
'5.5833333333333333333333333333333333333333 feet = 67 inches',
structured_answer => make_answer({
markup_input => '5.5833333333333333333333333333333333333333',
raw_input => '5.5833333333333333333333333333333333333333',
from_unit => 'feet',
styled_output => '67',
raw_answer => '67',
to_unit => 'inches',
physical_quantity => 'length'
})
),
q`5feet 7inch in inches` => test_zci(
'5.5833333333333333333333333333333333333333 feet = 67 inches',
structured_answer => make_answer({
markup_input => '5.5833333333333333333333333333333333333333',
raw_input => '5.5833333333333333333333333333333333333333',
from_unit => 'feet',
styled_output => '67',
raw_answer => '67',
to_unit => 'inches',
physical_quantity => 'length'
})
),
q`5 foot 7 inches in inches` => test_zci(
'5.5833333333333333333333333333333333333333 feet = 67 inches',
structured_answer => make_answer({
markup_input => '5.5833333333333333333333333333333333333333',
raw_input => '5.5833333333333333333333333333333333333333',
from_unit => 'feet',
styled_output => '67',
raw_answer => '67',
to_unit => 'inches',
physical_quantity => 'length'
})
),
q`6 foot 3 inches in metres` => test_zci(
'6.25 feet = 1.905 meters',
structured_answer => make_answer({
markup_input => '6.25',
raw_input => '6.25',
from_unit => 'feet',
styled_output => '1.905',
raw_answer => '1.905',
to_unit => 'meters',
physical_quantity => 'length'
})
),
q`6 foot 3 in metres` => test_zci(
'6.25 feet = 1.905 meters',
structured_answer => make_answer({
markup_input => '6.25',
raw_input => '6.25',
from_unit => 'feet',
styled_output => '1.905',
raw_answer => '1.905',
to_unit => 'meters',
physical_quantity => 'length'
})
),
'convert 0.111 stone to pound' => test_zci(
'0.111 stone = 1.554 pounds',
structured_answer => make_answer({
Expand All @@ -118,6 +178,18 @@ ddg_goodie_test(
physical_quantity => 'length'
})
),
q`5'7" in inches` => test_zci(
'5.5833333333333333333333333333333333333333 feet = 67 inches',
structured_answer => make_answer({
markup_input => '5.5833333333333333333333333333333333333333',
raw_input => '5.5833333333333333333333333333333333333333',
from_unit => 'feet',
styled_output => '67',
raw_answer => '67',
to_unit => 'inches',
physical_quantity => 'length'
})
),
'convert 5 kelvin to fahrenheit' => test_zci(
'5 kelvin = -450.670 degrees fahrenheit',
structured_answer => make_answer({
Expand Down Expand Up @@ -2924,4 +2996,4 @@ ddg_goodie_test(
'1E300 miles in metres' => undef,
'5 pas.i to atm' => undef,
);
done_testing;
done_testing;

0 comments on commit d05d64d

Please sign in to comment.