مكتبة Javascript YAML النقية التي تدعم كلاً من التفريغ والتحميل؟[ينسخ]

StackOverflow https://stackoverflow.com/questions/428364

سؤال

هذا السؤال لديه بالفعل إجابة هنا:

هل يوجد مثل هذا الشيء ل يامل (الملقب ب يامل)?

إذا كان هذا موجودًا في وقت ما، فلا بد أنه تم طمسه لأن البحث الأخير لم يظهر أي شيء.يبدو أن هناك الكثير من التطبيقات التي أحمق من إخراج Javascript إلى YAML فقط، ولكن تواجه مشكلة في العثور على تطبيق يدعم كلاً من التفريغ والتحميل.

هل هناك من يعمل على مثل هذا...أم أن الطلب ببساطة منخفض جدًا بالنسبة لهذا الغرض.

هل كانت مفيدة؟

المحلول

ربما إصدار أحدث من js-yaml هنا:

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

نصائح أخرى

كنت أبحث فقط عن نفس الشيء، وهنا الأساسية محلل YAML القائم على جافا سكريبت كتب بواسطة تي جي هولوايشوك في أكثر من refactormycode.com.أنا أقوم بتكراره هنا للتأكد من عدم فقدانه، ويبدو أن رابط JsYaml الموجود على yaml.org معطل منذ فترة.لم تختبره بعد.

;(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) ويدعم التحميل والتفريغ.أتمنى أن يساعدك هذا.

لست متأكدًا من مكان العثور على "الكثير من التطبيقات" التي تدعم التفريغ وليس التحميل - إلى الحد الذي تكون فيه JSON مجموعة فرعية مناسبة من YAML 1.2، أعتقد أنه قد يكون هناك الكثير من هذه التطبيقات، ولكن هذه المجموعة الفرعية تعمل على YAML ليست صديقة للإنسان بشكل خاص، خاصة بالنسبة لهياكل البيانات المعقدة.معظم الروابط التي وجدتها هي لـ github forks لـ JS-YAML التي تعتمد علىnode.js و/أو توفر المحللين اللغويين فقط.

جيريمي فايفر yaml.js على bitbucket ينفذ كلاً من تفريغ وتحميل YAML في جافا سكريبت المستقل (لقد وجدته من الإجابة على سؤال Stackoverflow ذي الصلة).لا تتم صيانته بشكل نشط، ولكن يبدو أنه يعمل بشكل جيد مع كائنات YAML و/أو جافا سكريبت المعقدة إلى حد ما.

yaml-javascript يتظاهر بأنه شاحنة قلابة ومحلل.أبدا لم أحاول.

هناك أيضا هذا جافا سكريبت-yaml-محلل/

انظر هذا السؤال: محلل جافا سكريبت YAML, يقول ديوغو كوستا:
لم يلبي أي من موزعي جافا سكريبت YAML احتياجاتي، لذلك قمت بتطوير ما يلي:وهو متاح هنا: http://code.google.com/p/javascript-yaml-parser/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top