{"name":"csv_demo.nu","source":"$ `stdlib/core/string.nu`\n$ `stdlib/std/time.nu`\n$ `stdlib/ext/csv.nu`\n\n@ main → i {\n    : i t0 ( monotonic_ns )\n\n    ( nurl_print `Loading test_data.csv...\\n` )\n    : *CSVTable tbl ( csv_table_load `test_data.csv` )\n    ? == # i tbl 0 {\n        ( nurl_print `ERROR: failed to load test_data.csv\\n` )\n        ^ 1\n    } {}\n\n    ( nurl_print `Loaded in ` )\n    ( nurl_print ( nurl_str_int ( elapsed_ms_since t0 ) ) )\n    ( nurl_print `ms\\n` )\n\n    ( nurl_print `Rows: ` ) ( nurl_print ( nurl_str_int ( csv_table_n_rows tbl ) ) )\n    ( nurl_print `   Cols: ` ) ( nurl_print ( nurl_str_int ( csv_table_n_cols tbl ) ) )\n    ( nurl_print `\\n` )\n\n    : ?i date_col ( csv_table_col_index tbl `date` )\n    ?? date_col {\n        T col → {\n            ( nurl_print `'date' column index: ` )\n            ( nurl_print ( nurl_str_int col ) ) ( nurl_print `\\n` )\n        }\n        F → { ( nurl_print `'date' column not found\\n` ) }\n    }\n\n    : ?String first_date ( csv_table_get_by_name tbl 0 `date` )\n    ?? first_date {\n        T s → {\n            ( nurl_print `Row 0 date = ` ) ( nurl_print ( string_data s ) ) ( nurl_print `\\n` )\n            ( string_free s )\n        }\n        F → {}\n    }\n\n    ( nurl_print `\\nFinding first row with text_words = 'juliet golf india'...\\n` )\n    : ?i tw_col ( csv_table_col_index tbl `text_words` )\n    ?? tw_col {\n        T col → {\n            : i tf0 ( monotonic_ns )\n            : ?i hit ( csv_table_find_first tbl col `juliet golf india` )\n            : i el ( elapsed_ms_since tf0 )\n            ?? hit {\n                T idx → {\n                    ( nurl_print `Found at row ` )\n                    ( nurl_print ( nurl_str_int idx ) )\n                    ( nurl_print ` in ` ) ( nurl_print ( nurl_str_int el ) ) ( nurl_print `ms\\n` )\n                }\n                F → { ( nurl_print `Not found.\\n` ) }\n            }\n\n            : i tf1 ( monotonic_ns )\n            : ( Vec i ) all ( csv_table_find_all tbl col `juliet golf india` )\n            : i el2 ( elapsed_ms_since tf1 )\n            ( nurl_print `Total rows matching: ` )\n            ( nurl_print ( nurl_str_int ( vec_len [i] all ) ) )\n            ( nurl_print ` (` ) ( nurl_print ( nurl_str_int el2 ) ) ( nurl_print `ms)\\n` )\n            ( vec_free [i] all )\n        }\n        F → {}\n    }\n\n    ( nurl_print `\\nSorting by 'date' ascending...\\n` )\n    : i ts ( monotonic_ns )\n    ?? date_col {\n        T col → ( csv_table_sort_by_string tbl col T )\n        F → {}\n    }\n    ( nurl_print `Sorted in ` ) ( nurl_print ( nurl_str_int ( elapsed_ms_since ts ) ) ) ( nurl_print `ms\\n` )\n\n    : ?String new_first ( csv_table_get_by_name tbl 0 `date` )\n    ?? new_first {\n        T s → {\n            ( nurl_print `New row 0 date = ` ) ( nurl_print ( string_data s ) ) ( nurl_print `\\n` )\n            ( string_free s )\n        }\n        F → {}\n    }\n\n    ( nurl_print `\\nSelecting columns id,date,text_words...\\n` )\n    : ( Vec String ) cols ( vec_with_cap [String] 3 )\n    ( vec_push [String] cols ( string_from `id` ) )\n    ( vec_push [String] cols ( string_from `date` ) )\n    ( vec_push [String] cols ( string_from `text_words` ) )\n    : i tsel ( monotonic_ns )\n    : *CSVTable proj ( csv_table_select_cols tbl cols )\n    ( nurl_print `Selected ` ) ( nurl_print ( nurl_str_int ( csv_table_n_rows proj ) ) )\n    ( nurl_print ` rows in ` ) ( nurl_print ( nurl_str_int ( elapsed_ms_since tsel ) ) ) ( nurl_print `ms\\n` )\n\n    ( nurl_print `Writing csv_demo_output.csv...\\n` )\n    : i tw ( monotonic_ns )\n    : b ok ( csv_table_write proj `csv_demo_output.csv` ( csv_dialect_default ) )\n    ? ok {\n        ( nurl_print `Wrote in ` ) ( nurl_print ( nurl_str_int ( elapsed_ms_since tw ) ) ) ( nurl_print `ms\\n` )\n    } { ( nurl_print `Write failed.\\n` ) }\n\n    ( csv_table_free proj )\n    : ( @ v String ) sd \\ String s → v { ( string_free s ) }\n    ( vec_free_with [String] cols sd )\n    ( csv_table_free tbl )\n\n    ( nurl_print `\\nTotal time: ` ) ( nurl_print ( nurl_str_int ( elapsed_ms_since t0 ) ) ) ( nurl_print `ms\\n` )\n    ^ 0\n}\n","bytes":4045}