VIVO-75 Ruby scripts to help with good-enough translation.
One set will take an ontology file, extract the labels for Google translation, and create RDF for those translated labels. The other set does the same for a properties file.
This commit is contained in:
parent
2c49931672
commit
c3d7651c82
6 changed files with 575 additions and 0 deletions
|
@ -0,0 +1,80 @@
|
|||
#!/usr/bin/ruby
|
||||
=begin
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Some common routines used both by property_stripper and property_inserter
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
=end
|
||||
|
||||
class Warning
|
||||
attr_reader :line
|
||||
attr_reader :message
|
||||
|
||||
def initialize(line, message)
|
||||
@line = line
|
||||
@message = message
|
||||
end
|
||||
end
|
||||
|
||||
class Property
|
||||
attr_reader :line
|
||||
attr_reader :key
|
||||
attr_accessor :value
|
||||
|
||||
def initialize(line, key, value)
|
||||
@line = line
|
||||
@key = key
|
||||
@value = value
|
||||
end
|
||||
end
|
||||
|
||||
class PropertiesFile
|
||||
attr_reader :properties
|
||||
attr_reader :warnings
|
||||
|
||||
def join_continuation_lines(lines)
|
||||
(lines.size()-1).downto(0) do |i|
|
||||
if /(.*)\\$/.match(lines[i])
|
||||
lines[i] = $1 + lines[i+1].lstrip()
|
||||
lines[i+1] = ''
|
||||
end
|
||||
end
|
||||
return lines
|
||||
end
|
||||
|
||||
def read_properties(lines)
|
||||
ln = 0
|
||||
lines.each do |line|
|
||||
ln += 1
|
||||
line.strip!
|
||||
|
||||
# ignore blank lines, and lines starting with '#' or '!'.
|
||||
next if line.length == 0 || line[0] == ?# || line[0] == ?!
|
||||
|
||||
if line =~ /(.*?)\s*[=:]\s*(.*)/
|
||||
# key and value are separated by '=' or ':' and optional whitespace.
|
||||
key = $1.strip
|
||||
value = $2
|
||||
else
|
||||
# No '=' or ':' means that the value is empty.
|
||||
key = line;
|
||||
value = ''
|
||||
end
|
||||
|
||||
if dupe = @properties[key]
|
||||
@warnings << Warning.new(ln, "Key '#{key}' is duplicated on line #{dupe.line}")
|
||||
else
|
||||
@properties[key] = Property.new(ln, key, value)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def initialize(path)
|
||||
@properties = {}
|
||||
@warnings = []
|
||||
lines = IO.readlines(path)
|
||||
lines = join_continuation_lines(lines)
|
||||
read_properties(lines)
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue