[Groonga-commit] groonga/groonga at 2100e7e [master] Clean

Back to archive index

Kouhei Sutou null+****@clear*****
Tue Nov 24 13:06:22 JST 2015


Kouhei Sutou	2015-11-24 13:06:22 +0900 (Tue, 24 Nov 2015)

  New Revision: 2100e7e89b9341548d4c71ce11d5f822f25bba61
  https://github.com/groonga/groonga/commit/2100e7e89b9341548d4c71ce11d5f822f25bba61

  Message:
    Clean

  Modified files:
    lib/output.c

  Modified: lib/output.c (+80 -139)
===================================================================
--- lib/output.c    2015-11-24 12:38:23 +0900 (19dc1b7)
+++ lib/output.c    2015-11-24 13:06:22 +0900 (692182e)
@@ -32,15 +32,47 @@
 #define INCR_LENGTH (DEPTH ? (GRN_UINT32_VALUE_AT(LEVELS, (DEPTH - 1)) += 2) : 0)
 
 static void
-indent(grn_ctx *ctx, grn_obj *outbuf, int level)
+indent(grn_ctx *ctx, grn_obj *outbuf, size_t level)
 {
-  int i;
+  size_t i;
   for (i = 0; i < level; i++) {
     GRN_TEXT_PUTS(ctx, outbuf, "  ");
   }
 }
 
 static void
+json_array_open(grn_ctx *ctx, grn_obj *outbuf, size_t *indent_level)
+{
+  GRN_TEXT_PUTC(ctx, outbuf, '[');
+  if (ctx->impl->output.is_pretty) {
+    GRN_TEXT_PUTC(ctx, outbuf, '\n');
+    (*indent_level)++;
+    indent(ctx, outbuf, *indent_level);
+  }
+}
+
+static void
+json_array_close(grn_ctx *ctx, grn_obj *outbuf, size_t *indent_level)
+{
+  if (ctx->impl->output.is_pretty) {
+    GRN_TEXT_PUTC(ctx, outbuf, '\n');
+    (*indent_level)--;
+    indent(ctx, outbuf, *indent_level);
+  }
+  GRN_TEXT_PUTC(ctx, outbuf, ']');
+}
+
+static void
+json_element_end(grn_ctx *ctx, grn_obj *outbuf, size_t indent_level)
+{
+  GRN_TEXT_PUTC(ctx, outbuf, ',');
+  if (ctx->impl->output.is_pretty) {
+    GRN_TEXT_PUTC(ctx, outbuf, '\n');
+    indent(ctx, outbuf, indent_level);
+  }
+}
+
+static void
 put_delimiter(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type)
 {
   uint32_t level = CURR_LEVEL;
@@ -59,11 +91,7 @@ put_delimiter(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type)
         GRN_TEXT_PUTC(ctx, outbuf, ' ');
       }
     } else {
-      GRN_TEXT_PUTC(ctx, outbuf, ',');
-      if (ctx->impl->output.is_pretty) {
-        GRN_TEXT_PUTC(ctx, outbuf, '\n');
-        indent(ctx, outbuf, DEPTH + 1);
-      }
+      json_element_end(ctx, outbuf, DEPTH + 1);
     }
     // if (DEPTH == 1 && ((level & 3) != 3)) { GRN_TEXT_PUTC(ctx, outbuf, '\n'); }
     break;
