Browse Source

Ch2 pp83-84: serializing to CSV.

Frederic G. MARAND 8 years ago
parent
commit
bc81aeb61c
2 changed files with 80 additions and 12 deletions
  1. 43 12
      .idea/workspace.xml
  2. 37 0
      ch2/ex4/ex4_tag_csv.go

+ 43 - 12
.idea/workspace.xml

@@ -2,8 +2,7 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="9abafb60-388a-48be-9795-06bc35f0e7db" name="Default" comment="">
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/ch2/ex3/ex3_tag_yaml.go" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/libraries/GOPATH__socialize_.xml" afterPath="$PROJECT_DIR$/.idea/libraries/GOPATH__socialize_.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/ch2/ex4/ex4_tag_csv.go" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
     </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
@@ -27,7 +26,7 @@
   <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file leaf-file-name="ex3_tag_yaml.go" pinned="false" current-in-tab="true">
+      <file leaf-file-name="ex3_tag_yaml.go" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/ch2/ex3/ex3_tag_yaml.go">
           <provider selected="true" editor-type-id="text-editor">
             <state relative-caret-position="140">
@@ -37,6 +36,16 @@
           </provider>
         </entry>
       </file>
+      <file leaf-file-name="ex4_tag_csv.go" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/ch2/ex4/ex4_tag_csv.go">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="349">
+              <caret line="25" column="51" lean-forward="false" selection-start-line="25" selection-start-column="51" selection-end-line="25" selection-end-column="51" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
     </leaf>
   </component>
   <component name="FileTemplateManagerImpl">
@@ -63,6 +72,7 @@
         <option value="$PROJECT_DIR$/ch2/ex1/ex1.go" />
         <option value="$PROJECT_DIR$/ch2/ex1/ex1_tag_json.go" />
         <option value="$PROJECT_DIR$/ch2/ex3/ex3_tag_yaml.go" />
+        <option value="$PROJECT_DIR$/ch2/ex4/ex4_tag_csv.go" />
       </list>
     </option>
   </component>
@@ -135,7 +145,25 @@
               <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
             </PATH_ELEMENT>
             <PATH_ELEMENT>
-              <option name="myItemId" value="ex3" />
+              <option name="myItemId" value="ex4" />
+              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="socialize" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="socialize" />
+              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="ch2" />
+              <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="ex2" />
               <option name="myItemType" value="com.jetbrains.php.projectView.PhpTreeStructureProvider$1" />
             </PATH_ELEMENT>
           </PATH>
@@ -290,7 +318,7 @@
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="9683000" />
+    <option name="totallyTimeSpent" value="10769000" />
   </component>
   <component name="ToolWindowManager">
     <frame x="0" y="23" width="1436" height="877" extended-state="6" />
@@ -332,13 +360,6 @@
     <watches-manager />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/ch1/ex6/ex6_headers.go">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="504">
-          <caret line="76" column="0" lean-forward="false" selection-start-line="76" selection-start-column="0" selection-end-line="76" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/ch2/db4.sql" />
     <entry file="file://$PROJECT_DIR$/ch2/ex1/db0.sql" />
     <entry file="file://$PROJECT_DIR$/ch2/db0.sql" />
@@ -425,6 +446,7 @@
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="200">
           <caret line="82" column="5" lean-forward="false" selection-start-line="82" selection-start-column="5" selection-end-line="82" selection-end-column="5" />
+          <folding />
         </state>
       </provider>
     </entry>
@@ -548,6 +570,7 @@
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="200">
           <caret line="82" column="5" lean-forward="false" selection-start-line="82" selection-start-column="5" selection-end-line="82" selection-end-column="5" />
+          <folding />
         </state>
       </provider>
     </entry>
@@ -589,5 +612,13 @@
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/ch2/ex4/ex4_tag_csv.go">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="349">
+          <caret line="25" column="51" lean-forward="false" selection-start-line="25" selection-start-column="51" selection-end-line="25" selection-end-column="51" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
   </component>
 </project>

+ 37 - 0
ch2/ex4/ex4_tag_csv.go

@@ -0,0 +1,37 @@
+package main
+
+import (
+	"fmt"
+	"net/http"
+	"encoding/csv"
+	"bytes"
+	"strconv"
+)
+
+type User struct {
+	Name  string
+	Email string
+	ID    int
+}
+
+func userRouter(w http.ResponseWriter, r *http.Request) {
+	w.Header().Add("Content-type", "text/plain")
+	ourUser := User{}
+	ourUser.Name = "Bill Smith"
+	ourUser.Email = "bill.smith@example.com"
+	ourUser.ID = 100
+
+	b := &bytes.Buffer{}
+	wr := csv.NewWriter(b)
+	wr.Write([]string{"username", "email", "id"})
+	wr.Write([]string{ourUser.Name, ourUser.Email, strconv.Itoa(ourUser.ID)})
+	wr.Flush()
+
+	fmt.Fprint(w, string(b.Bytes()))
+}
+
+func main() {
+	fmt.Println("Starting CSV server")
+	http.HandleFunc("/", userRouter)
+	http.ListenAndServe(":8080", nil)
+}