Org ডকুমেন্টে একটি তালিকা বা ডেটা স্ট্রাকচার ঘুরিয়ে দিন


15

আমি এমন একটি প্যাকেজ লিখছি যা হেলিন, সামগ্রী এবং অন্যান্য কিছু বৈশিষ্ট্যের তালিকা ডাউলোড করে যা ব্যবহারকারীর কাছে প্রদর্শিত হবে। এই মুহুর্তের জন্য, কোনও org-modeবাফার এই শিরোনামগুলি প্রদর্শন করার ভাল উপায় বলে মনে হচ্ছে।

নীচে কীভাবে এই তালিকাটি কাঠামোগত হতে পারে তার একটি উদাহরণ দেওয়া আছে। এটি নিছক চিত্রণমূলক, আমি সহজেই এটিকে প্রয়োজনীয় হিসাবে অন্য কোনও কাঠামোতে রূপান্তর করতে পারি।

'(("One headline" "Some much longer content."
   (property1 . value)
   (property2 . value))
  ("Second headline" "More much longer content."
   (property1 . value)
   (property2 . value)))

এমন কোনও ফাংশন বা প্যাকেজ রয়েছে যা org-modeবাফারে এই জাতীয় তালিকা মুদ্রণ করে ?

এখানে কাঙ্ক্ষিত আউটপুট।

* One headline
  :PROPERTIES:
  :property1: value
  :property2: value
  :END:
Some much longer content.

* Second headline
  :PROPERTIES:
  :property1: value
  :property2: value
  :END:
More much longer content.

আমি ম্যানুয়ালি এটি করতে পারি, আমি কেবল ভাবছিলাম যে সেখানে কিছু আছে কিনা।


