(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:num_files) op:Equal rhs:{(10)} spids:[125])] spids: [125] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:site) op: Equal rhs: {(DQ (www.pixelbeat.org))} spids: [128] ) ] spids: [128] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:author) op: Equal rhs: {(DQ ('P@draigBrady.com (P\xc3\xa1draig Brady)'))} spids: [133] ) ] spids: [133] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:suggested_update_freq) op: Equal rhs: {(1440)} spids: [138] ) ] spids: [138] ) (C {(Lit_Other ':')} { (BracedVarSub token: <VSub_Name TITLE> suffix_op: (StringUnary op_id:VTest_Equals arg_word:{($ VSub_Name '$site')}) spids: [147 151] ) } ) (C {(Lit_Other ':')} { (BracedVarSub token: <VSub_Name DESCRIPTION> suffix_op: (StringUnary op_id: VTest_Equals arg_word: {(DQ ('latest from ') ($ VSub_Name '$site'))} ) spids: [155 162] ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:include_re) op: Equal rhs: {(SQ <'(^|/)[.].+|(^|/)[^.]+$|[.](c|cpp|py|sh|rc|tips|fortune|html)$'>)} spids: [168] ) ] spids: [168] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:exclude_re) op: Equal rhs: { (SQ < '(\\.git/|priv/|tmp/|.htaccess|xvpics|timeline\\.html|modified\\.html|head\\.html|header\\.html|footer\\.html|footer-home\\.html|adds\\.html|last\\.html|fslint/(NEWS\\.html|md5sum)|README)' > ) } spids: [177] ) ] spids: [177] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:default_files) op: Equal rhs: {(DQ ('index.html index.shtml index.php'))} spids: [186] ) ] spids: [186] ) (ForEach iter_name: file iter_words: [{($ VSub_Name '$default_files')}] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:replace_default_files) op: Equal rhs: { (DQ ($ VSub_Name '$replace_default_files') ('; s/') (EscapedLiteralPart token:<Lit_EscapedChar '\\('>) ('.*') (EscapedLiteralPart token:<Lit_EscapedChar '\\)'>) ($ VSub_Name '$file') (Lit_Other '$') (/) (EscapedLiteralPart token:<Lit_EscapedChar '\\1'>) ('/;t') ) } spids: [208] ) ] spids: [208] ) ] spids: [205 222] ) spids: [201 203] ) (C {(echo)} { (SQ <'<?xml version="1.0" encoding="utf-8"?>\n'> <'<?xml-stylesheet type="text/css" href="rss2.css" ?>\n'> <'\n'> <'<rss version="2.0">\n'> <'<channel>'> ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:time) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(date)} {(--rfc-2822)})]) left_token: <Left_Backtick '`'> spids: [237 241] ) } spids: [236] ) ] spids: [236] ) (C {(echo)} { (DQ ('\n') ('<title>') ($ VSub_Name '$TITLE') ('</title>\n') ('<ttl>') ($ VSub_Name '$suggested_update_freq') ('</ttl>\n') ('<link>http://') ($ VSub_Name '$site') (/) ($ VSub_Number '$1') ('</link>\n') ('<generator>http://www.pixelbeat.org/scripts/bashfeed</generator>\n') ('<description>') ($ VSub_Name '$DESCRIPTION') ('</description>\n') ('<managingEditor>') ($ VSub_Name '$author') ('</managingEditor>\n') ('<lastBuildDate>') ($ VSub_Name '$time') ('</lastBuildDate>\n') ('<language>') (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name '$LANG')}) (C {(sed)} {(SQ <'s/\\(..\\)_.*/\\1/'>)}) ] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [270 282] ) ('</language>\n') ) } ) (FuncDef name: xml_unescaped body: (BraceGroup children: [ (Sentence child: (Pipeline children: [ (C {(sed)} {(SQ <'s/&//g; s/&[lg]t;//g; s/"//g'>)}) (C {(grep)} {(-q)} {(DQ ('[&<>]'))}) ] negated: False ) terminator: <Op_Semi ';'> ) ] spids: [291] ) spids: [287 290] ) (AndOr children: [ (Pipeline children: [ (C {(find)} {($ VSub_Number '$1')} {(-type)} {(f)} {(-printf)} { (DQ ('%p') (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) ('%T@') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } ) (C {(sed)} {(SQ <'s/^\\.\\///'>)}) (C {(sort)} {(-k2) (Lit_Comma ',') (2nr)}) (C {(cut)} {(-f1)}) (C {(grep)} {(-E)} {(DQ ($ VSub_Name '$include_re'))}) (C {(grep)} {(-Ev)} {(DQ ($ VSub_Name '$exclude_re'))}) (While cond: [(Sentence child:(C {(read)} {(file)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(head)} {(DQ ($ VSub_Name '$file'))}) (C {(grep)} {(-Fiq)} {(SQ <'<!--Exclude from bashfeed-->'>)}) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ($ VSub_Name '$file'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:i) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:i) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [419 424] ) } spids: [418] ) ] spids: [418] ) (AndOr children: [ (C {(Lit_Other '[')} {($ VSub_Name '$i')} {(-eq)} {($ VSub_Name '$num_files')} {(Lit_Other ']')} ) (ControlFlow token: <ControlFlow_Break break> ) ] op_id: Op_DAmp ) ] spids: [-1 408] ) ] spids: [-1 442] ) ] spids: [384 444] ) ) (While cond: [(Sentence child:(C {(read)} {(file)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pubDate) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(date)} {(--reference) (Lit_Other '=') (DQ ($ VSub_Name '$file'))} {(--rfc-2822)} ) ] ) left_token: <Left_Backtick '`'> spids: [459 469] ) } spids: [458] ) ] spids: [458] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:force_update) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(date)} {(--reference) (Lit_Other '=') (DQ ($ VSub_Name '$file'))} {(DQ ('+%s'))} ) ] ) left_token: <Left_Backtick '`'> spids: [473 485] ) } spids: [472] ) ] spids: [472] ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:title) op: Equal rhs: {(DQ )} spids: [488] ) ] spids: [488] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:keywords) op: Equal rhs: {(DQ )} spids: [493] ) ] spids: [493] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:description) op: Equal rhs: {(DQ )} spids: [498] ) ] spids: [498] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$file'))}) (C {(grep)} {(-Eq)} {(SQ <'\\.(html|shtml|php)$'>)}) ] negated: False ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:title) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(sed)} {(-n)} { (SQ < 's/.*<title>\\(.*\\)<\\/title>.*/\\1/ip;T;q' > ) } ] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Name '$file'))} spids: [535] ) ] ) ] ) left_token: <Left_Backtick '`'> spids: [526 540] ) } spids: [525] ) ] spids: [525] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:keywords) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(sed)} {(-n)} { (SQ < 's/.*<META.*NAME="keywords".*CONTENT="\\(.*\\)".*/\\1/ip;T;q' > ) } ] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Name '$file'))} spids: [553] ) ] ) ] ) left_token: <Left_Backtick '`'> spids: [544 558] ) } spids: [543] ) ] spids: [543] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:description) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(sed)} {(-n)} { (SQ < 's/.*<META.*NAME="description".*CONTENT="\\(.*\\)".*/\\1/ip;T;q' > ) } ] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Name '$file'))} spids: [571] ) ] ) ] ) left_token: <Left_Backtick '`'> spids: [562 576] ) } spids: [561] ) ] spids: [561] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:page_author) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(sed)} {(-n)} { (SQ < 's/.*<META.*NAME="author".*CONTENT="\\(.*\\)".*/\\1/ip;T;q' > ) } ] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Name '$file'))} spids: [589] ) ] ) ] ) left_token: <Left_Backtick '`'> spids: [580 594] ) } spids: [579] ) ] spids: [579] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:extracted_text) op: Equal rhs: { (DQ ($ VSub_Name '$title') (' ') ($ VSub_Name '$keywords') (' ') ($ VSub_Name '$description') (Lit_Other '$') (' ') ($ VSub_Name '$page_author') ) } spids: [597] ) ] spids: [597] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$extracted_text'))}) (C {(xml_unescaped)}) ] negated: False ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ('Error: HTML metadata in ') ($ VSub_Name '$file') (' will not produce a valid XML feed') ) } ] redirects: [ (Redir op_id: Redir_GreatAnd fd: -1 arg_word: {(2)} spids: [634] ) ] ) (C {(exit)} {(1)}) ] spids: [-1 623] ) ] spids: [-1 643] ) ] spids: [-1 522] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-x)} {(DQ ($ VSub_Name '$file'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:description) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(sed)} {(-n)} {(SQ <'3s/# \\(.*\\)/\\1/p'>)} {(DQ ($ VSub_Name '$file'))} ) ] ) left_token: <Left_Backtick '`'> spids: [666 678] ) } spids: [665] ) ] spids: [665] ) ] spids: [646 659] ) ] spids: [-1 681] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:file) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$file'))}) (C {(sed)} {(DQ ($ VSub_Name '$replace_default_files'))}) ] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [685 699] ) } spids: [684] ) ] spids: [684] ) (AndOr children: [ (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$title'))} {(Lit_Other ']')}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:title) op: Equal rhs: {(DQ ($ VSub_Name '$file'))} spids: [714] ) ] spids: [714] ) ] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:tags) op:Equal rhs:{(DQ )} spids:[720])] spids: [720] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$keywords'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (ForEach iter_name: keyword iter_words: [{($ VSub_Name '$keywords')}] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tags) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(echo)} {(-ne)} { (DQ ($ VSub_Name '$tags') ('<category>') ($ VSub_Name '$keyword') ('</category>') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) (' ') ) } ) ] ) left_token: <Left_Backtick '`'> spids: [756 769] ) } spids: [755] ) ] spids: [755] ) ] spids: [752 772] ) spids: [748 750] ) ] spids: [-1 740] ) ] spids: [-1 775] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$page_author'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$page_author'))} {(Lit_Other '=')} {(DQ ($ VSub_Name '$author'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:page_author) op: Equal rhs: {(DQ )} spids: [812] ) ] spids: [812] ) ] spids: [-1 809] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:page_author) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(echo)} {(-ne)} { (DQ ('<author>') ($ VSub_Name '$page_author') ('</author>') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) (' ') ) } ) ] ) left_token: <Left_Backtick '`'> spids: [821 833] ) } spids: [820] ) ] spids: [820] ) ] spids: [817 836] ) ] spids: [-1 789] ) ] spids: [-1 839] ) (C {(echo)} { (DQ ('\n') ('<item>\n') (' <title>') ($ VSub_Name '$title') ('</title>\n') (' <guid>http://') ($ VSub_Name '$site') (/) ($ VSub_Name '$file') ('</guid>\n') (' <pubDate>') ($ VSub_Name '$pubDate') ('</pubDate>\n') (' <link>http://') ($ VSub_Name '$site') (/) ($ VSub_Name '$file') ('#') ($ VSub_Name '$force_update') ('</link>\n') (' ') ($ VSub_Name '$page_author') ($ VSub_Name '$tags') ('<description><![CDATA[') ($ VSub_Name '$description') ('<!--') ($ VSub_Name '$force_update') ('-->]]></description>\n') ('</item>\n') ) } ) ] spids: [455 875] ) ) ] negated: False ) (C {(echo)} {(SQ <'</channel>\n'> <'</rss>'>)}) ] op_id: Op_DAmp ) ] )