[RUBY] Différé avec JSON

J'ai écrit rspec en utilisant le matcher JSON, mais je ne savais pas ce qui était différent car il y avait de nombreux éléments de JSON.

a.rb


#!/usr/bin/env ruby

def main
  ARGF.each do |line|
    line.match(/expected (.*) to be JSON matching (.*)/) do |m|
      e, r = m[1, 2]
      r.gsub!(/(At=>)([^"](?:[^,]+|,[^]|,[^:])+)(,:)/) do
        "#{$1}\"#{$2}\"#{$3}"
      end
      r.gsub!(/(\(an instance of String\))/, "\"\\1\"")
      r = eval(r)
      puts e
      puts r.to_json
    end
  end
end

main
$ rspec aaa_spec.rb:xxx >! out
$ ./a.rb out | jq -s '.[0]' >! b
$ ./a.rb out | jq -s '.[1]' >! c
$ vimdiff b c

Je l'ai écrit comme ça, mais à la fin j'ai trouvé une rayure partielle pour identifier la cause.

Écrivons un article et faisons un service commémoratif.

Postscript

Ça a fini comme ça

$ perl -lne 'm/^\s+[+-]/ and do { s/^\s+-/e = {/; s/^\s+\+/r = {/; s/,$/}/; s/(At=>)([^"][^,]+)(, :)/\1"\2"\3/g; s/(=>)(\([^)]+\))(,)/\1"\2"\3/g; s/\(contain exactly /[/g and do { s/([}\]"\d])\)/\1]/g; s/ and /, /g;}; print};BEGIN{print"#!/usr/bin/env ruby\nrequire '"'"'json'"'"'\n"}END{print "puts e.to_json\nputs r.to_json"}'

Recommended Posts

Différé avec JSON
Importer JSON avec SolrJ
Validation de JSON avec le schéma JSON
Gérez JSON avec minimal-json
Formater JSON avec org.json
[Java] Communication JSON avec jackson
Gérez JSON sans effort avec le respone Json d'Alamofire
Appliquer le processus de correspondance d'expressions régulières avec JSON Sassert
Gérez d'énormes JSON avec Java Lambda
Comparaison JSON
Conversion de JSON en TSV et TSV en JSON avec Ruby
Créez une API JSON prenant en charge le cryptage RSA avec wicket
Rechercher dans JPQL des tables avec des colonnes de type JSON
JSON avec Java et Jackson Part 2 XSS mesures
Gérez le cross-domain JSON avec Play Framework