2012-11-05 90 views
3

Org manual「屬性是與條目」「關聯的鍵值對。適當的key-value data structure可以將任何值存儲在一個值中,包括另一個關聯數組。但屬性似乎不能。組織模式嵌套屬性?

  • 我可以模擬嵌套屬性嗎?
  • 如果我不能,理論上應該如何優雅地實施?

嵌套屬性可以通過大量使用Property API爲無數特性啓用組織模式的許多可能性。想到的例子包括:鍵值數據庫,圖形數據庫,向條目添加複雜的語義元數據,語義網絡應用程序,甚至文本任務。

ID markersall posts of the thread)類似的想法是在2009年組織模式的郵件列表上討論ID標記的想法是相切關係到我的另一個從Org-mode: using special properties in the drawer推廣組織模式的屬性語法的願望。不幸的是,ID標記引入了更多的新語法,並且我希望在當前的組織模式能力中增量地嵌套數據存儲。

Babel可能是一個解決方案,但它需要使用編程語言,並可能會限制靈活性。只使用屬性API會更好。

+0

你真的需要爲屬性?如果你想採用數據庫方式,爲什麼你不使用命名錶,被org-babel代碼塊調用? –

回答

0

這就是你心裏有:

** subheading 
    :PROPERTIES: 
    :my-prop: (:property-1 red :property-2 (nested-prop . 5)) 
    :END:` 


#+BEGIN_SRC emacs-lisp 
    (defun get-my-prop-value (property) 
     (interactive) 
     (plist-get 
     (read (org-entry-get (point) "my-prop")) 
     property)) 
#+END_SRC 

#+RESULTS: 
: get-my-prop-value 



#+BEGIN_SRC emacs-lisp 
    (get-my-prop-value :property-2) 
#+END_SRC 

#+RESULTS: 
: (nested-prop . 5)