ওহ আমার, এটি খুব দরকারী হবে। +1 টি। আমি লক্ষ করব যে এমনকি অর্গ নিজেও তাই করে। দেখুন org-insert-drawer। (এটি হ'ল আমি কল্পনা করব যে যদি এই ধরণের রূপান্তরকারী উপস্থিত থাকে তবে এই ফাংশনটি nil
সেইটিকে

উত্তর:


17

এই কাজ হয় org-element, ভয়ঙ্কর এর (!) কাজ নিকোলাস Goaziou । আপনি যদি না জানেন org-elementএবং আপনি org- বিকাশের বিষয়ে যত্নশীল হন তবে এটি আপনার উচিত। এটি কেবলমাত্র কাজ করার জন্য দুর্দান্ত সরঞ্জামই নয়, এটি ক্রমশ শক্তিশালীও হচ্ছে org। সর্বাধিক লক্ষণীয় org-export( ox), তবে উদাহরণস্বরূপও কার্য করে org.el

বিন্দু ব্যবহারের অধীনে কোনও উপাদানটির "লিস্প উপস্থাপনা" পেতে org-element-at-pointবা org-element-context। বাফার ব্যবহারের উপস্থাপনা পেতে org-element-parse-buffer। এখানে সরাসরি প্রাসঙ্গিক না হলেও সচেতন হন org-element-map

একটি এর "পাতার মর্মর উপস্থাপনা" থেকে যেতে element, secondary stringবা parse treeফিরে "অর্গ সিনট্যাক্স প্রতিনিধিত্ব" ব্যবহার org-element-interpret-data। এই (শুধুমাত্র) উপায় একটি "অর্গ সিনট্যাক্স প্রতিনিধিত্ব" মধ্যে একটি "পাতার মর্মর উপস্থাপনা" চালু করতে। যদিও আপনি সম্ভবত এই উপস্থাপনাটি ম্যানুয়ালি লিখতে চাইবেন না। আপনার প্রথম শিরোনামটির এখানে একটি ছোট্ট উপস্থাপনা

(org-element-interpret-data
 '(headline (:title "One headline" :level 1)
            (property-drawer nil ((node-property (:key "property1" :value "value1"))
                                  (node-property (:key "property2" :value "value2"))))
            (#("Some much longer content."))))

যদি আপনি উভয় শিরোনাম যোগ করা আবশ্যক parse tree

(org-element-interpret-data
 '(org-data nil (headline (:title "One headline" :level 1)
                          (property-drawer nil ((node-property (:key "property1" :value "value1"))
                                                (node-property (:key "property2" :value "value2"))))
                          (#("Some much longer content.")))
            (headline (:title "Second headline" :level 1)
                          (property-drawer nil ((node-property (:key "property1" :value "value1"))
                                                (node-property (:key "property2" :value "value2"))))
                          (#("More much longer content.")))))

আপনি খুঁজে পেতে পারেন যে Thorsten Jolitz এর org-dpগ্রন্থাগার (যেমন প্রচেষ্টায় আপনি সাহায্য করবে Melpa উপর )।

গ্রন্থাগারটি org-dpস্থানীয় পর্যায়ে প্রোগ্রামিংয়ের জন্য বোঝানো হয়, অর্থাত্ বিন্দুযুক্ত পার্স করা উপাদান ব্যতীত কোনও (প্রাসঙ্গিক) তথ্য ছাড়াই। এটি স্থানীয় পর্যায়ে অর্গ পার্সার / ইন্টারপ্রেটার ফ্রেমওয়ার্কটি বৈশ্বিক স্তরে ব্যবহার করার মতো সুবিধাজনক হিসাবে তৈরি করার জন্য তৈরি করা হয়েছে ( org-element-parse-bufferউপলব্ধ একটি সম্পূর্ণ পার্স-ট্রি সহ উপলব্ধ)

থর্স্টেনের আরও একটি সম্পূর্ণ বিবরণ এখানে পাওয়া যাবে

আরও স্পষ্টতার gmane.emacs.orgmodeজন্য যথাযথ ফোরাম।


এটি দুর্দান্ত উত্তর, তবে org-dp org-عنصرের বাইরে কী নিয়ে আসে তা আমি বুঝতে পারি না।
লিন হেডলি

org-dpএকটি বিকল্প ইন্টারফেস। আফআর, এটি একটি "মৌলিক" দৃষ্টিকোণ থেকে org সিনট্যাক্স / ফর্ম্যাটে নথি তৈরি করতে লেখা হয়েছিল। অর্গ এলিমেন্টের লক্ষ্যটি অর্গের জন্য একটি পার্সার এবং একটি ওয়ার্কহর্স হ'ল। আমি ব্যক্তিগতভাবে org-elementএটির সাথে ঠিক আছি তবে বিকল্প ইন্টারফেস পাওয়া খুব ভাল।
রাসমাস

2

আমি এক প্রকারের স্পর্শকাতরভাবে এই বিষয়টি দেখেছি looked Org-protocol.el এ একবার দেখুন । এটি org- মোডের সাথে বান্ডিল হয়েছে। বিশেষত, org-প্রোটোকল-ডু-ক্যাপচার ফাংশনটি একটি তালিকাতে রূপান্তর করে, "অংশগুলি" (যা আপনার কাছে ইতিমধ্যে রয়েছে বলে মনে হয়), org- স্টোর-লিংক-প্রপস ফাংশনটি ব্যবহার করে org-মোড বৈশিষ্ট্যগুলিতে রূপান্তরিত করে এবং তারপর org- ক্যাপচারকে কল করে। এটি ধরে নিয়েছে যে আপনার কাছে%: লিঙ্কের মতো স্থানধারক সহ একটি ক্যাপচার টেম্পলেট রয়েছে। আপনি যা চান তার বৈশিষ্ট্যগুলি সংজ্ঞায়িত করতে পারেন।

সাইট এপিআই থেকে স্ক্র্যাপ শিরোনাম, লেখক, তারিখ, উত্স, ইত্যাদির মতো কিছু করেছি । যদি আপনি এই কোডটি সন্ধান করে শেষ করেন তবে ক্যাপচার-টেম্পলেটগুলিও দেখুন sure

আপনি যদি JSON ডেটা নিয়ে কাজ করছেন, json.el এবং / অথবা অনুরোধ.el দরকারী হতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.