示例#1
0
 db: function(verbose) {
   if (verbose) {
     return t.reader('json-verbose').read(
       t.writer('json-verbose', writer.options).write(attendees)
     );
   } else {
     return JSON.parse(
       t.writer('json', writer.options).write(attendees)
     );
   }
 }
示例#2
0
var getRawBody = require('raw-body');
var t = require('transit-js');

var Attendee = function(name, email) {
  this.name = name;
  this.email = email;
};

var AttendeeWriteHandler = t.makeWriteHandler({
  tag: function() { return 'att'; },
  rep: function(v) { return t.map([t.keyword('name'), v.name,
                            t.keyword('email'), v.email]); }
});
var writer = t.writer('json', {
  handlers: t.map([
     Attendee, AttendeeWriteHandler
  ])
});

var reader = t.reader('json', {
  handlers: {
    'att': function (rep) { return new Attendee(rep.get(t.keyword('name')),
                                        rep.get(t.keyword('email'))); }
  }
});

var attendees = [
  new Attendee('Filip Zrůst', t.uri('mailto:frzng@me.com')),
  new Attendee('Stojan Jakotyč', t.uri('mailto:sj@example.com'))
];
示例#3
0
var generateData = function() {
  return {
    rows: Immutable.Range(1, Infinity).take(numRows).reduce(function(row) {
      row.push({
        cells: Immutable.Range(100, Infinity).take(numColls).reduce(function(cell, n) {
          cell.push(n);
          return cell;
        }, [])
      });
      return row;
    }, [])
  };
};

var r = transit.reader('json'),
    w = transit.writer('json');

var data = {};

var suite = new Benchmark.Suite;

suite.add('Transit to Immutable', {
  'defer': true,
  'onStart': function() {
    return data = w.write(generateData());
  },
  'fn': function(deferred) {
    var _data = reader.read(data);
    return deferred.resolve();
  }
}).add('JSON to Transit Bridge to Immutable', {
示例#4
0
function createWriter(recordMap, predicate) {
  function mapSerializer(m) {
    var i = 0;
    if (predicate) {
      m = m.filter(predicate);
    }
    var a = new Array(2 * m.size);
    m.forEach(function(v, k) {
      a[i++] = k;
      a[i++] = v;
    });
    return a;
  }

  var handlers = transit.map([
    Immutable.Map, transit.makeWriteHandler({
      tag: function() {
        return 'iM';
      },
      rep: mapSerializer
    }),
    Immutable.OrderedMap, transit.makeWriteHandler({
      tag: function() {
        return 'iOM';
      },
      rep: mapSerializer
    }),
    Immutable.List, transit.makeWriteHandler({
      tag: function() {
        return "iL";
      },
      rep: function(v) {
        if (predicate) {
          v = v.filter(predicate);
        }
        return v.toArray();
      }
    }),
    Immutable.Set, transit.makeWriteHandler({
      tag: function() {
        return "iS";
      },
      rep: function(v) {
        if (predicate) {
          v = v.filter(predicate);
        }
        return v.toArray();
      }
    }),
    Immutable.OrderedSet, transit.makeWriteHandler({
      tag: function() {
        return "iOS";
      },
      rep: function(v) {
        if (predicate) {
          v = v.filter(predicate);
        }
        return v.toArray();
      }
    }),
    Function, transit.makeWriteHandler({
      tag: function() {
        return '_';
      },
      rep: function() {
        return null;
      }
    }),
    "default", transit.makeWriteHandler({
      tag: function() {
        return 'iM';
      },
      rep: function(m) {
        if (!('toMap' in m)) {
          var e = "Error serializing unrecognized object " + m.toString();
          throw new Error(e);
        }
        return mapSerializer(m.toMap());
      }
    })
  ]);

  Object.keys(recordMap).forEach(function(name) {
    handlers.set(recordMap[name], makeRecordHandler(name, predicate));
  });

  return transit.writer('json', {
    handlers: handlers
  });
}
示例#5
0
                },
                finalize(ret, node) {
                    return ret;
                },
                fromArray(arr, node) {
                    return arr;
                }
            },
            mapBuilder: {
                init(node) {
                    return {};
                },
                add(ret, key, val, node) {
                    ret[key] = val;
                    return ret;
                },
                finalize(ret, node) {
                    return ret;
                }
            }
        });
        return decoder;
    },


    createEncoder(options) {
        const encoder = transit.writer('json');
        return encoder;
    }
};