emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[O] how the address@hidden& do you add a property to a plist?


From: Matt Price
Subject: [O] how the address@hidden& do you add a property to a plist?
Date: Sat, 18 Jul 2015 14:36:19 -0400

Hi,

I am continuing to work on my marking stuff; it's working really well, actually. 

I am currently importing a list of student names and emails from a csv file -- this is normally how I get the list of enrolled students.  I have modified the defauly settings from our Universities CSV export so I get these files in the form:

Student Name,Email
Student One, address@hidden
Student Two, address@hidden

I then parse this into a list, each element of which is itself a list ("Student One" "address@hidden"), etc. 

This is OK, but not very robust. I would like instead to set *properties*, in case the CSV file has some other ordering of fields.  So I've tried this:

(defun parse-plist-csv-file (file)
  (interactive
   (list (read-file-name "CSV file: ")))
  (let ((buf (find-file-noselect file))
        (result nil))
    (with-current-buffer buf
      (goto-char (point-min))
      (let ((header (split-string  (buffer-substring-no-properties
                                    (line-beginning-position) (line-end-position)) ","))
            )
        (while (not (eobp))
          (let ((line  (split-string (buffer-substring-no-properties
                                      (line-beginning-position) (line-end-position))))
                (count 0)
                (new-plist '()))
            (while (< count (length line))
              (setq plist-new (plist-put new-plist  '(nth count header) (nth count line)))
              (setq count (1+ count)))
            (push  new-plist result)
            (forward-line 1))))
      (reverse result))))

The line that's not working here is:

              (setq plist-new (plist-put new-plist  '(nth count header) (nth count line)))

which just inserts nil nil into 'new-plist. Obviously I'm making some elementary elsip mistake, but my elisp is too weak to figure it out.  Can you guys help?  thanks,
Matt

reply via email to

[Prev in Thread] Current Thread [Next in Thread]