Voglio leggere la configurazione in YAML con il codice elisp. Ha cercato ma non ha trovato il parser pronto per l'uso in elisp. Mi sono perso qualcosa di utile?Qual è il miglior parser YAML in elisp?
risposta
Sei mesi più tardi, sembra che la risposta sia "non esiste un parser YAML elisp solido e facilmente disponibile."
Se davvero si vuole leggere un documento in YAML elisp e trasformarlo in qualcosa che elisp può interagire con, si sta andando ad avere per mettere in alcuni lavori nodoso. Lo EmacsWiki YAML page non ha molto per te, e il canonico YAML mode ha suggerimenti sintattici, ma nessun parser vero e proprio. Fortunatamente qualcuno ha implemented a YAML-parsing web-app che prende YAML e produce JSON o Python - potresti provare a dare un'occhiata a questo e-o usarlo per controllare qualsiasi parser YAML che potresti scrivere tu stesso.
Buona fortuna.
Addendum: vedere [questa risposta SO] (http://stackoverflow.com/a/2231327/244494) per alcuni codici di avvio quando si scrive il proprio parser ricorsivo-discendente in elisp. –
http://edward.oconnor.cx/2006/03/json.el potrebbe anche essere utile per il confronto e le idee. Ovviamente, YAML non è JSON, ma certamente hanno alcune somiglianze. – tripleee
e qualche mese dopo: lo volevo, quindi ecco come si fa con l'aiuto di pitone:
(defun yaml-parse()
"yaml to json to a hashmap of current buffer, with python.
There is no yaml parser in elisp.
You need pyYaml and some yaml datatypes like dates are not supported by json."
(interactive)
(let ((json-object-type 'hash-table))
(setq myyaml (json-read-from-string (shell-command-to-string (concat "python -c 'import sys, yaml, json; json.dump(yaml.load(sys.stdin), sys.stdout, indent=4)' < " (buffer-file-name))))))
;; code here
)
Si scopre l'yaml del buffer corrente in un hashmap elisp, con l'aiuto di json.el
.
Avete bisogno di pyyaml di python: pip install PyYaml
.
Intendo su un livello che è un hack che mi fa trasalire, ma su un altro, non posso farmi mancare di rispetto "lo strumento di cui ho bisogno non esiste, quindi lo scriverò da solo". Upvoted. –
Tre anni più tardi, abbiamo dynamic modules, e emacs-libyaml sembra piuttosto interessante. Usa il sistema di moduli dinamici per esporre le associazioni C di libyaml in Elisp. Mi aspetto che le prestazioni siano fantastiche, anche se non l'ho provato.
- 1. qual è il miglior parser html per java?
- 2. parser YAML rubino passando costruttore
- 3. Il miglior parser JSON per Qt?
- 4. Html Agility Pack è ancora il miglior parser .NET HTML?
- 5. Qual è il miglior blog di XNA?
- 6. Qual è il miglior modulo Drupal Survey
- 7. qual è il miglior linguaggio di programmazione per scrivere parser e compilatori?
- 8. Qual è il miglior editor per AutoHotkey?
- 9. Qual è il miglior motore 3D Actionscript3?
- 10. Qual è il miglior editor XLIFF gratuito?
- 11. Qual è il miglior objugatore di javascript?
- 12. Qual è il miglior editor python?
- 13. ifelse annidato() è il peggiore; Qual è il miglior?
- 14. Qual è il miglior sostituto per FlowDocument in Silverlight?
- 15. Qual è il miglior stack SIP Java in circolazione?
- 16. Qual è il miglior IDE per lo sviluppo in Tomcat?
- 17. Qual è il miglior metodo di derivazione in Python?
- 18. Qual è il parser XML più veloce in PHP?
- 19. Qual è il modo migliore per riutilizzare il parser Lua?
- 20. Qual è il miglior formato di file per il file di configurazione?
- 21. parser rss in .net
- 22. Qual è il miglior compilatore C++ standard (e spero gratuito)?
- 23. Qual è il miglior IDE per la programmazione DigitalMars D?
- 24. Qual è il miglior eBook per un principiante di Hibernate?
- 25. Qual è il miglior linguaggio di raschiatura dello schermo?
- 26. Qual è il miglior gestore di newsletter PHP aperto?
- 27. Qual è il miglior ORM con questi requisiti
- 28. Qual è il miglior schema SQL per questo progetto?
- 29. Qual è il miglior libro di bioinformatica per un informatico?
- 30. Qual è il miglior interprete o compilatore Scheme?
Non conosco la risposta, ma se non ce n'è una, puoi chiamare qualche altro parser per leggere lo yaml e far emettere una rappresentazione testuale testuale che puoi leggere con 'read'. – Tom
Grazie! È una buona idea. Forse posso provare 'pymacs'. – Vivodo
Non sono sicuro di cosa intendi: c'è una modalità yaml qui: https://github.com/yoshiki/yaml-mode - ma vuoi che un parser legga lo yaml e faccia cosa con esso? –