mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
#!/usr/bin/env python
 | 
						|
import sys
 | 
						|
import os
 | 
						|
import re
 | 
						|
import commands
 | 
						|
import subprocess
 | 
						|
import io
 | 
						|
 | 
						|
def fail(message):
 | 
						|
    print message
 | 
						|
    sys.exit(1)
 | 
						|
 | 
						|
# For simplicity and compactness, we pre-define the 
 | 
						|
# emoji code planes to ensure that all of the currently-used
 | 
						|
# emoji ranges within them are combined.
 | 
						|
big_ranges = [
 | 
						|
        (0x1F600,0x1F64F, ),
 | 
						|
        (0x1F300,0x1F5FF, ),
 | 
						|
        (0x1F680,0x1F6FF, ),
 | 
						|
        (0x2600,0x26FF,   ),
 | 
						|
        (0x2700,0x27BF,   ),
 | 
						|
        (0xFE00,0xFE0F,   ),
 | 
						|
        (0x1F900,0x1F9FF,  ),
 | 
						|
        (65024,65039,), 
 | 
						|
        (8400, 8447,)
 | 
						|
        ]
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    src_filename = "emoji-data.txt"
 | 
						|
    src_dir_path = os.path.dirname(__file__)
 | 
						|
    src_file_path = os.path.join(src_dir_path, src_filename)
 | 
						|
    print 'src_file_path', src_file_path
 | 
						|
    if not os.path.exists(src_file_path):
 | 
						|
        fail("Could not find input file")
 | 
						|
    
 | 
						|
    with io.open(src_file_path, "r", encoding="utf-8") as f:
 | 
						|
        text = f.read()
 | 
						|
    
 | 
						|
    lines = text.split('\n')
 | 
						|
    raw_ranges = []
 | 
						|
    for line in lines:
 | 
						|
        if '#' in line:
 | 
						|
            line = line[:line.index('#')].strip()
 | 
						|
        if ';' not in line:
 | 
						|
            continue
 | 
						|
        print 'line:', line
 | 
						|
        range_text = line[:line.index(';')]
 | 
						|
        print '\t:', range_text
 | 
						|
        if '..' in range_text:
 | 
						|
            range_start_hex_string, range_end_hex_string = range_text.split('..')
 | 
						|
        else:
 | 
						|
            range_start_hex_string = range_end_hex_string = range_text.strip()
 | 
						|
        range_start = int(range_start_hex_string.strip(), 16)
 | 
						|
        range_end = int(range_end_hex_string.strip(), 16)
 | 
						|
        print '\t', range_start, range_end
 | 
						|
        
 | 
						|
        raw_ranges.append((range_start, range_end,))
 | 
						|
        
 | 
						|
    raw_ranges += big_ranges
 | 
						|
        
 | 
						|
    raw_ranges.sort(key=lambda a:a[0])
 | 
						|
 | 
						|
 | 
						|
    new_ranges = []
 | 
						|
    for range_start, range_end in raw_ranges:
 | 
						|
        if len(new_ranges) > 0:
 | 
						|
            last_range = new_ranges[-1]
 | 
						|
            # print 'last_range', last_range
 | 
						|
            last_range_start, last_range_end = last_range
 | 
						|
            if range_start >= last_range_start and range_start <= last_range_end + 1:
 | 
						|
            # if last_range_end + 1 == range_start:
 | 
						|
                new_ranges = new_ranges[:-1]
 | 
						|
                print 'merging', last_range_start, last_range_end, 'and', range_start, range_end
 | 
						|
                new_ranges.append((last_range_start, max(range_end, last_range_end),))
 | 
						|
                continue
 | 
						|
 | 
						|
        new_ranges.append((range_start, range_end,))
 | 
						|
    
 | 
						|
    print
 | 
						|
    for range_start, range_end in new_ranges:
 | 
						|
        # print '0x%X...0x%X, // %d Emotions' % (range_start, range_end, (1 + range_end - range_start), )
 | 
						|
        print 'EmojiRange(rangeStart:0x%X, rangeEnd:0x%X),' % (range_start, range_end, )
 | 
						|
    print 'new_ranges:', len(new_ranges)
 | 
						|
    print
 | 
						|
    print 'Copy and paste the code above into DisplayableText.swift'
 | 
						|
    print 
 | 
						|
        
 | 
						|
        
 |