OSDN Git Service

no-proto option of absolute-url function.
authorvisor <visor@users.sourceforge.jp>
Sun, 19 May 2013 14:59:23 +0000 (23:59 +0900)
committervisor <visor@users.sourceforge.jp>
Sun, 19 May 2013 14:59:23 +0000 (23:59 +0900)
modules/ml-apache.cc

index ecc5f56..3f3cd36 100644 (file)
@@ -229,7 +229,7 @@ MNode*  ml_is_post_method (MNode* cell, MlEnv* mlenv) {
 
 /*DOC:
 ===absolute-url===
- (absolute-url URL [#http | :http BOOL] [#https | :https BOOL] [:port NUM]) -> STRING
+ (absolute-url URL [#http | :http BOOL] [#https | :https BOOL] [#no-proto | :no-proto BOOL] [:port NUM]) -> STRING
 
 */
 //#AFUNC       absolute-url    ml_absolute_url
@@ -242,6 +242,7 @@ MNode*  ml_absolute_url (MNode* cell, MlEnv* mlenv) {
     enum {
        PROTO_HTTP,
        PROTO_HTTPS,
+       PROTO_NONE
     }  proto;
     int  port = 0;
     ustring*  u;
@@ -251,6 +252,7 @@ MNode*  ml_absolute_url (MNode* cell, MlEnv* mlenv) {
     static paramList  kwlist[] = {
        {CharConst ("http"), true},
        {CharConst ("https"), true},
+       {CharConst ("no-proto"), true},
        {CharConst ("port"), false},
        {NULL, 0, 0}
     };
@@ -266,7 +268,9 @@ MNode*  ml_absolute_url (MNode* cell, MlEnv* mlenv) {
        proto = PROTO_HTTP;
     if (keywords[1] && eval_bool (keywords[1], mlenv))
        proto = PROTO_HTTPS;
-    if (evkw (2, t)) {
+    if (keywords[2] && eval_bool (keywords[2], mlenv))
+       proto = PROTO_NONE;
+    if (evkw (3, t)) {
        n = to_int (t ());
        if (1 <= n && n <= 65535)
            port = n;
@@ -279,6 +283,9 @@ MNode*  ml_absolute_url (MNode* cell, MlEnv* mlenv) {
     case PROTO_HTTPS:
        ans = new ustring (CharConst ("https://"));
        break;
+    case PROTO_NONE:
+       ans = new ustring (CharConst ("//"));
+       break;
     default:
        assert (0);
     }