@@ -1861,8 +1889,7 @@ grn_output_envelope_json(grn_ctx *ctx,
                          const char *file,
                          int line)
 {
-  int indent_level = 0;
-  grn_bool is_pretty = ctx->impl->output.is_pretty;
+  size_t indent_level = 0;
   grn_obj *expr;
   grn_obj *jsonp_func = NULL;
 
@@ -1877,154 +1904,68 @@ grn_output_envelope_json(grn_ctx *ctx,
     GRN_TEXT_PUTC(ctx, head, '(');
   }
 
-  GRN_TEXT_PUTC(ctx, head, '[');
-  if (is_pretty) {
-    GRN_TEXT_PUTC(ctx, head, '\n');
-    indent_level++;
-    indent(ctx, head, indent_level);
-  }
-
-  GRN_TEXT_PUTC(ctx, head, '[');
-  if (is_pretty) {
-    GRN_TEXT_PUTC(ctx, head, '\n');
-    indent_level++;
-    indent(ctx, head, indent_level);
-  }
-
-  grn_text_itoa(ctx, head, rc);
-  GRN_TEXT_PUTC(ctx, head, ',');
-  if (is_pretty) {
-    GRN_TEXT_PUTC(ctx, head, '\n');
-    indent(ctx, head, indent_level);
-  }
-
-  grn_text_ftoa(ctx, head, started);
-  GRN_TEXT_PUTC(ctx, head, ',');
-  if (is_pretty) {
-    GRN_TEXT_PUTC(ctx, head, '\n');
-    indent(ctx, head, indent_level);
-  }
-
-  grn_text_ftoa(ctx, head, elapsed);
-
-  if (rc != GRN_SUCCESS) {
-    GRN_TEXT_PUTC(ctx, head, ',');
-    if (is_pretty) {
-      GRN_TEXT_PUTC(ctx, head, '\n');
-      indent(ctx, head, indent_level);
-    }
-
-    grn_text_esc(ctx, head, ctx->errbuf, strlen(ctx->errbuf));
-    if (ctx->errfunc && ctx->errfile) {
-      grn_obj *command;
+  json_array_open(ctx, head, &indent_level);
+  {
+    json_array_open(ctx, head, &indent_level);
+    {
+      grn_text_itoa(ctx, head, rc);
 
-      GRN_TEXT_PUTC(ctx, head, ',');
-      if (is_pretty) {
-        GRN_TEXT_PUTC(ctx, head, '\n');
-        indent(ctx, head, indent_level);
-      }
+      json_element_end(ctx, head, indent_level);
+      grn_text_ftoa(ctx, head, started);
 
-      GRN_TEXT_PUTC(ctx, head, '[');
-      if (is_pretty) {
-        GRN_TEXT_PUTC(ctx, head, '\n');
-        indent_level++;
-        indent(ctx, head, indent_level);
-      }
+      json_element_end(ctx, head, indent_level);
+      grn_text_ftoa(ctx, head, elapsed);
 
-      GRN_TEXT_PUTC(ctx, head, '[');
-      if (is_pretty) {
-        GRN_TEXT_PUTC(ctx, head, '\n');
-        indent_level++;
-        indent(ctx, head, indent_level);
-      }
+      if (rc != GRN_SUCCESS) {
+        json_element_end(ctx, head, indent_level);
+        grn_text_esc(ctx, head, ctx->errbuf, strlen(ctx->errbuf));
 
-      grn_text_esc(ctx, head, ctx->errfunc, strlen(ctx->errfunc));
-      GRN_TEXT_PUTC(ctx, head, ',');
-      if (is_pretty) {
-        GRN_TEXT_PUTC(ctx, head, '\n');
-        indent(ctx, head, indent_level);
-      }
+        if (ctx->errfunc && ctx->errfile) {
+          grn_obj *command;
 
-      grn_text_esc(ctx, head, ctx->errfile, strlen(ctx->errfile));
-      GRN_TEXT_PUTC(ctx, head, ',');
-      if (is_pretty) {
-        GRN_TEXT_PUTC(ctx, head, '\n');
-        indent(ctx, head, indent_level);
-      }
+          json_element_end(ctx, head, indent_level);
+          json_array_open(ctx, head, &indent_level);
+          {
+            json_array_open(ctx, head, &indent_level);
+            {
+              grn_text_esc(ctx, head, ctx->errfunc, strlen(ctx->errfunc));
 
-      grn_text_itoa(ctx, head, ctx->errline);
-      if (is_pretty) {
-        GRN_TEXT_PUTC(ctx, head, '\n');
-        indent_level--;
-        indent(ctx, head, indent_level);
-      }
-      GRN_TEXT_PUTC(ctx, head, ']');
-      if (file && (command = GRN_CTX_USER_DATA(ctx)->ptr)) {
-        GRN_TEXT_PUTC(ctx, head, ',');
-        if (is_pretty) {
-          GRN_TEXT_PUTC(ctx, head, '\n');
-          indent(ctx, head, indent_level);
-        }
+              json_element_end(ctx, head, indent_level);
+              grn_text_esc(ctx, head, ctx->errfile, strlen(ctx->errfile));
 
-        GRN_TEXT_PUTC(ctx, head, '[');
-        if (is_pretty) {
-          GRN_TEXT_PUTC(ctx, head, '\n');
-          indent_level++;
-          indent(ctx, head, indent_level);
-        }
+              json_element_end(ctx, head, indent_level);
+              grn_text_itoa(ctx, head, ctx->errline);
+            }
+            json_array_close(ctx, head, &indent_level);
 
-        grn_text_esc(ctx, head, file, strlen(file));
-        GRN_TEXT_PUTC(ctx, head, ',');
-        if (is_pretty) {
-          GRN_TEXT_PUTC(ctx, head, '\n');
-          indent(ctx, head, indent_level);
-        }
+            if (file && (command = GRN_CTX_USER_DATA(ctx)->ptr)) {
+              json_element_end(ctx, head, indent_level);
+              json_array_open(ctx, head, &indent_level);
+              {
+                grn_text_esc(ctx, head, file, strlen(file));
 
-        grn_text_itoa(ctx, head, line);
-        GRN_TEXT_PUTC(ctx, head, ',');
-        if (is_pretty) {
-          GRN_TEXT_PUTC(ctx, head, '\n');
-          indent(ctx, head, indent_level);
-        }
+                json_element_end(ctx, head, indent_level);
+                grn_text_itoa(ctx, head, line);
 
-        grn_text_esc(ctx, head, GRN_TEXT_VALUE(command), GRN_TEXT_LEN(command));
-        if (is_pretty) {
-          GRN_TEXT_PUTC(ctx, head, '\n');
-          indent_level--;
-          indent(ctx, head, indent_level);
+                json_element_end(ctx, head, indent_level);
+                grn_text_esc(ctx, head,
+                             GRN_TEXT_VALUE(command), GRN_TEXT_LEN(command));
+              }
+              json_array_close(ctx, head, &indent_level);
+            }
+          }
+          json_array_close(ctx, head, &indent_level);
         }
-        GRN_TEXT_PUTC(ctx, head, ']');
-      }
-
-      if (is_pretty) {
-        GRN_TEXT_PUTC(ctx, head, '\n');
-        indent_level--;
-        indent(ctx, head, indent_level);
       }
-      GRN_TEXT_PUTC(ctx, head, ']');
     }
+    json_array_close(ctx, head, &indent_level);
   }
-  if (is_pretty) {
-    GRN_TEXT_PUTC(ctx, head, '\n');
-    indent_level--;
-    indent(ctx, head, indent_level);
-  }
-  GRN_TEXT_PUTC(ctx, head, ']');
 
   if (GRN_TEXT_LEN(body)) {
-    GRN_TEXT_PUTC(ctx, head, ',');
-    if (is_pretty) {
-      GRN_TEXT_PUTC(ctx, head, '\n');
-      indent(ctx, head, indent_level);
-    }
+    json_element_end(ctx, head, indent_level);
   }
 
-  if (is_pretty) {
-    GRN_TEXT_PUTC(ctx, foot, '\n');
-    indent_level--;
-    indent(ctx, head, indent_level);
-  }
-  GRN_TEXT_PUTC(ctx, foot, ']');
+  json_array_close(ctx, foot, &indent_level);
   if (jsonp_func && GRN_TEXT_LEN(jsonp_func)) {
     GRN_TEXT_PUTS(ctx, foot, ");");
   }
-------------- next part --------------
HTML����������������������������...
下載 



More information about the Groonga-commit mailing list
Back to archive index