diff options
| author | Michael Williamson <mike@zwobble.org> | 2013-09-27 21:24:43 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2013-09-27 21:24:43 +0100 |
| commit | 14ccbee3f9feab1504f79e82e7a9696b379f212c (patch) | |
| tree | 49100fd8174389ef2d6baa6b74e2cded80a8a5cd | |
| parent | 67573e8dc33c70cd8cc083f8256e931187e967b5 (diff) | |
Remove _Result class and add args to transform for raw/multiple inputs/outputs
| -rw-r--r-- | jq.pyx | 24 | ||||
| -rw-r--r-- | tests/jq_tests.py | 38 |
2 files changed, 30 insertions, 32 deletions
@@ -51,10 +51,15 @@ cdef class _Program(object): def __dealloc__(self): jq_teardown(&self._jq) - def transform(self, input, raw_input=False): + def transform(self, input, raw_input=False, raw_output=False, multiple_output=False): string_input = input if raw_input else json.dumps(input) result_strings = self._string_to_strings(string_input) - return _Result(result_strings) + if raw_output: + return "\n".join(result_strings) + elif multiple_output: + return map(json.loads, result_strings) + else: + return json.loads(result_strings[0]) cdef object _string_to_strings(self, char* input): @@ -91,18 +96,3 @@ cdef class _Program(object): dumped = jv_dump_string(result, dumpopts) output.append(jv_string_value(dumped)) jv_free(dumped) - - - -class _Result(object): - def __init__(self, strings): - self._strings = strings - - def __str__(self): - return "\n".join(self._strings) - - def json(self): - return json.loads(str(self)) - - def json_all(self): - return map(json.loads, self._strings) diff --git a/tests/jq_tests.py b/tests/jq_tests.py index de0c23b..e293aa1 100644 --- a/tests/jq_tests.py +++ b/tests/jq_tests.py @@ -7,7 +7,15 @@ from jq import jq def output_of_dot_operator_is_input(): assert_equal( "42", - jq(".").transform("42").json() + jq(".").transform("42") + ) + + +@istest +def can_add_one_to_each_element_of_an_array(): + assert_equal( + [2, 3, 4], + jq("[.[]+1]").transform([1, 2, 3]) ) @@ -15,47 +23,47 @@ def output_of_dot_operator_is_input(): def input_string_is_parsed_to_json_if_raw_input_is_true(): assert_equal( 42, - jq(".").transform("42", raw_input=True).json() + jq(".").transform("42", raw_input=True) ) @istest -def can_add_one_to_each_element_of_an_array(): +def output_is_serialised_to_json_string_if_raw_output_is_true(): assert_equal( - "[2,3,4]", - str(jq("[.[]+1]").transform([1, 2, 3])) + '"42"', + jq(".").transform("42", raw_output=True) ) @istest -def output_elements_are_separated_by_newlines(): +def elements_in_raw_output_are_separated_by_newlines(): assert_equal( "1\n2\n3", - str(jq(".[]").transform([1, 2, 3])) + jq(".[]").transform([1, 2, 3], raw_output=True) ) @istest -def string_to_json_parses_json_output(): +def first_output_element_is_returned_if_multiple_output_is_false_but_there_are_multiple_output_elements(): assert_equal( - [2, 3, 4], - jq("[.[]+1]").transform([1, 2, 3]).json() + 2, + jq(".[]+1").transform([1, 2, 3]) ) @istest -def string_to_json_all_parses_json_output(): +def multiple_output_elements_are_returned_if_multiple_output_is_true(): assert_equal( [2, 3, 4], - jq(".[]+1").transform([1, 2, 3]).json_all() + jq(".[]+1").transform([1, 2, 3], multiple_output=True) ) @istest -def output_elements_are_separated_by_newlines_when_there_are_multiple_inputs(): +def multiple_inputs_in_raw_input_are_separated_by_newlines(): assert_equal( - "2\n3\n4", - str(jq(".+1").transform("1\n2\n3", raw_input=True)) + [2, 3, 4], + jq(".+1").transform("1\n2\n3", raw_input=True, multiple_output=True) ) |
