ZzyuR2gM0JVdDmgGhjXbI changeset

Changeset633861623739 (b)
ParentNone (a)
ab
0+diff --git a/src/couchdb/couch_httpd_rewrite.erl b/src/couchdb/couch_httpd_rewrite.erl
0+index 6c3d0e3..5fb0bee 100644
0+--- a/src/couchdb/couch_httpd_rewrite.erl
0++++ b/src/couchdb/couch_httpd_rewrite.erl
0+@@ -236,46 +236,20 @@ make_query_list([{Key, {Value}}|Rest], Bindings, Acc) ->
0+     Value1 = to_json({Value}),
0+     make_query_list(Rest, Bindings, [{to_binding(Key), Value1}|Acc]);
0+ make_query_list([{Key, Value}|Rest], Bindings, Acc) when is_binary(Value) ->
0+-    Value1 = replace_var(Key, Value, Bindings),
0++    Value1 = replace_var(Value, Bindings),
0+     make_query_list(Rest, Bindings, [{to_binding(Key), Value1}|Acc]);
0+ make_query_list([{Key, Value}|Rest], Bindings, Acc) when is_list(Value) ->
0+-    Value1 = replace_var(Key, Value, Bindings),
0++    Value1 = to_json([replace_var(V, Bindings) || V <- Value]),
0+     make_query_list(Rest, Bindings, [{to_binding(Key), Value1}|Acc]);
0+ make_query_list([{Key, Value}|Rest], Bindings, Acc) ->
0+     make_query_list(Rest, Bindings, [{to_binding(Key), Value}|Acc]).
0+ 
0+-replace_var(Key, Value, Bindings) ->
0+-    case Value of
0+-        <<":", Var/binary>> ->
0+-            get_var(Var, Bindings, Value);
0+-        _ when is_list(Value) ->
0+-            Value1 = lists:foldr(fun(V, Acc) ->
0+-                V1 = case V of
0+-                    <<":", VName/binary>> ->
0+-                        case get_var(VName, Bindings, V) of
0+-                            V2 when is_list(V2) ->
0+-                                iolist_to_binary(V2);
0+-                            V2 -> V2
0+-                        end;
0+-                    _ ->
0+-                       
0+-                        V
0+-                end,
0+-                [V1|Acc]
0+-            end, [], Value),
0+-            to_json(Value1);
0+-        _ when is_binary(Value) ->
0+-            Value;
0+-        _ ->
0+-            case Key of
0+-                <<"key">> -> to_json(Value);
0+-                <<"startkey">> -> to_json(Value);
0+-                <<"endkey">> -> to_json(Value);
0+-                _ ->
0+-                    lists:flatten(?JSON_ENCODE(Value))
0+-            end
0+-    end.
0+-
0++replace_var(<<":", Var/binary>> = Value, Bindings) ->
0++    get_var(Var, Bindings, Value);
0++replace_var(Value, _Bindings) when is_binary(Value) ->
0++    Value;
0++replace_var(Value, _Bindings) ->
0++    to_json(Value).
0+ 
0+ get_var(VarName, Props, Default) ->
0+     VarName1 = to_binding(VarName),
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
--- Revision None
+++ Revision 633861623739
@@ -0,0 +1,59 @@
+diff --git a/src/couchdb/couch_httpd_rewrite.erl b/src/couchdb/couch_httpd_rewrite.erl
+index 6c3d0e3..5fb0bee 100644
+--- a/src/couchdb/couch_httpd_rewrite.erl
++++ b/src/couchdb/couch_httpd_rewrite.erl
+@@ -236,46 +236,20 @@ make_query_list([{Key, {Value}}|Rest], Bindings, Acc) ->
+ Value1 = to_json({Value}),
+ make_query_list(Rest, Bindings, [{to_binding(Key), Value1}|Acc]);
+ make_query_list([{Key, Value}|Rest], Bindings, Acc) when is_binary(Value) ->
+- Value1 = replace_var(Key, Value, Bindings),
++ Value1 = replace_var(Value, Bindings),
+ make_query_list(Rest, Bindings, [{to_binding(Key), Value1}|Acc]);
+ make_query_list([{Key, Value}|Rest], Bindings, Acc) when is_list(Value) ->
+- Value1 = replace_var(Key, Value, Bindings),
++ Value1 = to_json([replace_var(V, Bindings) || V <- Value]),
+ make_query_list(Rest, Bindings, [{to_binding(Key), Value1}|Acc]);
+ make_query_list([{Key, Value}|Rest], Bindings, Acc) ->
+ make_query_list(Rest, Bindings, [{to_binding(Key), Value}|Acc]).
+
+-replace_var(Key, Value, Bindings) ->
+- case Value of
+- <<":", Var/binary>> ->
+- get_var(Var, Bindings, Value);
+- _ when is_list(Value) ->
+- Value1 = lists:foldr(fun(V, Acc) ->
+- V1 = case V of
+- <<":", VName/binary>> ->
+- case get_var(VName, Bindings, V) of
+- V2 when is_list(V2) ->
+- iolist_to_binary(V2);
+- V2 -> V2
+- end;
+- _ ->
+-
+- V
+- end,
+- [V1|Acc]
+- end, [], Value),
+- to_json(Value1);
+- _ when is_binary(Value) ->
+- Value;
+- _ ->
+- case Key of
+- <<"key">> -> to_json(Value);
+- <<"startkey">> -> to_json(Value);
+- <<"endkey">> -> to_json(Value);
+- _ ->
+- lists:flatten(?JSON_ENCODE(Value))
+- end
+- end.
+-
++replace_var(<<":", Var/binary>> = Value, Bindings) ->
++ get_var(Var, Bindings, Value);
++replace_var(Value, _Bindings) when is_binary(Value) ->
++ Value;
++replace_var(Value, _Bindings) ->
++ to_json(Value).
+
+ get_var(VarName, Props, Default) ->
+ VarName1 = to_binding(VarName),