Skip to content

Instantly share code, notes, and snippets.

@alesya-h
Created August 26, 2012 11:55
Show Gist options
  • Save alesya-h/3478050 to your computer and use it in GitHub Desktop.
Save alesya-h/3478050 to your computer and use it in GitHub Desktop.
vkpd.rb read as lisp
(PROGRAM
((COMMAND (@IDENT "require" (2 0))
(ARGS_ADD_BLOCK
((STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "net/http" (2 9)))))
FALSE))
(COMMAND (@IDENT "require" (3 0))
(ARGS_ADD_BLOCK
((STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "net/https" (3 9)))))
FALSE))
(COMMAND (@IDENT "require" (4 0))
(ARGS_ADD_BLOCK
((STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "cgi" (4 9))))) FALSE))
(COMMAND (@IDENT "require" (5 0))
(ARGS_ADD_BLOCK
((STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "yaml" (5 9))))) FALSE))
(COMMAND (@IDENT "require" (6 0))
(ARGS_ADD_BLOCK
((STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "json" (6 9))))) FALSE))
(ASSIGN (VAR_FIELD (@IDENT "method" (8 0)))
(STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "audio.search" (8 10)))))
(ASSIGN (VAR_FIELD (@IDENT "params" (9 0))) (HASH NIL))
(ASSIGN (VAR_FIELD (@IDENT "action_before" (10 0)))
(STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "mpc clear" (10 17)))))
(ASSIGN (VAR_FIELD (@IDENT "action_after" (11 0)))
(STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "mpc play" (11 17)))))
(ASSIGN
(AREF_FIELD (VAR_REF (@IDENT "params" (12 0)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "auto_complete" (12 8)))))
FALSE))
(STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "1" (12 27)))))
(IF (CALL (VAR_REF (@CONST "ARGV" (14 3))) :|.| (@IDENT "empty?" (14 8)))
((COMMAND_CALL (VAR_REF (@CONST "ARGV" (15 2))) :|.|
(@IDENT "push" (15 7))
(ARGS_ADD_BLOCK
((STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "-h" (15 13)))))
FALSE)))
NIL)
(DEF (@IDENT "config" (19 4)) (PARAMS NIL NIL NIL NIL NIL)
(BODYSTMT
((UNLESS
(COMMAND_CALL (VAR_REF (@CONST "File" (20 9))) :|.|
(@IDENT "exist?" (20 14))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT
(STRING_EMBEXPR
((AREF (VAR_REF (@CONST "ENV" (20 24)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "HOME" (20 29)))))
FALSE))))
(@TSTRING_CONTENT "/.config/vkpd.yaml" (20 36)))))
FALSE))
((COMMAND (@IDENT "puts" (21 4))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT
(@TSTRING_CONTENT
"Please authenticate. Start vkpd-auth.rb and point your browser to http://localhost.localdomain:4567/"
(21 10)))))
FALSE))
(COMMAND (@IDENT "exit" (22 4))
(ARGS_ADD_BLOCK ((@INT "1" (22 9))) FALSE)))
NIL)
(OPASSIGN (VAR_FIELD (@IVAR "@config" (24 2))) (@OP "||=" (24 10))
(COMMAND_CALL (VAR_REF (@CONST "YAML" (24 14))) :|.|
(@IDENT "load" (24 19))
(ARGS_ADD_BLOCK
((METHOD_ADD_ARG
(CALL (VAR_REF (@CONST "File" (24 24))) :|.| (@IDENT "read" (24 29)))
(ARG_PAREN
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT
(STRING_EMBEXPR
((AREF (VAR_REF (@CONST "ENV" (24 37)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "HOME" (24 42)))))
FALSE))))
(@TSTRING_CONTENT "/.config/vkpd.yaml" (24 49)))))
FALSE))))
FALSE))))
NIL NIL NIL))
(WHILE
(BINARY (CALL (VAR_REF (@CONST "ARGV" (27 6))) :|.| (@IDENT "size" (27 11)))
:> (@INT "0" (27 18)))
((ASSIGN (VAR_FIELD (@IDENT "current" (28 0)))
(CALL (VAR_REF (@CONST "ARGV" (28 10))) :|.| (@IDENT "shift" (28 15))))
(CASE (VAR_REF (@IDENT "current" (29 7)))
(WHEN
((STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "-h" (30 8))))
(STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "--help" (30 13)))))
((ASSIGN (VAR_FIELD (@IDENT "filename" (31 4)))
(BINARY
(CALL
(XSTRING_LITERAL
((@TSTRING_CONTENT "dirname " (31 16))
(STRING_EMBEXPR
((XSTRING_LITERAL
((@TSTRING_CONTENT "readlink -f " (31 27))
(STRING_EMBEXPR ((VAR_REF (@GVAR "$0" (31 41)))))))))))
:|.| (@IDENT "chomp" (31 48)))
:+
(STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "/README" (31 55))))))
(COMMAND (@IDENT "puts" (32 4))
(ARGS_ADD_BLOCK
((METHOD_ADD_ARG
(CALL (VAR_REF (@CONST "File" (32 9))) :|.|
(@IDENT "read" (32 14)))
(ARG_PAREN
(ARGS_ADD_BLOCK ((VAR_REF (@IDENT "filename" (32 19)))) FALSE))))
FALSE))
(COMMAND (@IDENT "exit" (33 4))
(ARGS_ADD_BLOCK ((@INT "0" (33 9))) FALSE)))
(WHEN
((STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "-d" (34 8))))
(STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "--debug" (34 14))))
(REGEXP_LITERAL ((@TSTRING_CONTENT "^--count=\\d+$" (34 25)))
(@REGEXP_END "/" (34 38))))
((ASSIGN (VAR_FIELD (@GVAR "$debug" (35 4)))
(VAR_REF (@KW "true" (35 14)))))
(WHEN
((STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "-c" (36 8))))
(STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "--count" (36 14))))
(REGEXP_LITERAL ((@TSTRING_CONTENT "^--count=\\d+$" (36 25)))
(@REGEXP_END "/" (36 38))))
((ASSIGN (VAR_FIELD (@IDENT "value" (37 4)))
(IFOP
(METHOD_ADD_ARG
(CALL (VAR_REF (@IDENT "current" (37 12))) :|.|
(@IDENT "include?" (37 20)))
(ARG_PAREN
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "=" (37 30)))))
FALSE)))
(AREF
(METHOD_ADD_ARG
(CALL (VAR_REF (@IDENT "current" (37 36))) :|.|
(@IDENT "match" (37 44)))
(ARG_PAREN
(ARGS_ADD_BLOCK
((REGEXP_LITERAL ((@TSTRING_CONTENT "=(.*)" (37 51)))
(@REGEXP_END "/" (37 56))))
FALSE)))
(ARGS_ADD_BLOCK ((@INT "1" (37 59))) FALSE))
(CALL (VAR_REF (@CONST "ARGV" (37 64))) :|.|
(@IDENT "shift" (37 69)))))
(ASSIGN
(AREF_FIELD (VAR_REF (@IDENT "params" (38 4)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "count" (38 12)))))
FALSE))
(VAR_REF (@IDENT "value" (38 23)))))
(WHEN
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "-o" (39 8))))
(STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "--offset" (39 14))))
(REGEXP_LITERAL ((@TSTRING_CONTENT "^--offset=\\d+$" (39 26)))
(@REGEXP_END "/" (39 40))))
((ASSIGN (VAR_FIELD (@IDENT "value" (40 4)))
(IFOP
(METHOD_ADD_ARG
(CALL (VAR_REF (@IDENT "current" (40 12))) :|.|
(@IDENT "include?" (40 20)))
(ARG_PAREN
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "=" (40 30)))))
FALSE)))
(AREF
(METHOD_ADD_ARG
(CALL (VAR_REF (@IDENT "current" (40 36))) :|.|
(@IDENT "match" (40 44)))
(ARG_PAREN
(ARGS_ADD_BLOCK
((REGEXP_LITERAL ((@TSTRING_CONTENT "=(.*)" (40 51)))
(@REGEXP_END "/" (40 56))))
FALSE)))
(ARGS_ADD_BLOCK ((@INT "1" (40 59))) FALSE))
(CALL (VAR_REF (@CONST "ARGV" (40 64))) :|.|
(@IDENT "shift" (40 69)))))
(ASSIGN
(AREF_FIELD (VAR_REF (@IDENT "params" (41 4)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "offset" (41 12)))))
FALSE))
(VAR_REF (@IDENT "value" (41 23)))))
(WHEN
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "-s" (42 8))))
(STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "--sort" (42 14))))
(REGEXP_LITERAL ((@TSTRING_CONTENT "^--sort=\\d+$" (42 24)))
(@REGEXP_END "/" (42 36))))
((ASSIGN (VAR_FIELD (@IDENT "value" (43 4)))
(IFOP
(METHOD_ADD_ARG
(CALL (VAR_REF (@IDENT "current" (43 12))) :|.|
(@IDENT "include?" (43 20)))
(ARG_PAREN
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "=" (43 30)))))
FALSE)))
(AREF
(METHOD_ADD_ARG
(CALL (VAR_REF (@IDENT "current" (43 36))) :|.|
(@IDENT "match" (43 44)))
(ARG_PAREN
(ARGS_ADD_BLOCK
((REGEXP_LITERAL ((@TSTRING_CONTENT "=(.*)" (43 51)))
(@REGEXP_END "/" (43 56))))
FALSE)))
(ARGS_ADD_BLOCK ((@INT "1" (43 59))) FALSE))
(CALL (VAR_REF (@CONST "ARGV" (43 64))) :|.|
(@IDENT "shift" (43 69)))))
(ASSIGN
(AREF_FIELD (VAR_REF (@IDENT "params" (44 4)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "sort" (44 12)))))
FALSE))
(VAR_REF (@IDENT "value" (44 21)))))
(WHEN
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "user" (45 8)))))
((ASSIGN (VAR_FIELD (@IDENT "method" (46 4)))
(STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "audio.get" (46 14)))))
(IF (BINARY
(UNARY :!
(CALL (VAR_REF (@CONST "ARGV" (47 8))) :|.|
(@IDENT "empty?" (47 13))))
:|and|
(METHOD_ADD_ARG
(CALL
(CALL (VAR_REF (@CONST "ARGV" (47 24))) :|.|
(@IDENT "first" (47 29)))
:|.| (@IDENT "match" (47 35)))
(ARG_PAREN
(ARGS_ADD_BLOCK
((REGEXP_LITERAL
((@TSTRING_CONTENT "^\\d+$" (47 42)))
(@REGEXP_END "/" (47 47))))
FALSE))))
((ASSIGN
(AREF_FIELD (VAR_REF (@IDENT "params" (48 6)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "uid" (48 14)))))
FALSE))
(CALL (VAR_REF (@CONST "ARGV" (48 22))) :|.|
(@IDENT "shift" (48 27)))))
(ELSE
((ASSIGN
(AREF_FIELD (VAR_REF (@IDENT "params" (50 6)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT
(@TSTRING_CONTENT "uid" (50 14)))))
FALSE))
(AREF (VCALL (@IDENT "config" (50 22)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT
(@TSTRING_CONTENT "user_id" (50 30)))))
FALSE)))))))
(WHEN
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "group" (52 8)))))
((ASSIGN (VAR_FIELD (@IDENT "method" (53 4)))
(STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "audio.get" (53 14)))))
(ASSIGN
(AREF_FIELD (VAR_REF (@IDENT "params" (54 4)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "gid" (54 12)))))
FALSE))
(CALL (VAR_REF (@CONST "ARGV" (54 20))) :|.|
(@IDENT "shift" (54 25)))))
(WHEN
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "add" (55 8)))))
((ASSIGN (VAR_FIELD (@IDENT "action_before" (56 4)))
(STRING_LITERAL (STRING_CONTENT)))
(ASSIGN (VAR_FIELD (@IDENT "action_after" (57 4)))
(STRING_LITERAL (STRING_CONTENT))))
(WHEN
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "-nf" (58 8))))
(STRING_LITERAL
(STRING_CONTENT
(@TSTRING_CONTENT "--no-fix" (58 14))))
(STRING_LITERAL
(STRING_CONTENT
(@TSTRING_CONTENT "--exact" (58 26)))))
((ASSIGN
(AREF_FIELD (VAR_REF (@IDENT "params" (59 4)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT
(@TSTRING_CONTENT "auto_complete" (59 12)))))
FALSE))
(STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "0" (59 31))))))
(WHEN
((STRING_LITERAL
(STRING_CONTENT
(@TSTRING_CONTENT "play" (60 8)))))
((VOID_STMT))
(ELSE
((ASSIGN
(AREF_FIELD (VAR_REF (@IDENT "params" (63 4)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT
(@TSTRING_CONTENT "q" (63 12)))))
FALSE))
(METHOD_ADD_ARG
(CALL
(METHOD_ADD_ARG
(CALL (VAR_REF (@CONST "ARGV" (63 16))) :|.|
(@IDENT "unshift" (63 21)))
(ARG_PAREN
(ARGS_ADD_BLOCK
((VAR_REF (@IDENT "current" (63 29))))
FALSE)))
:|.| (@IDENT "join" (63 38)))
(ARG_PAREN
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT
(@TSTRING_CONTENT " " (63 44)))))
FALSE))))
(CALL (VAR_REF (@CONST "ARGV" (64 4))) :|.|
(@IDENT "clear" (64 9))))))))))))))))))
(DEF (@IDENT "run" (68 4))
(PAREN (PARAMS NIL NIL (REST_PARAM (@IDENT "args" (68 9))) NIL NIL))
(BODYSTMT
((IF (VAR_REF (@GVAR "$debug" (69 5)))
((METHOD_ADD_ARG (FCALL (@IDENT "puts" (70 4)))
(ARG_PAREN
(ARGS_ADD_BLOCK
(ARGS_ADD_STAR NIL (VAR_REF (@IDENT "args" (70 10)))) FALSE))))
(ELSE
((METHOD_ADD_ARG (FCALL (@IDENT "system" (72 4)))
(ARG_PAREN
(ARGS_ADD_BLOCK
(ARGS_ADD_STAR NIL (VAR_REF (@IDENT "args" (72 12))))
FALSE)))))))
NIL NIL NIL))
(DEF (@IDENT "hash_to_params" (76 4))
(PAREN (PARAMS ((@IDENT "hash" (76 19))) NIL NIL NIL NIL))
(BODYSTMT
((METHOD_ADD_ARG
(CALL
(METHOD_ADD_BLOCK
(CALL (VAR_REF (@IDENT "hash" (77 2))) :|.| (@IDENT "map" (77 7)))
(BRACE_BLOCK
(BLOCK_VAR
(PARAMS ((@IDENT "k" (77 12)) (@IDENT "v" (77 14))) NIL NIL NIL NIL)
NIL)
((STRING_LITERAL
(STRING_CONTENT (STRING_EMBEXPR ((VAR_REF (@IDENT "k" (77 20)))))
(@TSTRING_CONTENT "=" (77 22))
(STRING_EMBEXPR
((METHOD_ADD_ARG
(CALL (VAR_REF (@CONST "CGI" (77 25))) :|.|
(@IDENT "escape" (77 29)))
(ARG_PAREN
(ARGS_ADD_BLOCK
((CALL (VAR_REF (@IDENT "v" (77 36))) :|.|
(@IDENT "to_s" (77 38))))
FALSE))))))))))
:|.| (@IDENT "join" (77 47)))
(ARG_PAREN
(ARGS_ADD_BLOCK
((STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "&" (77 53)))))
FALSE))))
NIL NIL NIL))
(ASSIGN
(AREF_FIELD (VAR_REF (@IDENT "params" (80 0)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "access_token" (80 8)))))
FALSE))
(AREF (VCALL (@IDENT "config" (80 23)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "access_token" (80 31)))))
FALSE)))
(ASSIGN (VAR_FIELD (@IDENT "connection" (82 0)))
(METHOD_ADD_ARG
(CALL
(CONST_PATH_REF (VAR_REF (@CONST "Net" (82 11))) (@CONST "HTTP" (82 16)))
:|.| (@IDENT "new" (82 21)))
(ARG_PAREN
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "api.vk.com" (82 26))))
(@INT "443" (82 38)))
FALSE))))
(ASSIGN
(FIELD (VAR_REF (@IDENT "connection" (83 0))) :|.|
(@IDENT "use_ssl" (83 11)))
(VAR_REF (@KW "true" (83 19))))
(ASSIGN (VAR_FIELD (@IDENT "data" (84 0)))
(CALL
(METHOD_ADD_ARG
(CALL (VAR_REF (@IDENT "connection" (84 5))) :|.| (@IDENT "get" (84 16)))
(ARG_PAREN
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "/method/" (84 21))
(STRING_EMBEXPR ((VAR_REF (@IDENT "method" (84 31)))))
(@TSTRING_CONTENT "?" (84 38))
(STRING_EMBEXPR
((METHOD_ADD_ARG (FCALL (@IDENT "hash_to_params" (84 41)))
(ARG_PAREN
(ARGS_ADD_BLOCK ((VAR_REF (@IDENT "params" (84 56))))
FALSE))))))))
FALSE)))
:|.| (@IDENT "body" (84 67))))
(ASSIGN (VAR_FIELD (@IDENT "response" (85 0)))
(AREF
(METHOD_ADD_ARG
(CALL (VAR_REF (@CONST "JSON" (85 11))) :|.| (@IDENT "parse" (85 16)))
(ARG_PAREN (ARGS_ADD_BLOCK ((VAR_REF (@IDENT "data" (85 22)))) FALSE)))
(ARGS_ADD_BLOCK
((STRING_LITERAL (STRING_CONTENT (@TSTRING_CONTENT "response" (85 29)))))
FALSE)))
(IF (COMMAND_CALL (VAR_REF (@IDENT "method" (86 3))) :|.|
(@IDENT "match" (86 10))
(ARGS_ADD_BLOCK
((REGEXP_LITERAL ((@TSTRING_CONTENT "search" (86 17)))
(@REGEXP_END "/" (86 23))))
FALSE))
((CALL (VAR_REF (@IDENT "response" (87 2))) :|.|
(@IDENT "shift" (87 11))))
NIL)
(COMMAND (@IDENT "run" (89 0))
(ARGS_ADD_BLOCK ((VAR_REF (@IDENT "action_before" (89 4)))) FALSE))
(METHOD_ADD_BLOCK
(CALL (VAR_REF (@IDENT "response" (90 0))) :|.| (@IDENT "each" (90 9)))
(DO_BLOCK (BLOCK_VAR (PARAMS ((@IDENT "song" (90 18))) NIL NIL NIL NIL) NIL)
((COMMAND (@IDENT "run" (91 2))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "mpc add " (91 7))
(STRING_EMBEXPR
((AREF (VAR_REF (@IDENT "song" (91 17)))
(ARGS_ADD_BLOCK
((STRING_LITERAL
(STRING_CONTENT (@TSTRING_CONTENT "url" (91 23)))))
FALSE)))))))
FALSE)))))
(COMMAND (@IDENT "run" (93 0))
(ARGS_ADD_BLOCK ((VAR_REF (@IDENT "action_after" (93 4)))) FALSE))))
@alesya-h
Copy link
Author

It's abit unfair as I use ruby1.9's ripper to get ruby code as s-expression and just do some minor adjustments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment