wiki-plugin-mech 0.1.9 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,563 @@
1
+ Ep. 581 George Stephanopoulos
2
+ Ep. 580 Jen Psaki
3
+ Ep. 579 Cyrus Habib
4
+ Ep. 578 Frank Bruni
5
+ Ep. 577 Ken Buck
6
+ Ep. 576 Fareed Zakaria
7
+ Ep. 575 Speaker Emerita Nancy Pelosi
8
+ Ep. 574 Sister Simone Campbell
9
+ Ep. 573 David Plouffe and Karl Rove
10
+ Ep. 572 Chris Christie
11
+ Ep. 571 Michael Crow
12
+ Ep. 570 Rep. Pete Aguilar
13
+ Ep. 569 Bill Bradley
14
+ Ep. 568 Thomas Friedman
15
+ Ep. 567 Sen. Raphael Warnock
16
+ Ep. 566 Stephanie Murphy
17
+ Ep. 565 Jeff Zeleny
18
+ Ep. 564 John Miller
19
+ Ep. 563 Mick Mulvaney
20
+ Ep. 562 Cassidy Hutchinson
21
+ Ep. 561 Sara Paretsky
22
+ Ep. 560 Tim Alberta
23
+ Ep. 559 Sen. Mallory McMorrow
24
+ Ep. 558 Walter Massey
25
+ Ep. 557 Amb. David Pressman
26
+ Ep. 556 Obama 15-Year Anniversary Special�����
27
+ Ep. 555 McKay Coppins
28
+ Ep. 554 Ilana Dayan
29
+ Ep. 553 Walter Isaacson
30
+ Ep. 552 David French
31
+ Ep. 551 Lawrence Wright
32
+ Ep. 550 Susan Rice
33
+ Ep. 549 Gov. Jay Inslee
34
+ Ep. 548 Scott Galloway
35
+ Ep. 547 Amb. Oksana Markarova
36
+ Ep. 546 Sally Yates
37
+ Ep. 545 Arthur Brooks
38
+ Ep. 544 John Podesta
39
+ Ep. 543 John King
40
+ Ep. 542 Adrian Perkins
41
+ Ep. 541 Sen. Tammy Baldwin
42
+ Ep. 540 Jon Meacham
43
+ Ep. 539 Supervisor Bill Gates
44
+ Ep. 538 President Barack Obama
45
+ Ep. 537 Kaitlan Collins
46
+ Ep. 536 Michael Wilbon
47
+ Ep. 535 Sen. Mark Kelly
48
+ Ep. 534 Gretchen Carlson
49
+ Ep. 533 Gov. J.B. Pritzker
50
+ Ep. 532 Rep. Katie Porter
51
+ Ep. 531 Brandon Johnson
52
+ Ep. 530 Asa Hutchinson
53
+ Ep. 529 Neil King Jr.
54
+ Ep. 528 Theo Epstein
55
+ Ep. 527 Jen Easterly
56
+ Ep. 526 John Hendrickson
57
+ Ep. 525 Amb. Michael McFaul
58
+ Ep. 524 Peter Meijer
59
+ Ep. 523 Beto O'Rourke
60
+ Ep. 522 Amb. Tom Nides
61
+ Ep. 521 Gov. Gavin Newsom
62
+ Ep. 520 Tim Ryan
63
+ Ep. 519 Sec. Antony Blinken
64
+ Ep. 518 Amanda Gorman
65
+ Ep. 517 Gov. Chris Sununu
66
+ Ep. 516 Gov. Gretchen Whitmer
67
+ Ep. 515 Dr. Anthony Fauci
68
+ Ep. 514 Wes Moore
69
+ Ep. 513 Mike Pence
70
+ Ep. 512 Sen. Alex Padilla
71
+ Ep. 511 Speaker Rusty Bowers
72
+ Ep. 510 Major Garrett
73
+ Ep. 508 Maggie Haberman
74
+ Ep. 507 Cody Keenan
75
+ Ep. 506 Doug Jones
76
+ Ep. 505 Beth Macy
77
+ Ep. 504 Chris Wallace
78
+ Ep. 503 Rep. Adam Kinzinger
79
+ Ep. 502 Henry Kissinger
80
+ Ep. 501 Jason Kander
81
+ Ep. 500 John Legend
82
+ Ep. 499 David Chalian
83
+ Ep. 498 Gov. Jared Polis
84
+ Ep. 497 Sen. Chris Murphy
85
+ Ep. 496 Kellyanne Conway
86
+ Ep. 495 Rep. Fred Upton
87
+ Ep. 494 John Dean
88
+ Ep. 493 Arne Duncan and Curtis Toler
89
+ Ep. 492 Gov. Pete Ricketts
90
+ Ep. 491 Chris Krebs
91
+ Ep. 490 Rep. Jackie Speier
92
+ Ep. 489 Shaka Senghor
93
+ Ep. 488 Al Franken
94
+ Ep. 487 Amb. Michael McFaul
95
+ Ep. 486 Sarah Longwell
96
+ Ep. 485 Maria Ressa
97
+ Ep. 484 Anne Applebaum
98
+ Ep. 483 Tony Fabrizio
99
+ Ep. 482 Amb. Marie Yovanovitch
100
+ Ep. 481 Erin Burnett
101
+ Ep. 480 Frank Bruni
102
+ Ep. 479 Bianna Golodryga
103
+ Ep. 478 Lotfullah Najafizada
104
+ Ep. 477 Sen. Jon Tester
105
+ Ep. 476 Ian Bremmer
106
+ Ep. 475 Rt. Hon. Gordon Brown
107
+ Ep. 474 Amb. Andrew Young
108
+ Ep. 473 Barton Gellman
109
+ Ep. 472 Rep. Jamie Raskin
110
+ Ep. 471 Rep. Elissa Slotkin
111
+ Ep. 470 Gen. Stanley McChrystal
112
+ Ep. 469 Marc Short
113
+ Ep. 468 Chris Christie
114
+ Ep. 467 Rep. Pramila Jayapal
115
+ Ep. 466 Fiona Hill
116
+ Ep. 465 Russell Moore
117
+ Ep. 464 Anderson Cooper
118
+ Ep. 463 Evan Osnos
119
+ Ep. 462 Robert Costa
120
+ Ep. 461 Monica Lewinsky
121
+ Ep. 460 Ken Burns
122
+ Ep. 459 Clarissa Ward
123
+ Ep. 458 Lt. Col. Alexander Vindman
124
+ Ep. 457 Dr. Leana Wen
125
+ Ep. 456 Rep. Raja Krishnamoorthi
126
+ Ep. 455 Anne Applebaum
127
+ Ep. 454 Amy Walter
128
+ Ep. 453 Stephanie Cutter
129
+ Ep. 452 John Anzalone
130
+ Ep. 451 Ben Rhodes
131
+ Ep. 450 Nathan Law
132
+ Ep. 449 Surgeon General Vivek Murthy
133
+ Ep. 448 Cecile Richards
134
+ Ep. 447 Rep. Liz Cheney
135
+ Ep. 446 Prime Minister Jacinda Ardern
136
+ Ep. 445 Heather McTeer Toney
137
+ Ep. 444 Justin Amash
138
+ Ep. 443 Sally Yates
139
+ Ep. 442 Jen Psaki
140
+ Ep. 441 Speaker John Boehner
141
+ Ep. 440 Amb. Linda Thomas-Greenfield
142
+ Ep. 439 Jamie Dimon
143
+ Ep. 438 Sen. Tammy Duckworth
144
+ Ep. 437 Bud Selig
145
+ Ep. 436 Rev. Dr. William Barber
146
+ Ep. 435 Kara Swisher
147
+ Ep. 434 Mayor Keisha Lance Bottoms
148
+ Ep. 433 Tim Alberta
149
+ Ep. 432 Rep. Joe Neguse
150
+ Ep. 431 Fareed Zakaria
151
+ Ep. 430 Heidi Heitkamp
152
+ Ep. 429 Daniel Goldman
153
+ Ep. 428 Andrew McCabe
154
+ Ep. 427 Rep. Adam Kinzinger
155
+ Ep. 426 Doris Kearns Goodwin
156
+ Ep. 425 Joe Scarborough
157
+ Ep. 424 Rep. Ayanna Pressley
158
+ Ep. 423 Rep. Alexandria Ocasio-Cortez
159
+ Ep. 422 Dan Rather
160
+ Ep. 421 Abby Phillip
161
+ Ep. 420 Sen. Mitt Romney
162
+ Ep. 419 Gov. Andrew Cuomo
163
+ Ep. 418 David Plouffe
164
+ Ep. 417 Jon Meacham
165
+ Ep. 416 Mandy Patinkin
166
+ Ep. 415 Nina Totenberg
167
+ Ep. 414 Susan Page
168
+ Ep. 413 Peter Baker and Susan Glasser
169
+ Ep. 412 Amb. John Bolton
170
+ Ep. 411 Bob Costas
171
+ Ep. 410 Sen. Sherrod Brown
172
+ Ep. 409 Nicolle Wallace
173
+ Ep. 408 Tim O'Brien
174
+ Ep. 407 Sen. Bernie Sanders
175
+ Ep. 406 Jeff Daniels
176
+ Ep. 405 Nikole Hannah-Jones
177
+ Ep. 404 Brian Stelter
178
+ Ep. 403 Chasten Buttigieg
179
+ Ep. 402 Rep. Jim Clyburn
180
+ Ep. 401 Jonathan Karl
181
+ Ep. 400 Speaker Nancy Pelosi
182
+ Ep. 399 Tina Tchen
183
+ Ep. 398 Rep. Karen Bass
184
+ Ep. 397 Gov. Larry Hogan
185
+ Ep. 396 Dr. Anthony Fauci
186
+ Ep. 395 Erik Larson
187
+ Ep. 394 Atul Gawande
188
+ Ep. 393 Shannon Watts
189
+ Ep. 392 Jon Stewart
190
+ Ep. 391 Charlie Sykes
191
+ Ep. 390 Bakari Sellers
192
+ Ep. 389 Mark Cuban
193
+ Ep. 388 Ezra Klein
194
+ Ep. 387 Gene Sperling
195
+ Ep. 386 Mayor Lori Lightfoot
196
+ Ep. 385 Mary Kay Henry
197
+ Ep. 384 Gayle Smith
198
+ Ep. 383 Megan Rapinoe
199
+ Ep. 382 Cecilia Mun?oz
200
+ Ep. 381 Stacey Abrams
201
+ Ep. 380 Gov. Gretchen Whitmer
202
+ Ep. 379 Chris Christie
203
+ Ep. 378 Dr. Sanjay Gupta
204
+ Ep. 377 Gerald Butts
205
+ Ep. 376 Ron Klain
206
+ Ep. 375 Denis McDonough
207
+ Ep. 374 Rep. Abigail Spanberger
208
+ Ep. 373 Andrew Gillum
209
+ Ep. 372 Paul Krugman
210
+ Ep. 371 Adam Frankel
211
+ Ep. 370 Abdul El-Sayed
212
+ Ep. 369 Nicholas Kristof and Sheryl WuDunn
213
+ Ep. 368 Rep. Adam Schiff
214
+ Ep. 367 Michele Norris
215
+ Ep. 366 David Gergen
216
+ Ep. 365 Judd Apatow
217
+ Ep. 364 Fusion GPS (Glenn Simpson and Peter Fritsch)
218
+ Ep. 363 John Heilemann
219
+ Ep. 362 Heather McGhee
220
+ Ep. 361 Sarah Hurwitz
221
+ Ep. 360 Richard Stengel
222
+ Ep. 359 Andrew Yang
223
+ Ep. 358 Gary Cohn
224
+ Ep. 357 Amb. Dennis Ross
225
+ Ep. 356 Samantha Power
226
+ Ep. 355 Cindy McCain (TV)
227
+ Ep. 354 Dikembe Mutombo
228
+ Ep. 352 Admiral Michael Mullen
229
+ Ep. 351 Harry Reid (TV)
230
+ Ep. 350 Gov. Gina Raimondo
231
+ Ep. 349 Admiral William McRaven
232
+ Ep. 348 George Will
233
+ Ep. 347 Eric Holder (TV)
234
+ Ep. 342 Will Hurd
235
+ Ep. 340 Pete Buttigieg (TV)
236
+ Ep. 338 David Remnick
237
+ Ep. 327 Janet Napolitano
238
+ Ep. 326 Sen. Cory Booker (TV)
239
+ Ep. 325 Bill Burns
240
+ Ep. 324 Jason Rezaian
241
+ Ep. 323 James Carville
242
+ Ep. 322 Bryan Cranston
243
+ Ep. 321 Valerie Jarrett
244
+ Ep. 320 Rep. Jan Schakowsky
245
+ Ep. 319 Beto O'Rourke (TV)
246
+ Ep. 318 Tommy Vietor
247
+ Ep. 317 Peter Roskam
248
+ Ep. 316 Alex Kotlowitz
249
+ Ep. 315 Jeb Bush (TV)
250
+ Ep. 314 Alyssa Mastromonaco
251
+ Ep. 313 Sen. Elizabeth Warren (TV)
252
+ Ep. 312 Bill Kurtis
253
+ Ep. 311 Claire McCaskill
254
+ Ep. 310 Michael Smerconish
255
+ Ep. 309 Lisa Madigan
256
+ Ep. 308 Kirsten Powers
257
+ Ep. 307 Nate Silver
258
+ Ep. 306 Rep. Hakeem Jeffries
259
+ Ep. 305 Josh Shapiro
260
+ Ep. 304 John Delaney
261
+ Ep. 303 David Leonhardt
262
+ Ep. 302 Stanley McChrystal
263
+ Ep. 301 John Kerry (TV)
264
+ Ep. 300 Sherrilyn Ifill
265
+ Ep. 299 Miguel Cervantes
266
+ Ep. 298 Ivo Daalder
267
+ Ep. 297 Gov. J.B. Pritzker
268
+ Ep. 296 Rep. Eric Swalwell
269
+ Ep. 295 Howard Wolfson
270
+ Ep. 294 Al Hunt
271
+ Ep. 293 Rahm Emanuel (TV)
272
+ Ep. 292 Bryan Stevenson
273
+ Ep. 291 Jeff Zucker
274
+ Ep. 290 Amanda Carpenter
275
+ Ep. 289 Chris Dodd
276
+ Ep. 288 Barack Obama (Live)
277
+ Ep. 287 Sonia Sotomayor
278
+ Ep. 286 Mark Salter
279
+ Ep. 285 Gloria Borger
280
+ Ep. 284 Jen Psaki
281
+ Ep. 283 Arnold Schwarzenegger
282
+ Ep. 282 Steve Brill
283
+ Ep. 281 Steve Schmidt
284
+ Ep. 280 Jonah Goldberg
285
+ Ep. 279 Jeff Weaver
286
+ Ep. 278 Mary Katharine Ham
287
+ Ep. 277 Khizr Khan
288
+ Ep. 276 Ana Navarro
289
+ Ep. 275 Steven Pearlstein
290
+ Ep. 274 Chuck Todd
291
+ Ep. 273 Gov. Steve Bullock
292
+ Ep. 272 Roberta Jacobson
293
+ Ep. 271 Peter Sagal
294
+ Ep. 270 Bob Shrum
295
+ Ep. 269 Deval Patrick (TV)
296
+ Ep. 268 Susan Glasser
297
+ Ep. 267 Jon Lovett
298
+ Ep. 266 Austan Goolsbee
299
+ Ep. 265 Rep. Mike Quigley
300
+ Ep. 264 Dean Baquet & Marty Baron
301
+ Ep. 263 Ace Smith
302
+ Ep. 262 Judy Woodruff
303
+ Ep. 261 Anne Burke
304
+ Ep. 260 Tim Shriver
305
+ Ep. 259 Mitch Landrieu (TV)
306
+ Ep. 258 Dan Pfeiffer
307
+ Ep. 257 John King Jr.
308
+ Ep. 256 Nneka Jones Tapia
309
+ Ep. 255 Mike Barnicle
310
+ Ep. 254 Sen. Marco Rubio
311
+ Ep. 253 John Farrell
312
+ Ep. 252 Rachel Maddow
313
+ Ep. 251 Ray Mabus
314
+ Ep. 250 Tom Donilon
315
+ Ep. 249 Ronan Farrow
316
+ Ep. 248 Savannah Guthrie
317
+ Ep. 247 James Clapper
318
+ Ep. 246 Sally Yates
319
+ Ep. 245 Michael McFaul
320
+ Ep. 244 Steve Israel
321
+ Ep. 243 Jos� Andr�s
322
+ Ep. 242 Tom Price
323
+ Ep. 241 Jeffrey Toobin
324
+ Ep. 240 Vladimir Kara-Murza
325
+ Ep. 239 Kelly Ayotte
326
+ Ep. 238 Michael Avenatti
327
+ Ep. 237 Tom Perriello
328
+ Ep. 236 Mark Murray
329
+ Ep. 235 Gov. John Hickenlooper
330
+ Ep. 234 Zalmay Khalilzad
331
+ Ep. 233 Ed Miliband
332
+ Ep. 232 Stephanie Schriock
333
+ Ep. 231 Major Garrett
334
+ Ep. 230 Charles Barkley
335
+ Ep. 229 Andrea Mitchell
336
+ Ep. 228 Michael Phelps
337
+ Ep. 227 Chris Cuomo
338
+ Ep. 226 Peter Wehner
339
+ Ep. 225 Ana Marie Cox
340
+ Ep. 224 Jon Favreau (Live)
341
+ Ep. 223 Jay Roach
342
+ Ep. 222 Sen. Jeff Flake
343
+ Ep. 221 Jay Carney
344
+ Ep. 220 Michael Gerson
345
+ Ep. 219 Mayor Marty Walsh
346
+ Ep. 218 Lawrence O'Donnell
347
+ Ep. 217 Jake Tapper
348
+ Ep. 216 Anthony Scaramucci
349
+ Ep. 215 Prime Minister Justin Trudeau
350
+ Ep. 214 Whoopi Goldberg
351
+ Ep. 213 Sen. Mark Warner
352
+ Ep. 212 McKay Coppins
353
+ Ep. 211 David Gregory
354
+ Ep. 210 Ross Douthat
355
+ Ep. 209 Norm Ornstein
356
+ Ep. 208 Condoleezza Rice
357
+ Ep. 207 John Bouman
358
+ Ep. 206 Rep. Cheri Bustos
359
+ Ep. 205 Jake Sullivan
360
+ Ep. 204 Adam Nagourney
361
+ Ep. 203 Card. Blase Cupich
362
+ Ep. 202 Laura Haim
363
+ Ep. 201 Rick Santorum
364
+ Ep. 200 Ed Gillespie
365
+ Ep. 199 Eric Garcetti
366
+ Ep. 198 Preet Bharara
367
+ Ep. 197 Tom Hanks
368
+ Ep. 196 Pete Souza
369
+ Ep. 195 David Sanger
370
+ Ep. 194 Steve Kerr
371
+ Ep. 193 Kathleen Sebelius
372
+ Ep. 192 Donna Brazile
373
+ Ep. 191 Tony Blair
374
+ Ep. 190 Christiane Amanpour
375
+ Ep. 189 Fred Hochberg
376
+ Ep. 188 Susan E. Rice
377
+ Ep. 187 Gov. Terry McAuliffe
378
+ Ep. 186 Bakari Sellers
379
+ Ep. 185 Karen Tumulty
380
+ Ep. 184 David Miliband
381
+ Ep. 183 Ta-Nehisi Coates
382
+ Ep. 182 Sen. Michael Bennet
383
+ Ep. 181 Rep. Nancy Pelosi
384
+ Ep. 180 David Rubenstein
385
+ Ep. 179 David Litt
386
+ Ep. 178 Jason Kander
387
+ Ep. 177 Jeff Roe
388
+ Ep. 176 Jim Baker
389
+ Ep. 175 Bill Bradley
390
+ Ep. 174 Gayle King
391
+ Ep. 173 Rep. Seth Moulton
392
+ Ep. 172 Sen. Joe Donnelly
393
+ Ep. 171 Gov. Jay Inslee
394
+ Ep. 170 Sen. Patty Murray
395
+ Ep. 169 Don Rose
396
+ Ep. 168 Penny Pritzker
397
+ Ep. 167 Rahm Emanuel
398
+ Ep. 166 Rep. Luis Gutierrez
399
+ Ep. 165 Gary Hart
400
+ Ep. 164 Rep. Adam Kinzinger
401
+ Ep. 163 Mitch Landrieu
402
+ Ep. 162 Rep. John Lewis
403
+ Ep. 161 George Stephanopoulos
404
+ Ep. 160 Sen. Cory Booker
405
+ Ep. 159 Dana Bash
406
+ Ep. 158 Bill Daley
407
+ Ep. 157 Steven Greenhouse
408
+ Ep. 156 Bob Dold
409
+ Ep. 155 Sen. Elizabeth Warren
410
+ Ep. 154 Geoffrey Stone
411
+ Ep. 153 Sen. Tom Cotton
412
+ Ep. 152 Alfredo Corchado
413
+ Ep. 151 Brian Deese
414
+ Ep. 150 Grover Norquist
415
+ Ep. 149 Sen. Kirsten Gillibrand
416
+ Ep. 148 Tony Blinken
417
+ Ep. 147 Gov. Jerry Brown
418
+ Ep. 146 Chelsea Handler
419
+ Ep. 145 Jennifer Granholm
420
+ Ep. 144 Gov. John Kasich
421
+ Ep. 143 Rep. Ro Khanna
422
+ Ep. 142 Shailagh Murray
423
+ Ep. 141 Dan Shapiro
424
+ Ep. 140 Rep. Adam Schiff
425
+ Ep. 139 Lisa Monaco
426
+ Ep. 138 Jason Benetti
427
+ Ep. 137 Jim Sciutto
428
+ Ep. 136 Ben Smith
429
+ Ep. 135 Sen. John McCain
430
+ Ep. 134 Joe Maddon
431
+ Ep. 133 Juli�n Castro
432
+ Ep. 132 Wendy Sherman
433
+ Ep. 131 Jackie Calmes
434
+ Ep. 130 Michael Froman
435
+ Ep. 129 Pete Buttigieg
436
+ Ep. 128 Sen. Kamala Harris
437
+ Ep. 127 Kasim Reed
438
+ Ep. 126 Madeleine Albright
439
+ Ep. 125 Jeffrey Goldberg
440
+ Ep. 124 Bill Kristol
441
+ Ep. 123 Corey Lewandowski
442
+ Ep. 122 Mike Leavitt
443
+ Ep. 121 Nancy-Ann DeParle
444
+ Ep. 120 J.D. Vance
445
+ Ep. 119 Matt Bai
446
+ Ep. 118 Carl Bernstein
447
+ Ep. 117 Natalie Jaresko
448
+ Ep. 116 Cody Keenan
449
+ Ep. 115 Cecile Richards
450
+ Ep. 114 Thomas Friedman
451
+ Ep. 113 Theo Epstein
452
+ Ep. 112 Chris Wallace
453
+ Ep. 111 John Brennan
454
+ Ep. 110 Sean Spicer
455
+ Ep. 109 Mark Shriver
456
+ Ep. 108 President Barack Obama
457
+ Ep. 107 Eli Attie
458
+ Ep. 106 Tammy Duckworth
459
+ Ep. 105 Denis McDonough
460
+ Ep. 104 Alex Castellanos
461
+ Ep. 103 Sen. Harry Reid
462
+ Ep. 102 Davis Guggenheim
463
+ Ep. 101 Alex Wagner
464
+ Ep. 100 Doris Kearns Goodwin
465
+ Ep. 99 Steve Kerr
466
+ Ep. 98 Larry Summers
467
+ Ep. 97 Douglas Alexander
468
+ Ep. 96 Michael Morell
469
+ Ep. 95 Van Jones
470
+ Ep. 94 John Weaver
471
+ Ep. 93 DeRay Mckesson
472
+ Ep. 92 Carl Hulse
473
+ Ep. 91 Sec. John Kerry
474
+ Ep. 90 Tim Kaine
475
+ Ep. 89 John Heilemann
476
+ Ep. 88 Ron Brownstein
477
+ Ep. 87 Maureen Dowd
478
+ Ep. 86 Gary Johnson
479
+ Ep. 85 Fareed Zakaria
480
+ Ep. 84 Lin-Manuel Miranda
481
+ Ep. 83 Tom Brokaw
482
+ Ep. 82 Barney Frank
483
+ Ep. 81 Michael Steele (Live)
484
+ Ep. 80 Karl Rove
485
+ Ep. 79 EJ Dionne
486
+ Ep. 78 Peter Hart
487
+ Ep. 77 Caroline Kennedy
488
+ Ep. 76 Graham Moore
489
+ Ep. 75 Fr. Michael Pfleger
490
+ Ep. 74 Robert Gibbs
491
+ Ep. 73 Sec. Tom Vilsack
492
+ Ep. 72 Deval Patrick
493
+ Ep. 71 John Dickerson
494
+ Ep. 70 Paul Simon
495
+ Ep. 69 SE Cupp
496
+ Ep. 68 Mark McKinnon
497
+ Ep. 67 Hugh Hewitt
498
+ Ep. 66 Jeffrey DeLaurentis
499
+ Ep. 65 Newton Minow
500
+ Ep. 64 Maggie Haberman
501
+ Ep. 63 Paul Begala
502
+ Ep. 62 Sen. Susan Collins
503
+ Ep. 61 Isaac Lee
504
+ Ep. 60 Sen. Al Franken
505
+ Ep. 59 Bill Walton
506
+ Ep. 58 Beth Myers
507
+ Ep. 57 Tim Phillips
508
+ Ep. 56 Tom Harkin
509
+ Ep. 55 Jeff Greenfield
510
+ Ep. 54 Eric Holder
511
+ Ep. 53 Ilana Dayan
512
+ Ep. 52 Katie Couric
513
+ Ep. 51 Samantha Power
514
+ Ep. 50 Michael Nutter
515
+ Ep. 49 Jon Stewart (Live)
516
+ Ep. 48 Anderson Cooper
517
+ Ep. 47 Frank Bruni
518
+ Ep. 46 Patrick Kennedy
519
+ Ep. 45 Arthur Brooks
520
+ Ep. 44 Mike Murphy
521
+ Ep. 43 David Plouffe
522
+ Ep. 42 Ben Rhodes
523
+ Ep. 41 Ron Fournier
524
+ Ep. 40 Abner Mikva
525
+ Ep. 39 Sen. Amy Klobuchar
526
+ Ep. 38 Jamie Kalven
527
+ Ep. 37 Dan Balz
528
+ Ep. 36 Ron Klain
529
+ Ep. 35 Mark Leibovich
530
+ Ep. 34 Trent Lott
531
+ Ep. 33 Lindsey Graham
532
+ Ep. 32 Erick Erickson
533
+ Ep. 31 Gov. Jon Huntsman
534
+ Ep. 30 Joe Trippi
535
+ Ep. 29 Joel Benenson
536
+ Ep. 28 Jonathan Martin
537
+ Ep. 27 Juliet Macur
538
+ Ep. 26 Jennifer Jacobs
539
+ Ep. 25 Patti Solis Doyle
540
+ Ep. 24 Sen. Dick Durbin
541
+ Ep. 23 Stuart Stevens
542
+ Ep. 22 Arne Duncan
543
+ Ep. 21 Mary Kay Henry
544
+ Ep. 20 Aneesh Chopra
545
+ Ep. 19 Sec. Thomas Perez
546
+ Ep. 18 Husain Haqqani
547
+ Ep. 17 Joakim Noah
548
+ Ep. 16 Sen. Claire McCaskill
549
+ Ep. 15 Reihan Salam
550
+ Ep. 14 Sheriff Tom Dart
551
+ Ep. 13 Spike Lee
552
+ Ep. 12 David Maraniss
553
+ Ep. 11 Jon Favreau
554
+ Ep. 10 Mark Holden
555
+ Ep. 9 Jorge Ramos
556
+ Ep. 8 Eliot Spitzer
557
+ Ep. 7 Jessica Yellin
558
+ Ep. 6 Rep. Nancy Pelosi
559
+ Ep. 5 Mitt Romney
560
+ Ep. 4 Alastair Campbell
561
+ Ep. 3 Capt. Mark Kelly
562
+ Ep. 2 Matthew Dowd
563
+ Ep. 1 Sen. Bernie Sanders
package/client/mech.js CHANGED
@@ -8,10 +8,12 @@
8
8
  .replace(/&/g, '&')
