'# Server: ruby p2p.rb password server server-uri merge-servers' Comment.Single '\n' Text '# Sample: ruby p2p.rb foobar server druby://localhost:1337 druby://foo.bar:1337' Comment.Single '\n' Text '# Client: ruby p2p.rb password client server-uri download-pattern' Comment.Single '\n' Text '# Sample: ruby p2p.rb foobar client druby://localhost:1337 *.rb' Comment.Single '\n' Text 'require' Name.Builtin "'" Literal.String.Single 'drb' Literal.String.Single "'" Literal.String.Single ';' Punctuation 'F' Name ',' Punctuation 'D' Name ',' Punctuation 'C' Name ',' Punctuation 'P' Name ',' Punctuation 'M' Name ',' Punctuation 'U' Name ',' Punctuation '*' Operator 'O' Name '=' Operator 'File' Name.Constant ',' Punctuation 'Class' Name.Constant ',' Punctuation 'Dir' Name.Constant ',' Punctuation '*' Operator 'ARGV' Name.Constant ';' Punctuation 'def' Keyword ' ' Text 's' Name.Function '(' Punctuation 'p' Name.Builtin ')' Punctuation 'F' Name '.' Operator 'split' Name '(' Punctuation 'p' Name.Builtin '[' Operator '/' Literal.String.Regex '[^|].*' Literal.String.Regex '/' Literal.String.Regex ']' Operator ')' Punctuation '[' Operator '-' Operator '1' Literal.Number.Integer '\n' Text ']' Operator 'end' Keyword ';' Punctuation 'def' Keyword ' ' Text 'c' Name.Function '(' Punctuation 'u' Name ')' Punctuation ';' Punctuation 'DRbObject' Name.Constant '.' Operator 'new' Name '(' Punctuation '(' Punctuation ')' Punctuation ',' Punctuation 'u' Name ')' Punctuation 'end' Keyword ';' Punctuation 'def' Keyword ' ' Text 'x' Name.Function '(' Punctuation 'u' Name ')' Punctuation '[' Operator 'P' Name ',' Punctuation 'u' Name ']' Operator '.' Operator 'hash' Name ';' Punctuation 'end' Keyword ';' Punctuation 'M' Name '==' Operator '"' Literal.String.Double 'client' Literal.String.Double '"' Literal.String.Double '&&' Operator 'c' Name '(' Punctuation 'U' Name ')' Punctuation '.' Operator 'f' Name '(' Punctuation '\n' Text 'x' Name '(' Punctuation 'U' Name ')' Punctuation ')' Punctuation '.' Operator 'each' Name '{' Punctuation '|' Operator 'n' Name '|' Operator 'p' Name.Builtin ',' Punctuation 'c' Name '=' Operator 'x' Name '(' Punctuation 'n' Name ')' Punctuation ',' Punctuation 'c' Name '(' Punctuation 'n' Name ')' Punctuation ';' Punctuation '(' Punctuation 'c' Name '.' Operator 'f' Name '(' Punctuation 'p' Name.Builtin ',' Punctuation 'O' Name '[' Operator '0' Literal.Number.Integer ']' Operator ',' Punctuation '0' Literal.Number.Integer ')' Punctuation '.' Operator 'map' Name '{' Punctuation '|' Operator 'f' Name '|' Operator 's' Name ' ' Text 'f' Name '}' Punctuation '-' Operator 'D' Name '[' Operator '"' Literal.String.Double '*' Literal.String.Double '"' Literal.String.Double ']' Operator ')' Punctuation '.' Operator 'each' Name '{' Punctuation '|' Operator 'f' Name '|' Operator 'F' Name '.' Operator 'open' Name '(' Punctuation 'f' Name ',' Punctuation '\n' Text '"' Literal.String.Double 'w' Literal.String.Double '"' Literal.String.Double ')' Punctuation '{' Punctuation '|' Operator 'o' Name '|' Operator 'o' Name '<<' Operator 'c' Name '.' Operator 'f' Name '(' Punctuation 'p' Name.Builtin ',' Punctuation 'f' Name ',' Punctuation '1' Literal.Number.Integer ')' Punctuation '}' Punctuation '}' Punctuation '}' Punctuation '||' Operator '(' Punctuation 'DRb' Name.Constant '.' Operator 'start_service' Name ' ' Text 'U' Name ',' Punctuation 'C' Name '.' Operator 'new' Name '{' Punctuation 'def' Keyword ' ' Text 'f' Name.Function '(' Punctuation 'c' Name ',' Punctuation 'a' Name '=' Operator '[' Operator ']' Operator ',' Punctuation 't' Name '=' Operator '2' Literal.Number.Integer ')' Punctuation 'c' Name '==' Operator 'x' Name '(' Punctuation 'U' Name ')' Punctuation '&&' Operator '(' Punctuation '\n' Text 't' Name '==' Operator '0' Literal.Number.Integer '&&' Operator 'D' Name '[' Operator 's' Name '(' Punctuation 'a' Name ')' Punctuation ']' Operator '||' Operator 't' Name '==' Operator '1' Literal.Number.Integer '&&' Operator 'F' Name '.' Operator 'read' Name '(' Punctuation 's' Name '(' Punctuation 'a' Name ')' Punctuation ')' Punctuation '||' Operator 'p' Name.Builtin '(' Punctuation 'a' Name ')' Punctuation ')' Punctuation 'end' Keyword ';' Punctuation 'def' Keyword ' ' Text 'y' Name.Function '(' Punctuation ')' Punctuation '(' Punctuation 'p' Name.Builtin '(' Punctuation 'U' Name ')' Punctuation '+' Operator 'p' Name.Builtin ')' Punctuation '.' Operator 'each' Name '{' Punctuation '|' Operator 'u' Name '|' Operator 'c' Name '(' Punctuation 'u' Name ')' Punctuation '.' Operator 'f' Name '(' Punctuation 'x' Name '(' Punctuation 'u' Name ')' Punctuation ',' Punctuation '\n' Text 'p' Name.Builtin '(' Punctuation 'U' Name ')' Punctuation ')' Punctuation 'rescue' Keyword '(' Punctuation ')' Punctuation '}' Punctuation ';' Punctuation 'self' Name.Builtin ';' Punctuation 'end' Keyword ';' Punctuation 'private' Keyword.Pseudo ';' Punctuation 'def' Keyword ' ' Text 'p' Name.Function '(' Punctuation 'x' Name '=' Operator '[' Operator ']' Operator ')' Punctuation ';' Punctuation 'O' Name '.' Operator 'push' Name '(' Punctuation '*' Operator 'x' Name ')' Punctuation '.' Operator 'uniq!' Name ';' Punctuation 'O' Name ';' Punctuation 'end' Keyword '}' Punctuation '.' Operator 'new' Name '.' Operator 'y' Name ';' Punctuation 'sleep' Name.Builtin ')' Punctuation '\n' Text