15

YAML(別名YAML )にはそのようなものがありますか?

これが一度に存在したのなら、最新の検索で灘が見つかったので、それは抹消されたに違いありません。JavascriptからYAML出力のみにダンプする実装はたくさんあるようですが、ダンプとロードの両方をサポートする実装を見つけるのに問題があります。

誰かがそのようなことに取り組んでいますか...または単にこれには需要が低すぎますか?

4

6 に答える 6

7

同じものを探していたところです。refactormycode.comでTj Holowaychukによって書かれた基本的なJavascript ベースの YAML パーサーを次に示します。失われないようにここに複製しています。yaml.org の JsYaml リンクがしばらく壊れているようです。まだテストしていません。

;(function(){
  YAML = {
    valueOf: function(token) {
      return eval('(' + token + ')')
    },

    tokenize: function(str) {
      return str.match(/(---|true|false|null|#(.*)|\[(.*?)\]|\{(.*?)\}|[\w\-]+:|-(.+)|\d+\.\d+|\d+|\n+)/g)
    },

    strip: function(str) {
      return str.replace(/^\s*|\s*$/, '')
    },

    parse: function(tokens) {
      var token, list = /^-(.*)/, key = /^([\w\-]+):/, stack = {}
      while (token = tokens.shift())
        if (token[0] == '#' || token == '---' || token == "\n") 
          continue
        else if (key.exec(token) && tokens[0] == "\n")
          stack[RegExp.$1] = this.parse(tokens)
        else if (key.exec(token))
          stack[RegExp.$1] = this.valueOf(tokens.shift())
        else if (list.exec(token))
          (stack.constructor == Array ?
            stack : (stack = [])).push(this.strip(RegExp.$1))
      return stack
    },

    eval: function(str) {
      return this.parse(this.tokenize(str))
    }
  }
})()

print(YAML.eval(readFile('config.yml')).toSource())




// config.yml

---
  # just a comment
  list: ['foo', 'bar']
  hash: { foo: "bar", n: 1 }
  lib:
    - lib/cart.js
    - lib/cart.foo.js
  specs:
    - spec/cart.spec.js
    - spec/cart.foo.spec.js
    # - Commented out
  environments:
    all:
      options:
        failuresOnly: true
        verbose: false
于 2009-11-16T22:54:59.760 に答える
6

この質問を更新して、自分が取り組んだ別のソリューションを提供します: https://github.com/jeremyfa/yaml.js

これは、 Symfony YAML コンポーネント(YAML 1.2)の純粋な JavaScript ポートであり、ロードとダンプの両方をサポートします。お役に立てれば。

于 2012-08-13T22:11:27.870 に答える
5

js-yaml のおそらく新しいバージョンは次のとおりです。

http://github.com/visionmedia/js-yaml

于 2010-02-24T22:57:12.967 に答える
4

JSON が YAML 1.2 の適切なサブセットである限り、ダンプはサポートするがロードはサポートしない「多くの実装」がどこにあるのか、私にはわかりません。特に複雑なデータ構造の場合、YAML は特に人に優しくありません。私が見つけたリンクのほとんどは、node.js に依存する、および/またはパーサーのみを提供する JS-YAML の github フォークへのものです。

bitbucket 上の Jeremy Faivre のyaml.jsは、スタンドアロンの JavaScript で YAML のダンプとロードの両方を実装しています (関連するスタックオーバーフローの質問への回答から見つけました)。積極的に維持されていませんが、適度に複雑な YAML および/または JavaScript オブジェクトに対しては正常に機能するようです。

于 2012-02-03T04:07:28.950 に答える
2

yaml-javascriptは、ダンパーとパーサーの両方のふりをします。したことがない。

于 2009-01-09T15:01:32.467 に答える
2

このjavascript-yaml-parser/もあります

この質問を参照してください: JavaScript YAML パーサー Diogo Costa は次
のように述べています。 /

于 2011-05-12T22:25:04.590 に答える