9
9
  .replace(/</g, '&lt;')
10
10
  .replace(/>/g, '&gt;')
11
- .replace(/\*(.+?)\*/g, '<i>$1</i>')
12
11
  }
13
12
 
14
- // https://github.com/dobbs/wiki-plugin-graphviz/blob/main/client/graphviz.js#L86-L103
13
+
14
+ // I N T E R P R E T E R
15
+
16
+ // https://github.com/dobbs/wiki-plugin-graphviz/blob/main/client/graphviz.js#L86-L103
15
17
  function tree(lines, here, indent) {
16
18
  while (lines.length) {
17
19
  let m = lines[0].match(/( *)(.*)/)
@@ -39,12 +41,12 @@
39
41
  const key = `${unique}.${path.join('.')}`
40
42
  part.key = key
41
43
  if('command' in part)
42
- html.push(`<span id=${key}>${expand(part.command)}</span>`)
44
+ html.push(`<font color=gray size=small></font><span style="display: block;" id=${key}>${expand(part.command)}</span>`)
43
45
  else
44
- html.push(`<div id=${key} style="padding-left:15px">${block(part,[...path,0])}</div> `)
46
+ html.push(`<div id=${key} style="padding-left:15px">${block(part,[...path,0])}</div>`)
45
47
  path[path.length-1]++
46
48
  }
47
- return html.join("<br>\n")
49
+ return html.join("\n")
48
50
  }
