Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reading from YAML File in Javascript [duplicate]

I am trying to read parameters from a YAML file into Javascript. Is there any good library to do this?

I've tried these libraries: https://github.com/nodeca/js-yaml and http://code.google.com/p/javascript-yaml-parser/

but both libraries only have functions that parse YAML when it is given as a string, instead of parsing straight out of a .yml or .yaml file. Are there any parsers that read YAML from a file and convert them to JS objects?

like image 313
nsax91 Avatar asked Dec 09 '12 06:12

nsax91


People also ask

Can Javascript read YAML files?

If you want to parse it in web browser, you can load the yaml file you want to parse in script tag and read it's content using js code, which will provide you string result. And if you want to parse yaml in nodejs environment, you can read file directly and also got string.

What is YAML Safe_load?

Loading a YAML Document Safely Using safe_load() safe_load(stream) Parses the given and returns a Python object constructed from the first document in the stream. safe_load recognizes only standard YAML tags and cannot construct an arbitrary Python object.

What is the difference between YAML and JSON?

The design goal of JSON is to be as simple as possible and be universally usable. This has reduced the readability of the data, to some extent. In contrast, the design goal of YAML is to provide a good human-readable format and provide support for serializing arbitrary native data structures.

How can I read a YAML file online?

Use your YAML REST URL to visualize. Click on the URL button, Enter URL and Submit. Users can also view YAML data file by uploading the file. Online YAML Viewer works well on Windows, MAC, Linux, Chrome, Firefox, Edge, and Safari.


2 Answers

It seemed to be hard to find a good example of using js-yaml from a browser. Probably because they emphasize the use of the parser in node.js.

The parser is at https://github.com/nodeca/js-yaml. Use NPM to install it

npm install js-yaml

and grab the js-yaml.js file from the node_modules/js-yaml/bin directory.

Here is a quick, simple demo that loads a YAML file, uses js-yaml to parse it into objects, and then (for verification) it does a native JSON.stringify to convert the JSON into a string and finally uses jquery $.parseJSON to verify the resulting JSON.

(function () {
"use strict";
    $(document).ready(function () {
        $.get('/common/resources/LessonContentsLv01Ln01.yml')
        .done(function (data) {
          console.log('File load complete');
          console.log(jsyaml.load(data));
          var jsonString = JSON.stringify(data);
          console.log(jsonString);
          console.log($.parseJSON(jsonString));
      });
    });
}());

And the HTML

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Read YAML</title>
                 <script src="//code.jquery.com/jquery-2.1.0.js">
        </script><script src='/vendor/js/js-yaml.js'>
        </script><script src='/test/readYaml.js'>
    </script>
</head>
<body>
</body>
</html>

Github repository https://github.com/nodeca/js-yaml

like image 165
wolfstevent Avatar answered Oct 13 '22 09:10

wolfstevent


js-yaml does. I found this by Googling "node js yaml" because reading from files in JavaScript is done server side with node.js (or something like it), not from a browser.

The README for js-yaml begins

usage: js-yaml [-h] [-v] [-c] [-j] [-t] file

Positional arguments:

file File with YAML document(s)

That is pretty strong evidence that it does process YAML directly from files.

like image 39
Ray Toal Avatar answered Oct 13 '22 09:10

Ray Toal