bytespeicher markdown cleanup

by mkzero

HTML

<textarea id="content">
  Hallo Welt! In den Bytespeicher Notizen veröffentlichen wir regelmäßig Themen, die uns auf Treffen  und in den verschiedenen Kommunikationskanälen in den zurückliegenden Wochen beschäftigt haben (Schlagworte und Links).  Und hier ist die aktuelle Ausgabe, gültig für die 53. bzw. 1.  Kalenderwoche des Jahres 2015/2016.

Wir hoffen ihr seid alle gut ins neue Jahr gerutscht. "Zwischen den Jahren" ist die Nachrichtenlage hauptsächlich vom 32C3 geprägt. 

<!--more-->


## [Veranstaltungen der vergangenen Woche]
* <a href="https://pad.technikkultur-erfurt.de/p/foodhacking">Foodhacking Di-Mi</a> 
* <a href="https://technikkultur-erfurt.de/bytespeicher:veranstaltungen:32c3">Congress Everywhere</a> (32C3)  Mo-Mi
* Test
  http://pad.technikkultur-erfurt.de/p/test
* Test2
  http://bytespeicher.org/test
* http://www.test.de
* http://www.test2.de
* Test3
  http://www.test3.de

## [Veranstaltungen der kommenden Woche]


## [32C3]
* Intel x86 considered harmful
http://blog.invisiblethings.org/2015/10/27/x86_harmful.html
* State considered harmful
http://blog.invisiblethings.org/2015/12/23/state_harmful.html
* rad1o++
https://media.ccc.de/v/32c3-7153-rad1o
* Beyond your cable modem 
https://media.ccc.de/v/32c3-7133-beyond_your_cable_modem


## [BLOG]


## [WIKI]


## [IRC]
* Freiwurst steht für freie Wurst in der realen Welt
https://www.freiwurst.net/
* info-beamer - Rapid Anzeigetafeln Development
https://info-beamer.com/opensource
    * Weltraumtheorie
https://de.wiktionary.org/wiki/Weltraumtheorie
* Brewing up a coffeemaker payment system with ATmega328
http://blog.atmel.com/2014/12/28/brewing-up-a-coffeemaker-payment-system-with-atmega328/
* 3D TSA "Travel Sentry" master keys
https://github.com/Xyl2k/TSA-Travel-Sentry-master-keys

## [HANGOUTS]


## [MAILINGLISTE]


## [TWITTER]
https://twitter.com/Chaos_99/status/681768525623595008
https://twitter.com/a_ka_es/status/682132908149223424
https://twitter.com/ahzf/status/682026255261241344


##...

JavaScript

var i = 0, j = 0,
    lines = document.getElementById('content').innerHTML.split('\n'),
    newdoc = [],
    match = /(?:(http|ftp)(s|):\/\/)([a-z-.]+[a-z]+)/,
    link = /(href="|>)((http|ftp)(s|):\/\/)([a-z-.]+[a-z]+)/,
    excludeHosts = ['twitter.com'],
    fullLinkHosts = ['technikkultur-erfurt.de', 'bytespeicher.org'],
    hostname, content = '';

function fixAsterisk(c) {
    if (c.indexOf('>* ') > -1) {
            c = '* ' + c.replace('>* ', '>');
    }
    return c;
}

for (i = 0; i <= lines.length; i+=1) {
  if (match.test(lines[i]) && !link.test(lines[i]) && !(new RegExp(excludeHosts.join("|")).test(lines[i]))) {
    if (match.test(lines[i-1]) && !link.test(lines[i-1])) {
        newdoc[j] = fixAsterisk('<a href="' + lines[i] + '">' + lines[i] + '</a>');
        j += 1;
    } else if (!(new RegExp(fullLinkHosts.join('|')).test(lines[i]))) {
        hostname = match.exec(lines[i]);
        hostname = hostname[hostname.length - 1];
        newdoc[j-1] = lines[i-1].trimRight() + ' (<a href=' + lines[i] + '>' + hostname + '</a>)';
    } else {
        newdoc[j-1] = fixAsterisk('<a href=' + lines[i] + '>' + lines[i-1] + '</a>');
    }
  } else {
    newdoc[j] = lines[i];
    j += 1;
  }
}

document.getElementById('newcontent').innerHTML = newdoc.join('\n');