Add missing U to unicode keysym in symbols/us intl-unicode
[xorg/xkeyboard-config] / tests / ruby / find_fragments.rb
1 #!/usr/bin/ruby
2 #
3 # $Id$
4 # The script finds the fragments
5 #
6
7 require "xkbparser.rb"
8
9 baseDir = "../.."
10
11 symbolsDir = "#{baseDir}/symbols"
12 #symbolsDir = "."
13
14 parser = Parser.new
15
16 allSyms = parser.parse("#{symbolsDir}/inet")
17
18 everything = allSyms.merge
19
20 everything.filter(1)
21
22 #numCombinations = 1
23
24 #puts "everything:"
25
26 #everything.find_all do | symName, keycodes |
27 #puts "#{symName}, #{keycodes.length} mappings -> "
28 #  keycodes.find_all do | keycode, counter |
29 #    puts "  #{keycode} -> #{counter} occurences"
30 #  end
31 #  numCombinations *= (keycodes.length + 1)
32 #end
33
34 #puts "Total mappings: #{everything.length}/#{everything.full_length()}, #{numCombinations} combinations"
35 #
36
37 numCombinations = 0
38 allSyms.find_all do | symsName, symbols |
39  puts "n: #{symsName}"
40
41  # Counting only symbols which used more than once
42  numDupSymbols = symbols.keys.inject(0) do | rv, keycode |
43    c = everything.cardinality(keycode, symbols[keycode])
44    puts "#{keycode} -> #{symbols[keycode]}, #{c}"
45    (c > 0) ? rv : rv + 1
46  end
47
48  numCombinations += (1 << numDupSymbols)
49  puts "l: #{symbols.length} d: #{numDupSymbols} c: #{numCombinations}"
50 end
51
52 puts "numCombinations: #{numCombinations}"