mirror of
				https://github.com/skishore/makemeahanzi.git
				synced 2025-10-31 10:56:39 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| function get_final_bridges(glyph, original_bridges) {
 | |
|   var set = {};
 | |
|   var result = original_bridges.concat(glyph.manual.bridges_added);
 | |
|   for (var i = 0; i < glyph.manual.bridges_removed.length; i++) {
 | |
|     var remove = glyph.manual.bridges_removed[i];
 | |
|     set[JSON.stringify(remove)] = true;
 | |
|     set[JSON.stringify([remove[1], remove[0]])] = true;
 | |
|   }
 | |
|   return result.filter(function(x) { return !set[JSON.stringify(x)]; });
 | |
| }
 | |
| 
 | |
| function migrate_manual_bridges(glyph) {
 | |
|   var render = get_glyph_render_data(glyph, glyph.manual.bridges);
 | |
|   glyph.manual.bridges = get_final_bridges(glyph, render.bridges);
 | |
|   var simulation = get_glyph_render_data(glyph, glyph.manual.bridges);
 | |
|   assert(_.isEqual(simulation.strokes, glyph.derived.strokes));
 | |
|   delete glyph.manual.bridges_added;
 | |
|   delete glyph.manual.bridges_removed;
 | |
|   return glyph;
 | |
| }
 | |
| 
 | |
| function run_manual_bridges_migration() {
 | |
|   var glyphs = Glyphs.find({'manual.verified': true}).fetch();
 | |
|   for (var i = 0; i < glyphs.length; i++) {
 | |
|     if (i > 0 && i % 100 === 0) {
 | |
|       console.log('Migrated ' + i + ' glyphs.');
 | |
|     }
 | |
|     assert(glyphs[i].manual.bridges_added !== undefined &&
 | |
|            glyphs[i].manual.bridges_removed !== undefined);
 | |
|     var glyph = migrate_manual_bridges(glyphs[i]);
 | |
|     Glyphs.upsert({name: glyph.name}, glyph);
 | |
|   }
 | |
| }
 | 
