これが一度に存在したのなら、最新の検索で灘が見つかったので、それは抹消されたに違いありません。JavascriptからYAML出力のみにダンプする実装はたくさんあるようですが、ダンプとロードの両方をサポートする実装を見つけるのに問題があります。
誰かがそのようなことに取り組んでいますか...または単にこれには需要が低すぎますか?
これが一度に存在したのなら、最新の検索で灘が見つかったので、それは抹消されたに違いありません。JavascriptからYAML出力のみにダンプする実装はたくさんあるようですが、ダンプとロードの両方をサポートする実装を見つけるのに問題があります。
誰かがそのようなことに取り組んでいますか...または単にこれには需要が低すぎますか?
同じものを探していたところです。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
この質問を更新して、自分が取り組んだ別のソリューションを提供します: https://github.com/jeremyfa/yaml.js
これは、 Symfony YAML コンポーネント(YAML 1.2)の純粋な JavaScript ポートであり、ロードとダンプの両方をサポートします。お役に立てれば。
js-yaml のおそらく新しいバージョンは次のとおりです。
JSON が YAML 1.2 の適切なサブセットである限り、ダンプはサポートするがロードはサポートしない「多くの実装」がどこにあるのか、私にはわかりません。特に複雑なデータ構造の場合、YAML は特に人に優しくありません。私が見つけたリンクのほとんどは、node.js に依存する、および/またはパーサーのみを提供する JS-YAML の github フォークへのものです。
bitbucket 上の Jeremy Faivre のyaml.jsは、スタンドアロンの JavaScript で YAML のダンプとロードの両方を実装しています (関連するスタックオーバーフローの質問への回答から見つけました)。積極的に維持されていませんが、適度に複雑な YAML および/または JavaScript オブジェクトに対しては正常に機能するようです。
yaml-javascriptは、ダンパーとパーサーの両方のふりをします。したことがない。
このjavascript-yaml-parser/もあります
この質問を参照してください: JavaScript YAML パーサー、 Diogo Costa は次
のように述べています。 /