49
51
  return block(nest,[0])
50
52
  }
@@ -56,10 +58,63 @@
56
58
  elem.outerHTML += `<span style="width:80%;color:gray;">${message}</span>` })
57
59
  }
58
60
 
61
+ function inspect(elem,key,state) {
62
+ const tap = elem.previousElementSibling
63
+ if(state.debug) {
64
+ const value = state[key]
65
+ tap.innerHTML = `${key} ⇒ `
66
+ tap.addEventListener('click',event => {
67
+ console.log({key,value})
68
+ let look = tap.previousElementSibling
69
+ if (!(look?.classList.contains('look'))) {
70
+ const div = document.createElement('div')
71
+ div.classList.add('look')
72
+ tap.insertAdjacentElement('beforebegin',div)
73
+ look = tap.previousElementSibling
74
+ }
75
+ let text = JSON.stringify(value,null,1)
76
+ if(text.length>300) text = text.substring(0,400)+'...'
77
+ const css = `border:1px solid black; background-color:#f8f8f8; padding:8px; color:gray; word-break: break-all;`
78
+ look.innerHTML = `<div style="${css}">${text}</div>`
79
+ })
80
+ }
81
+ else {
82
+ tap.innerHTML = ''
83
+ }
84
+ }
85
+
86
+ function run (nest,state={},mock) {
87
+ const scope = nest.slice()
88
+ while (scope.length) {
89
+ const code = scope.shift()
90
+ if ('command' in code) {
91
+ const command = code.command
92
+ const elem = mock || document.getElementById(code.key)
93
+ const [op, ...args] = code.command.split(/ +/)
94
+ const next = scope[0]
95
+ const body = next && ('command' in next) ? null : scope.shift()
96
+ const stuff = {command,op,args,body,elem,state}
97
+ if(state.debug) console.log(stuff)
98
+ if (blocks[op])
99
+ blocks[op].emit.apply(null,[stuff])
100
+ else
101
+ if (op.match(/^[A-Z]+$/))
102
+ trouble(elem,`${op} doesn't name a block we know.`)
103
+ else if (code.command.match(/\S/))
104
+ trouble(elem, `Expected line to begin with all-caps keyword.`)
105
+ } else if(typeof code == 'array') {
106
+ run(code,state)
107
+ }
108
+ }
109
+ }
110
+
111
+
112
+ // B L O C K S
113
+
59
114
  function click_emit ({elem,body,state}) {
60
115
  if(elem.innerHTML.match(/button/)) return
61
116
  if (!body?.length) return trouble(elem,'CLICK expects indented blocks to follow.')
62
- elem.innerHTML += '<button style="border-width:0;">◉</button>'
117
+ elem.innerHTML += '<button style="border-width:0;">►</button>'
63
118
  elem.querySelector('button').addEventListener('click',event => {
64
119
  state.debug = event.shiftKey
65
120
  run(body,state)
@@ -86,6 +141,7 @@
86
141
  function sensor_emit ({elem,args,body,state}) {
87
142
  const line = elem.innerHTML.replaceAll(/ ⌛/g,'')
88
143
  if(!('page' in state)) return trouble(elem,`Expect "page" as with FROM.`)
144
+ inspect(elem,'page',state)
89
145
  const datalog = state.page.story.find(item => item.type == 'datalog')
90
146
  if(!datalog) return trouble(elem, `Expect Datalog plugin in the page.`)
91
147
  const want = args[0]
@@ -114,25 +170,27 @@
114
170
  function report_emit ({elem,command,state}) {
115
171
  const value = state?.temperature
116
172
  if (!value) return trouble(elem,`Expect data, as from SENSOR.`)
173
+ inspect(elem,'temperature',state)
117
174
  elem.innerHTML = command + `<br><font face=Arial size=32>${value}</font>`
118
175
  }
119
176
 
120
177
  function source_emit ({elem,command,args,body,state}) {
121
178
  if (!(args && args.length)) return trouble(elem,`Expected Source topic, like "markers" for Map markers.`)
122
179
  const topic = args[0]
123
- const sources = requestSourceData(state.$item, topic)
180
+ const item = elem.closest('.item')
181
+ const sources = requestSourceData(item, topic)
124
182
  if(!sources.length) return trouble(elem,`Expected source for "${topic}" in the lineup.`)
125
183
  const count = type => {
126
184
  const count = sources
127
185
  .filter(source => [...source.div.classList].includes(type))
128
186
  .length
129
187
  return count ? `${count} ${type}` : null}
130
- const counts = [count('map'),count('image'),count('frame')]
188
+ const counts = [count('map'),count('image'),count('frame'),count('assets')]
131
189
  .filter(count => count)
132
190
  .join(", ")
133
191
  if (state.debug) console.log({topic,sources})
134
192
  elem.innerHTML = command + ' ⇒ ' + counts
135
- state[topic] = sources
193
+ state[topic] = sources.map(({div,result}) => ({id:div.dataset.id, result}))
136
194
  if (body) run(body,state)
137
195
  }
138
196
 
@@ -143,6 +201,7 @@
143
201
  switch (arg) {
144
202
  case 'map':
145
203
  if(!('marker' in state)) return trouble(elem,`"map" preview expects "marker" state, like from "SOURCE marker".`)
204
+ inspect(elem,'marker',state)
146
205
  const text = state.marker
147
206
  .map(marker => [marker.result])
148
207
  .flat(2)
@@ -153,6 +212,7 @@
153
212
  break
154
213
  case 'graph':
155
214
  if(!('aspect' in state)) return trouble(elem,`"graph" preview expects "aspect" state, like from "SOURCE aspect".`)
215
+ inspect(elem,'aspect',state)
156
216
  for (const {div,result} of state.aspect) {
157
217
  for (const {name,graph} of result) {
158
218
  if(state.debug) console.log({div,result,name,graph})
@@ -162,6 +222,11 @@
162
222
  story.push({type:'pagefold',text:'.'})
163
223
  }
164
224
  break
225
+ case 'items':
226
+ if(!('items' in state)) return trouble(elem,`"graph" preview expects "items" state, like from "KWIC".`)
227
+ inspect(elem,'items',state)
228
+ story.push(...state.items)
229
+ break
165
230
  case 'synopsis':
166
231
  {const text = `This page has been generated by the Mech plugin. We want to tell you where. That's coming soon.`
167
232
  story.push({type:'paragraph',text})}
@@ -189,6 +254,8 @@
189
254
  }
190
255
 
191
256
  function walk_emit ({elem,command,args,state}) {
257
+ if(!('neighborhood' in state)) return trouble(elem,`FILE expects state.neighborhood, like from NEIGHBORS.`)
258
+ inspect(elem,'neighborhood',state)
192
259
  const steps = walks(state.neighborhood)
193
260
  const aspects = steps.filter(({graph})=>graph)
194
261
  if(state.debug) console.log({steps})
@@ -199,7 +266,7 @@
199
266
  const item = elem.closest('.item')
200
267
  item.classList.add('aspect-source')
201
268
  item.aspectData = () => aspects
202
- state.aspect = [{div:item,result:aspects}]
269
+ state.aspect = [{id:item.dataset.id,result:aspects}]
203
270
  }
204
271
 
205
272
  function tick_emit ({elem,args,body,state}) {
@@ -208,7 +275,7 @@
208
275
  const count = args[0] || '1'
209
276
  if (!count.match(/^[1-9][0-9]?$/)) return trouble(elem,"TICK expects a count from 1 to 99")
210
277
  let clock = null
211
- elem.innerHTML += '<button style="border-width:0;">◉</button>'
278
+ elem.innerHTML += '<button style="border-width:0;">►</button>'
212
279
  elem.querySelector('button').addEventListener('click',event => {
213
280
  state.debug = event.shiftKey
214
281
  if(clock){
@@ -232,6 +299,7 @@
232
299
  if(!args.length) return trouble(elem,`UNTIL expects an argument, a word to stop running.`)
233
300
  if(!state.tick) return trouble(elem,`UNTIL expects to indented below an iterator, like TICKS.`)
234
301
  if(!state.aspect) return trouble(elem,`UNTIL expects "aspect", like from WALK.`)
302
+ inspect(elem,'aspect',state)
235
303
  elem.innerHTML = command + ` ⇒ ${state.tick}`
236
304
  const word = args[0]
237
305
  for(const {div,result} of state.aspect)
@@ -260,6 +328,65 @@
260
328
  elem.innerHTML = command + ` ⇒ ${direction}°`
261
329
  }
262
330
 
331
+ function file_emit ({elem,command,args,body,state}) {
332
+ if(!('assets' in state)) return trouble(elem,`FILE expects state.assets, like from SOURCE assets.`)
333
+ inspect(elem,'assets',state)
334
+ if(args.length < 1) return trouble(elem,`FILE expects an argument, the dot suffix for desired files.`)
335
+ if (!body?.length) return trouble(elem,'FILE expects indented blocks to follow.')
336
+ const suffix = args[0]
337
+ const url = 'http://ward.dojo.fed.wiki/assets/pages/testing-file-mech/KWIC-list-axe-files.tsv'
338
+ fetch(url)
339
+ .then(res => res.text())
340
+ .then(text => {
341
+ elem.innerHTML = command + ` ⇒ ${text.length} bytes`
342
+ state.tsv = text
343
+ run(body,state)
344
+ })
345
+ }
346
+
347
+ function kwic_emit ({elem,command,args,body,state}) {
348
+ const template = body && body[0]?.command
349
+ if(template && !template.match(/\$[KW]/)) return trouble(elem,`KWIK expects $K or $W in link prototype.`)
350
+ if(!('tsv' in state)) return trouble(elem,`KWIC expects a .tsv file, like from ASSETS .tsv.`)
351
+ const prefix = args[0] || 1
352
+ const lines = state.tsv.trim().split(/\n/)
353
+
354
+ const stop = new Set(['of','and','in','at'])
355
+ const page = $(elem.closest('.page')).data('data')
356
+ const start = page.story.findIndex(item => item.type=='pagefold' && item.text=='stop')
357
+ if(start >= 0) {
358
+ const finish = page.story.findIndex((item,i) => i>start && item.type=='pagefold')
359
+ page.story.slice(start+1,finish)
360
+ .map(item => item.text.trim().split(/\s+/))
361
+ .flat()
362
+ .forEach(word => stop.add(word))
363
+ }
364
+
365
+ const groups = kwic(prefix,lines,stop)
366
+ elem.innerHTML = command + ` ⇒ ${lines.length} lines, ${groups.length} groups`
367
+ const link = quote => {
368
+ let line = quote.line
369
+ if(template) {
370
+ const substitute = template
371
+ .replaceAll(/\$K\+/g,quote.key.replaceAll(/ /g,'+'))
372
+ .replaceAll(/\$K/g,quote.key)
373
+ .replaceAll(/\$W/g,quote.word)
374
+ const target = template.match(/\$W/) ? quote.word : quote.key
375
+ line = line.replace(target,substitute)
376
+ }
377
+ return line
378
+ }
379
+
380
+ state.items = groups.map(group => {
381
+ text = `# ${group.group}\n\n${group.quotes
382
+ .map(quote=>link(quote))
383
+ .join("\n")}`
384
+ return {type:'markdown',text}})
385
+ }
386
+
387
+
388
+ // C A T A L O G
389
+
263
390
  const blocks = {
264
391
  CLICK: {emit:click_emit},
265
392
  HELLO: {emit:hello_emit},
@@ -273,39 +400,19 @@
273
400
  TICK: {emit:tick_emit},
274
401
  UNTIL: {emit:until_emit},
275
402
  FORWARD: {emit:forward_emit},
276
- TURN: {emit:turn_emit}
403
+ TURN: {emit:turn_emit},
404
+ FILE: {emit:file_emit},
405
+ KWIC: {emit:kwic_emit}
277
406
  }
278
407
 
279
- function run (nest,state={}) {
280
- const scope = nest.slice()
281
- while (scope.length) {
282
- const code = scope.shift()
283
- if ('command' in code) {
284
- const command = code.command
285
- const elem = document.getElementById(code.key)
286
- const [op, ...args] = code.command.split(/ +/)
287
- const next = scope[0]
288
- const body = next && ('command' in next) ? null : scope.shift()
289
- const stuff = {command,op,args,body,elem,state}
290
- if(state.debug) console.log(stuff)
291
- if (blocks[op])
292
- blocks[op].emit.apply(null,[stuff])
293
- else
294
- if (op.match(/^[A-Z]+$/))
295
- trouble(elem,`${op} doesn't name a block we know.`)
296
- else if (code.command.match(/\S/))
297
- trouble(elem, `Expected line to begin with all-caps keyword.`)
298
- } else if(typeof code == 'array') {
299
- run(code,state)
300
- }
301
- }
302
- }
408
+
409
+ // P L U G I N
303
410
 
304
411
  function emit($item, item) {
305
412
  const lines = item.text.split(/\n/)
306
413
  const nest = tree(lines,[],0)
307
414
  const html = format(nest)
308
- const state = {$item} // deprecated. use elem.closest('.item')
415
+ const state = {}
309
416
  $item.append(`<div style="background-color:#eee;padding:15px;border-top:8px;">${html}</div>`)
310
417
  run(nest,state)
311
418
  }
@@ -321,20 +428,20 @@
321
428
  }
322
429
 
323
430
  if (typeof module !== "undefined" && module !== null) {
324
- module.exports = {expand}
431
+ module.exports = {expand,tree,format,run}
325
432
  }
326
433
 
327
434
 
328
- // library functions
435
+ // L I B R A R Y
329
436
 
330
437
  // adapted from wiki-plugin-frame/client/frame.js
331
- function requestSourceData($item, topic) {
438
+ function requestSourceData(item, topic) {
332
439
  let sources = []
333
440
  for (let div of document.querySelectorAll(`.item`)) {
334
441
  if (div.classList.contains(`${topic}-source`)) {
335
442
  sources.unshift(div)
336
443
  }
337
- if (div === $item.get(0)) {
444
+ if (div === item) {
338
445
  break
339
446
  }
340
447
  }
@@ -407,6 +514,39 @@
407
514
  })
408
515
  }
409
516
 
517
+
518
+ // adapted from testing-file-mech/testing-kwic.html
519
+ function kwic(prefix,lines,stop) {
520
+ const quotes = lines
521
+ .filter(line => line.match(/\t/))
522
+ .map(quote)
523
+ .flat()
524
+ .sort((a,b) => a.word<b.word ? -1 : 1)
525
+ let current = 'zzz'.slice(0,prefix)
526
+ const groups = []
527
+ for (const quote of quotes) {
528
+ const group = quote.word.toLowerCase().slice(0,prefix)
529
+ if (group != current) {
530
+ groups.push({group,quotes:[]})
531
+ current = group}
532
+ groups[groups.length-1].quotes.push(quote)
533
+ }
534
+ return groups
535
+
536
+ function quote(line) {
537
+ const [key,text] = line.split(/\t/)
538
+ const words = text
539
+ .replaceAll(/'t\b/g,'t')
540
+ .replaceAll(/'s\b/g,'s')
541
+ .split(/[^a-zA-Z]+/)
542
+ .filter(word => word.length>3 && !stop.has(word.toLowerCase()))
543
+ return words
544
+ .map(word => ({word,line,key}))
545
+ }
546
+ }
547
+
548
+
549
+
410
550
  // adapted from graph/src/graph.js
411
551
  class Graph {
412
552
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wiki-plugin-mech",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "description": "Federated Wiki - Mechanism Scripting Plugin",
5
5
  "keywords": [
6
6
  "mech",