32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/api/charset_parser.rb', line 32
def parse(file_path)
@charset = Charset.new(ResourceManager::charset_name_from_file_path(file_path))
raw = File.open(file_path,"rb:utf-8").read
doc = Glaeml::Parser.new.parse(raw)
if(doc.errors.any?)
@charset.errors = doc.errors
return @charset
end
doc.root_node.gpath("char").each { |char_element|
code = char_element.args[0].hex
names = char_element.args[1..-1].map{|cname| cname.strip }.reject{ |cname| cname.empty? }
@charset.add_char(char_element.line,code,names)
}
doc.root_node.gpath("virtual").each { |virtual_element|
names = virtual_element.args
reversed = false
default = nil
classes = []
virtual_element.gpath("class").each { |class_element|
vc = Charset::VirtualChar::VirtualClass.new
vc.target = class_element.args[0]
vc.triggers = class_element.args[1..-1].map{|cname| cname.strip }.reject{ |cname| cname.empty? }
classes << vc
}
virtual_element.gpath("reversed").each { |reversed_element|
reversed = true
}
virtual_element.gpath("default").each { |default_element|
default = default_element.args[0]
}
@charset.add_virtual_char(virtual_element.line,classes,names,reversed,default)
}
@charset.finalize
@charset
end
|