2012-11-05 58 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)