lib/rsync_config/parser/secrets_file.treetop
module RsyncConfig
grammar RsyncSecretsFile
rule start
lines
{
def to_hash
users = {}
crawl users
users
end
}
end
rule lines
line? (EOL+ lines)?
end
rule line
comment
/ user_record
/ whitespace+
end
rule comment
'#' [^\n]*
end
rule user_record
user:([^:]+) ':' password:([^\t\r\n\ ]+)
{
def action users
users[user_value] = password_value
end
def user_value
user.text_value
end
def password_value
password.text_value
end
}
end
rule whitespace
[ \t\r\n]
end
rule EOL
"\r\n" / "\n"
end
end
end