このディレクトリの索引

% *** user: 'URLの文字列をエンコードする' / 2 ***
URLの文字列をエンコードする('','') :- !.
URLの文字列をエンコードする([],'') :- !.
URLの文字列をエンコードする(_URL文字列,_エンコードされたURL文字列) :-
    var(_エンコードされたURL文字列),
    sprintf('%q',[_URL文字列],S),
    decompcons(S,L),
    replace_query_1(L2,L),
    replace_query_6(L2,L3),
    concat(L3,_エンコードされたURL文字列),!.
URLの文字列をエンコードする(_URL文字列,_エンコードされたURL文字列) :-
    \+(var(_エンコードされたURL文字列)),
    \+(var(_URL文字列)),
    sprintf('%q',[_URL文字列],S),
    decompcons(S,L),
    replace_query_1(L2,L),
    replace_query_6(L2,L3),
    concat(L3,_エンコードされたURL文字列),!.

% *** user: replace_query_1 / 2 ***
replace_query_1([],[]) :- !.
replace_query_1([+|R],[' '|R1]) :-
    replace_query_1(R,R1),!.
replace_query_1(['%',A,B,'%',C,D|R],[E|R1]) :-
    atomic(E),
    var(A),
    var(B),
    var(C),
    var(D),
    error_protect(name2(E,[U,V]),fail),
    U > 127,
    V < 128,
    U1 is U // 16,
    U2 is U mod 16,
    char_code(C_1,V),
    replace_query_2(C,D,C_1),
    replace_query_4(A,U1),
    replace_query_4(B,U2),
    replace_query_1(R,R1),!.
replace_query_1(['%',A,B,C|R],[E|R1]) :-
    atomic(E),
    var(A),
    var(B),
    var(C),
    error_protect(name2(E,[U,V]),fail),
    U > 127,
    V < 128,
    U1 is U // 16,
    U2 is U mod 16,
    char_code(C,V),
    \+(replace_query_2(_,_,C)),
    replace_query_4(A,U1),
    replace_query_4(B,U2),
    replace_query_1(R,R1),!.
replace_query_1(['%',A,B,'%',C,D|R],[E|R1]) :-
    atomic(E),
    var(A),
    var(B),
    var(C),
    var(D),
    char_code(E,N),
    N > 4096,
    error_protect(name2(E,[U,V]),fail),
    U1 is U // 16,
    U2 is U mod 16,
    V1 is V // 16,
    V2 is V mod 16,
    replace_query_4(A,U1),
    replace_query_4(B,U2),
    replace_query_4(C,V1),
    replace_query_4(D,V2),
    replace_query_1(R,R1),!.
replace_query_1(['%',A,B|R],[C|R1]) :-
    replace_query_2(A,B,C),
    replace_query_1(R,R1),!.
replace_query_1(['%',A,B,'%',C,D|R],[E|R1]) :-
    \+(error_protect(get_global(sjis,on),fail)),
    atomic(A),
    atomic(C),
    compare(>,A,'7'),
    compare(>,C,'7'),
    \+(replace_query_2(C,D,_)),
    replace_query_3(A,B,N1),
    replace_query_3(C,D,N2),
    name2(E,[N1,N2]),
    set_global(euc,on),
    replace_query_1(R,R1),!.
replace_query_1([A|R],[A|R1]) :-
    replace_query_1(R,R1).

% *** user: replace_query_2 / 3 ***
replace_query_2('2','F',/) :-
    ! .
replace_query_2('2','8','(') :-
    ! .
replace_query_2('2','9',')') :-
    ! .
replace_query_2('2','B',+) :-
    ! .
replace_query_2('2','D',-) :-
    ! .
replace_query_2('2','7','''') :-
    ! .
replace_query_2('2','7','''') :-
    ! .
replace_query_2('5','B','[') :-
    ! .
replace_query_2('5','D',']') :-
    ! .
replace_query_2('3','D',=) :-
    ! .
replace_query_2('3','C',<) :-
    ! .
replace_query_2('3','E',>) :-
    ! .
replace_query_2('3','B',;) :-
    ! .
replace_query_2('3','F',?) :-
    ! .
replace_query_2('2','5','%') :-
    ! .
replace_query_2('2','6',&) :-
    ! .
replace_query_2('2','3',#) :-
    ! .
replace_query_2('5','F','_') :-
    ! .
replace_query_2('2','C',',') :-
    ! .
replace_query_2('2','1',!) :-
    ! .
replace_query_2('5','E',^) :-
    ! .
replace_query_2('3','A',:) :-
    ! .
replace_query_2('5','C',\) :-
    ! .
replace_query_2('2','2','"') :-
    ! .
replace_query_2('7','C','|') :-
    ! .
replace_query_2('0','A','\n') :-
    ! .
replace_query_2('0','D','') :-
    ! .
replace_query_2('6','0',`) :-
    ! .
replace_query_2('7','E',~) :-
    ! .
replace_query_2('4','0',@) :-
    ! .

% *** user: replace_query_3 / 3 ***
replace_query_3(A,B,C) :-
    replace_query_4(A,M),
    replace_query_4(B,N),
    C is M * 16 + N,
    ! .

% *** user: replace_query_4 / 2 ***
replace_query_4('F',15) :-
    ! .
replace_query_4('E',14) :-
    ! .
replace_query_4('D',13) :-
    ! .
replace_query_4('C',12) :-
    ! .
replace_query_4('B',11) :-
    ! .
replace_query_4('A',10) :-
    ! .
replace_query_4('9',9) :-
    ! .
replace_query_4('8',8) :-
    ! .
replace_query_4('7',7) :-
    ! .
replace_query_4('6',6) :-
    ! .
replace_query_4('5',5) :-
    ! .
replace_query_4('4',4) :-
    ! .
replace_query_4('3',3) :-
    ! .
replace_query_4('2',2) :-
    ! .
replace_query_4('1',1) :-
    ! .
replace_query_4('0',0) :-
    ! .
replace_query_4(C,N) :-
    char_code(C,M),
    N is M - 48,!.

replace_query_6(['%','2','7'|R1],X) :-
    replace_query_7(R1,X),!.
replace_query_6(L1,X) :-
    replace_query_7(L1,X).

replace_query_7(L1,X) :-
    append(X,['%','2','7'],L1),!.
replace_query_7(X,X).