diff --git a/.DS_Store b/.DS_Store
deleted file mode 100644
index 7040bcc..0000000
Binary files a/.DS_Store and /dev/null differ
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
deleted file mode 100644
index 146eb3c..0000000
--- a/.github/FUNDING.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-github: [josephernest]
-custom: https://afewthingz.com
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
deleted file mode 100644
index a61a613..0000000
--- a/.github/workflows/deploy.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-name: Deploy Static PHP Site
-
-on:
- push:
- branches:
- - master
-
-jobs:
- build-and-deploy:
- runs-on: ubuntu-latest
-
- steps:
- # Step 1: Checkout the repository
- - name: Checkout code
- uses: actions/checkout@v3
-
- # Step 2: Set up PHP (optional if your site needs specific PHP extensions)
- - name: Set up PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: '8.1' # Use the PHP version your site requires
-
- # Step 3: Start a PHP server
- - name: Start PHP server
- run: php -S localhost:8000 > /dev/null 2>&1 &
-
- # Step 4: Wait for the server to start
- - name: Wait for server
- run: sleep 5
-
- # Step 5: Use wget to generate static files
- - name: Generate static files
- run: |
- mkdir static_site
- wget --mirror --convert-links --adjust-extension --page-requisites --no-parent --reject-regex '/article.*|.*@.*\..*' http://localhost:8000/ -P static_site
-
- # Step 6: Deploy to GitHub Pages
- - name: Deploy to GitHub Pages
- uses: peaceiris/actions-gh-pages@v4
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: ./static_site/localhost\:8000
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 496ee2c..0000000
--- a/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-.DS_Store
\ No newline at end of file
diff --git a/.htaccess b/.htaccess
deleted file mode 100644
index 796a8cf..0000000
--- a/.htaccess
+++ /dev/null
@@ -1,7 +0,0 @@
-
- RewriteEngine On
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteRule ^(.*)$ index.php [QSA,L]
- RewriteRule \.txt$ index.php [L]
-
diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 0000000..e69de29
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 71e3890..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014 Joseph Ernest
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/Parsedown.php b/Parsedown.php
deleted file mode 100644
index 9bdae22..0000000
--- a/Parsedown.php
+++ /dev/null
@@ -1,1528 +0,0 @@
-DefinitionData = array();
-
- # standardize line breaks
- $text = str_replace(array("\r\n", "\r"), "\n", $text);
-
- # remove surrounding line breaks
- $text = trim($text, "\n");
-
- # split text into lines
- $lines = explode("\n", $text);
-
- # iterate through lines to identify blocks
- $markup = $this->lines($lines);
-
- # trim line breaks
- $markup = trim($markup, "\n");
-
- return $markup;
- }
-
- #
- # Setters
- #
-
- function setBreaksEnabled($breaksEnabled)
- {
- $this->breaksEnabled = $breaksEnabled;
-
- return $this;
- }
-
- protected $breaksEnabled;
-
- function setMarkupEscaped($markupEscaped)
- {
- $this->markupEscaped = $markupEscaped;
-
- return $this;
- }
-
- protected $markupEscaped;
-
- function setUrlsLinked($urlsLinked)
- {
- $this->urlsLinked = $urlsLinked;
-
- return $this;
- }
-
- protected $urlsLinked = true;
-
- #
- # Lines
- #
-
- protected $BlockTypes = array(
- '#' => array('Header'),
- '*' => array('Rule', 'List'),
- '+' => array('List'),
- '-' => array('SetextHeader', 'Table', 'Rule', 'List'),
- '0' => array('List'),
- '1' => array('List'),
- '2' => array('List'),
- '3' => array('List'),
- '4' => array('List'),
- '5' => array('List'),
- '6' => array('List'),
- '7' => array('List'),
- '8' => array('List'),
- '9' => array('List'),
- ':' => array('Table'),
- '<' => array('Comment', 'Markup'),
- '=' => array('SetextHeader'),
- '>' => array('Quote'),
- '[' => array('Reference'),
- '_' => array('Rule'),
- '`' => array('FencedCode'),
- '|' => array('Table'),
- '~' => array('FencedCode'),
- );
-
- # ~
-
- protected $DefinitionTypes = array(
- '[' => array('Reference'),
- );
-
- # ~
-
- protected $unmarkedBlockTypes = array(
- 'Code',
- );
-
- #
- # Blocks
- #
-
- private function lines(array $lines)
- {
- $CurrentBlock = null;
-
- foreach ($lines as $line)
- {
- if (chop($line) === '')
- {
- if (isset($CurrentBlock))
- {
- $CurrentBlock['interrupted'] = true;
- }
-
- continue;
- }
-
- if (strpos($line, "\t") !== false)
- {
- $parts = explode("\t", $line);
-
- $line = $parts[0];
-
- unset($parts[0]);
-
- foreach ($parts as $part)
- {
- $shortage = 4 - mb_strlen($line, 'utf-8') % 4;
-
- $line .= str_repeat(' ', $shortage);
- $line .= $part;
- }
- }
-
- $indent = 0;
-
- while (isset($line[$indent]) and $line[$indent] === ' ')
- {
- $indent ++;
- }
-
- $text = $indent > 0 ? substr($line, $indent) : $line;
-
- # ~
-
- $Line = array('body' => $line, 'indent' => $indent, 'text' => $text);
-
- # ~
-
- if (isset($CurrentBlock['incomplete']))
- {
- $Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock);
-
- if (isset($Block))
- {
- $CurrentBlock = $Block;
-
- continue;
- }
- else
- {
- if (method_exists($this, 'block'.$CurrentBlock['type'].'Complete'))
- {
- $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock);
- }
-
- unset($CurrentBlock['incomplete']);
- }
- }
-
- # ~
-
- $marker = $text[0];
-
- # ~
-
- $blockTypes = $this->unmarkedBlockTypes;
-
- if (isset($this->BlockTypes[$marker]))
- {
- foreach ($this->BlockTypes[$marker] as $blockType)
- {
- $blockTypes []= $blockType;
- }
- }
-
- #
- # ~
-
- foreach ($blockTypes as $blockType)
- {
- $Block = $this->{'block'.$blockType}($Line, $CurrentBlock);
-
- if (isset($Block))
- {
- $Block['type'] = $blockType;
-
- if ( ! isset($Block['identified']))
- {
- $Blocks []= $CurrentBlock;
-
- $Block['identified'] = true;
- }
-
- if (method_exists($this, 'block'.$blockType.'Continue'))
- {
- $Block['incomplete'] = true;
- }
-
- $CurrentBlock = $Block;
-
- continue 2;
- }
- }
-
- # ~
-
- if (isset($CurrentBlock) and ! isset($CurrentBlock['type']) and ! isset($CurrentBlock['interrupted']))
- {
- $CurrentBlock['element']['text'] .= "\n".$text;
- }
- else
- {
- $Blocks []= $CurrentBlock;
-
- $CurrentBlock = $this->paragraph($Line);
-
- $CurrentBlock['identified'] = true;
- }
- }
-
- # ~
-
- if (isset($CurrentBlock['incomplete']) and method_exists($this, 'block'.$CurrentBlock['type'].'Complete'))
- {
- $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock);
- }
-
- # ~
-
- $Blocks []= $CurrentBlock;
-
- unset($Blocks[0]);
-
- # ~
-
- $markup = '';
-
- foreach ($Blocks as $Block)
- {
- if (isset($Block['hidden']))
- {
- continue;
- }
-
- $markup .= "\n";
- $markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']);
- }
-
- $markup .= "\n";
-
- # ~
-
- return $markup;
- }
-
- #
- # Code
-
- protected function blockCode($Line, $Block = null)
- {
- if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted']))
- {
- return;
- }
-
- if ($Line['indent'] >= 4)
- {
- $text = substr($Line['body'], 4);
-
- $Block = array(
- 'element' => array(
- 'name' => 'pre',
- 'handler' => 'element',
- 'text' => array(
- 'name' => 'code',
- 'text' => $text,
- ),
- ),
- );
-
- return $Block;
- }
- }
-
- protected function blockCodeContinue($Line, $Block)
- {
- if ($Line['indent'] >= 4)
- {
- if (isset($Block['interrupted']))
- {
- $Block['element']['text']['text'] .= "\n";
-
- unset($Block['interrupted']);
- }
-
- $Block['element']['text']['text'] .= "\n";
-
- $text = substr($Line['body'], 4);
-
- $Block['element']['text']['text'] .= $text;
-
- return $Block;
- }
- }
-
- protected function blockCodeComplete($Block)
- {
- $text = $Block['element']['text']['text'];
-
- $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8');
-
- $Block['element']['text']['text'] = $text;
-
- return $Block;
- }
-
- #
- # Comment
-
- protected function blockComment($Line)
- {
- if ($this->markupEscaped)
- {
- return;
- }
-
- if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!')
- {
- $Block = array(
- 'markup' => $Line['body'],
- );
-
- if (preg_match('/-->$/', $Line['text']))
- {
- $Block['closed'] = true;
- }
-
- return $Block;
- }
- }
-
- protected function blockCommentContinue($Line, array $Block)
- {
- if (isset($Block['closed']))
- {
- return;
- }
-
- $Block['markup'] .= "\n" . $Line['body'];
-
- if (preg_match('/-->$/', $Line['text']))
- {
- $Block['closed'] = true;
- }
-
- return $Block;
- }
-
- #
- # Fenced Code
-
- protected function blockFencedCode($Line)
- {
- if (preg_match('/^(['.$Line['text'][0].']{3,})[ ]*([\w-]+)?[ ]*$/', $Line['text'], $matches))
- {
- $Element = array(
- 'name' => 'code',
- 'text' => '',
- );
-
- if (isset($matches[2]))
- {
- $class = 'language-'.$matches[2];
-
- $Element['attributes'] = array(
- 'class' => $class,
- );
- }
-
- $Block = array(
- 'char' => $Line['text'][0],
- 'element' => array(
- 'name' => 'pre',
- 'handler' => 'element',
- 'text' => $Element,
- ),
- );
-
- return $Block;
- }
- }
-
- protected function blockFencedCodeContinue($Line, $Block)
- {
- if (isset($Block['complete']))
- {
- return;
- }
-
- if (isset($Block['interrupted']))
- {
- $Block['element']['text']['text'] .= "\n";
-
- unset($Block['interrupted']);
- }
-
- if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text']))
- {
- $Block['element']['text']['text'] = substr($Block['element']['text']['text'], 1);
-
- $Block['complete'] = true;
-
- return $Block;
- }
-
- $Block['element']['text']['text'] .= "\n".$Line['body'];;
-
- return $Block;
- }
-
- protected function blockFencedCodeComplete($Block)
- {
- $text = $Block['element']['text']['text'];
-
- $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8');
-
- $Block['element']['text']['text'] = $text;
-
- return $Block;
- }
-
- #
- # Header
-
- protected function blockHeader($Line)
- {
- if (isset($Line['text'][1]))
- {
- $level = 1;
-
- while (isset($Line['text'][$level]) and $Line['text'][$level] === '#')
- {
- $level ++;
- }
-
- if ($level > 6)
- {
- return;
- }
-
- $text = trim($Line['text'], '# ');
-
- $Block = array(
- 'element' => array(
- 'name' => 'h' . min(6, $level),
- 'text' => $text,
- 'handler' => 'line',
- ),
- );
-
- return $Block;
- }
- }
-
- #
- # List
-
- protected function blockList($Line)
- {
- list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]');
-
- if (preg_match('/^('.$pattern.'[ ]+)(.*)/', $Line['text'], $matches))
- {
- $Block = array(
- 'indent' => $Line['indent'],
- 'pattern' => $pattern,
- 'element' => array(
- 'name' => $name,
- 'handler' => 'elements',
- ),
- );
-
- $Block['li'] = array(
- 'name' => 'li',
- 'handler' => 'li',
- 'text' => array(
- $matches[2],
- ),
- );
-
- $Block['element']['text'] []= & $Block['li'];
-
- return $Block;
- }
- }
-
- protected function blockListContinue($Line, array $Block)
- {
- if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches))
- {
- if (isset($Block['interrupted']))
- {
- $Block['li']['text'] []= '';
-
- unset($Block['interrupted']);
- }
-
- unset($Block['li']);
-
- $text = isset($matches[1]) ? $matches[1] : '';
-
- $Block['li'] = array(
- 'name' => 'li',
- 'handler' => 'li',
- 'text' => array(
- $text,
- ),
- );
-
- $Block['element']['text'] []= & $Block['li'];
-
- return $Block;
- }
-
- if ($Line['text'][0] === '[' and $this->blockReference($Line))
- {
- return $Block;
- }
-
- if ( ! isset($Block['interrupted']))
- {
- $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']);
-
- $Block['li']['text'] []= $text;
-
- return $Block;
- }
-
- if ($Line['indent'] > 0)
- {
- $Block['li']['text'] []= '';
-
- $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']);
-
- $Block['li']['text'] []= $text;
-
- unset($Block['interrupted']);
-
- return $Block;
- }
- }
-
- #
- # Quote
-
- protected function blockQuote($Line)
- {
- if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches))
- {
- $Block = array(
- 'element' => array(
- 'name' => 'blockquote',
- 'handler' => 'lines',
- 'text' => (array) $matches[1],
- ),
- );
-
- return $Block;
- }
- }
-
- protected function blockQuoteContinue($Line, array $Block)
- {
- if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches))
- {
- if (isset($Block['interrupted']))
- {
- $Block['element']['text'] []= '';
-
- unset($Block['interrupted']);
- }
-
- $Block['element']['text'] []= $matches[1];
-
- return $Block;
- }
-
- if ( ! isset($Block['interrupted']))
- {
- $Block['element']['text'] []= $Line['text'];
-
- return $Block;
- }
- }
-
- #
- # Rule
-
- protected function blockRule($Line)
- {
- if (preg_match('/^(['.$Line['text'][0].'])([ ]*\1){2,}[ ]*$/', $Line['text']))
- {
- $Block = array(
- 'element' => array(
- 'name' => 'hr'
- ),
- );
-
- return $Block;
- }
- }
-
- #
- # Setext
-
- protected function blockSetextHeader($Line, array $Block = null)
- {
- if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted']))
- {
- return;
- }
-
- if (chop($Line['text'], $Line['text'][0]) === '')
- {
- $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2';
-
- return $Block;
- }
- }
-
- #
- # Markup
-
- protected function blockMarkup($Line)
- {
- if ($this->markupEscaped)
- {
- return;
- }
-
- if (preg_match('/^<(\w*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches))
- {
- if (in_array($matches[1], $this->textLevelElements))
- {
- return;
- }
-
- $Block = array(
- 'name' => $matches[1],
- 'depth' => 0,
- 'markup' => $Line['text'],
- );
-
- $length = strlen($matches[0]);
-
- $remainder = substr($Line['text'], $length);
-
- if (trim($remainder) === '')
- {
- if (isset($matches[2]) or in_array($matches[1], $this->voidElements))
- {
- $Block['closed'] = true;
-
- $Block['void'] = true;
- }
- }
- else
- {
- if (isset($matches[2]) or in_array($matches[1], $this->voidElements))
- {
- return;
- }
-
- if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder))
- {
- $Block['closed'] = true;
- }
- }
-
- return $Block;
- }
- }
-
- protected function blockMarkupContinue($Line, array $Block)
- {
- if (isset($Block['closed']))
- {
- return;
- }
-
- if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open
- {
- $Block['depth'] ++;
- }
-
- if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close
- {
- if ($Block['depth'] > 0)
- {
- $Block['depth'] --;
- }
- else
- {
- $Block['closed'] = true;
- }
- }
-
- if (isset($Block['interrupted']))
- {
- $Block['markup'] .= "\n";
-
- unset($Block['interrupted']);
- }
-
- $Block['markup'] .= "\n".$Line['body'];
-
- return $Block;
- }
-
- #
- # Reference
-
- protected function blockReference($Line)
- {
- if (preg_match('/^\[(.+?)\]:[ ]*(\S+?)>?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches))
- {
- $id = strtolower($matches[1]);
-
- $Data = array(
- 'url' => $matches[2],
- 'title' => null,
- );
-
- if (isset($matches[3]))
- {
- $Data['title'] = $matches[3];
- }
-
- $this->DefinitionData['Reference'][$id] = $Data;
-
- $Block = array(
- 'hidden' => true,
- );
-
- return $Block;
- }
- }
-
- #
- # Table
-
- protected function blockTable($Line, array $Block = null)
- {
- if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted']))
- {
- return;
- }
-
- if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '')
- {
- $alignments = array();
-
- $divider = $Line['text'];
-
- $divider = trim($divider);
- $divider = trim($divider, '|');
-
- $dividerCells = explode('|', $divider);
-
- foreach ($dividerCells as $dividerCell)
- {
- $dividerCell = trim($dividerCell);
-
- if ($dividerCell === '')
- {
- continue;
- }
-
- $alignment = null;
-
- if ($dividerCell[0] === ':')
- {
- $alignment = 'left';
- }
-
- if (substr($dividerCell, - 1) === ':')
- {
- $alignment = $alignment === 'left' ? 'center' : 'right';
- }
-
- $alignments []= $alignment;
- }
-
- # ~
-
- $HeaderElements = array();
-
- $header = $Block['element']['text'];
-
- $header = trim($header);
- $header = trim($header, '|');
-
- $headerCells = explode('|', $header);
-
- foreach ($headerCells as $index => $headerCell)
- {
- $headerCell = trim($headerCell);
-
- $HeaderElement = array(
- 'name' => 'th',
- 'text' => $headerCell,
- 'handler' => 'line',
- );
-
- if (isset($alignments[$index]))
- {
- $alignment = $alignments[$index];
-
- $HeaderElement['attributes'] = array(
- 'style' => 'text-align: '.$alignment.';',
- );
- }
-
- $HeaderElements []= $HeaderElement;
- }
-
- # ~
-
- $Block = array(
- 'alignments' => $alignments,
- 'identified' => true,
- 'element' => array(
- 'name' => 'table',
- 'handler' => 'elements',
- ),
- );
-
- $Block['element']['text'] []= array(
- 'name' => 'thead',
- 'handler' => 'elements',
- );
-
- $Block['element']['text'] []= array(
- 'name' => 'tbody',
- 'handler' => 'elements',
- 'text' => array(),
- );
-
- $Block['element']['text'][0]['text'] []= array(
- 'name' => 'tr',
- 'handler' => 'elements',
- 'text' => $HeaderElements,
- );
-
- return $Block;
- }
- }
-
- protected function blockTableContinue($Line, array $Block)
- {
- if (isset($Block['interrupted']))
- {
- return;
- }
-
- if ($Line['text'][0] === '|' or strpos($Line['text'], '|'))
- {
- $Elements = array();
-
- $row = $Line['text'];
-
- $row = trim($row);
- $row = trim($row, '|');
-
- preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches);
-
- foreach ($matches[0] as $index => $cell)
- {
- $cell = trim($cell);
-
- $Element = array(
- 'name' => 'td',
- 'handler' => 'line',
- 'text' => $cell,
- );
-
- if (isset($Block['alignments'][$index]))
- {
- $Element['attributes'] = array(
- 'style' => 'text-align: '.$Block['alignments'][$index].';',
- );
- }
-
- $Elements []= $Element;
- }
-
- $Element = array(
- 'name' => 'tr',
- 'handler' => 'elements',
- 'text' => $Elements,
- );
-
- $Block['element']['text'][1]['text'] []= $Element;
-
- return $Block;
- }
- }
-
- #
- # ~
- #
-
- protected function paragraph($Line)
- {
- $Block = array(
- 'element' => array(
- 'name' => 'p',
- 'text' => $Line['text'],
- 'handler' => 'line',
- ),
- );
-
- return $Block;
- }
-
- #
- # Inline Elements
- #
-
- protected $InlineTypes = array(
- '"' => array('SpecialCharacter'),
- '!' => array('Image'),
- '&' => array('SpecialCharacter'),
- '*' => array('Emphasis'),
- ':' => array('Url'),
- '<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'),
- '>' => array('SpecialCharacter'),
- '[' => array('Link'),
- '_' => array('Emphasis'),
- '`' => array('Code'),
- '~' => array('Strikethrough'),
- '\\' => array('EscapeSequence'),
- );
-
- # ~
-
- protected $inlineMarkerList = '!"*_&[:<>`~\\';
-
- #
- # ~
- #
-
- public function line($text)
- {
- $markup = '';
-
- $unexaminedText = $text;
-
- $markerPosition = 0;
-
- while ($excerpt = strpbrk($unexaminedText, $this->inlineMarkerList))
- {
- $marker = $excerpt[0];
-
- $markerPosition += strpos($unexaminedText, $marker);
-
- $Excerpt = array('text' => $excerpt, 'context' => $text);
-
- foreach ($this->InlineTypes[$marker] as $inlineType)
- {
- $Inline = $this->{'inline'.$inlineType}($Excerpt);
-
- if ( ! isset($Inline))
- {
- continue;
- }
-
- if (isset($Inline['position']) and $Inline['position'] > $markerPosition) # position is ahead of marker
- {
- continue;
- }
-
- if ( ! isset($Inline['position']))
- {
- $Inline['position'] = $markerPosition;
- }
-
- $unmarkedText = substr($text, 0, $Inline['position']);
-
- $markup .= $this->unmarkedText($unmarkedText);
-
- $markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']);
-
- $text = substr($text, $Inline['position'] + $Inline['extent']);
-
- $unexaminedText = $text;
-
- $markerPosition = 0;
-
- continue 2;
- }
-
- $unexaminedText = substr($excerpt, 1);
-
- $markerPosition ++;
- }
-
- $markup .= $this->unmarkedText($text);
-
- return $markup;
- }
-
- #
- # ~
- #
-
- protected function inlineCode($Excerpt)
- {
- $marker = $Excerpt['text'][0];
-
- if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(? strlen($matches[0]),
- 'element' => array(
- 'name' => 'code',
- 'text' => $text,
- ),
- );
- }
- }
-
- protected function inlineEmailTag($Excerpt)
- {
- if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\S+?@\S+?)>/i', $Excerpt['text'], $matches))
- {
- $url = $matches[1];
-
- if ( ! isset($matches[2]))
- {
- $url = 'mailto:' . $url;
- }
-
- return array(
- 'extent' => strlen($matches[0]),
- 'element' => array(
- 'name' => 'a',
- 'text' => $matches[1],
- 'attributes' => array(
- 'href' => $url,
- ),
- ),
- );
- }
- }
-
- protected function inlineEmphasis($Excerpt)
- {
- if ( ! isset($Excerpt['text'][1]))
- {
- return;
- }
-
- $marker = $Excerpt['text'][0];
-
- if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches))
- {
- $emphasis = 'strong';
- }
- elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches))
- {
- $emphasis = 'em';
- }
- else
- {
- return;
- }
-
- return array(
- 'extent' => strlen($matches[0]),
- 'element' => array(
- 'name' => $emphasis,
- 'handler' => 'line',
- 'text' => $matches[1],
- ),
- );
- }
-
- protected function inlineEscapeSequence($Excerpt)
- {
- if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters))
- {
- return array(
- 'markup' => $Excerpt['text'][1],
- 'extent' => 2,
- );
- }
- }
-
- protected function inlineImage($Excerpt)
- {
- if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[')
- {
- return;
- }
-
- $Excerpt['text']= substr($Excerpt['text'], 1);
-
- $Link = $this->inlineLink($Excerpt);
-
- if ($Link === null)
- {
- return;
- }
-
- $Inline = array(
- 'extent' => $Link['extent'] + 1,
- 'element' => array(
- 'name' => 'img',
- 'attributes' => array(
- 'src' => $Link['element']['attributes']['href'],
- 'alt' => $Link['element']['text'],
- ),
- ),
- );
-
- $Inline['element']['attributes'] += $Link['element']['attributes'];
-
- unset($Inline['element']['attributes']['href']);
-
- return $Inline;
- }
-
- protected function inlineLink($Excerpt)
- {
- $Element = array(
- 'name' => 'a',
- 'handler' => 'line',
- 'text' => null,
- 'attributes' => array(
- 'href' => null,
- 'title' => null,
- ),
- );
-
- $extent = 0;
-
- $remainder = $Excerpt['text'];
-
- if (preg_match('/\[((?:[^][]|(?R))*)\]/', $remainder, $matches))
- {
- $Element['text'] = $matches[1];
-
- $extent += strlen($matches[0]);
-
- $remainder = substr($remainder, $extent);
- }
- else
- {
- return;
- }
-
- if (preg_match('/^[(]((?:[^ ()]|[(][^ )]+[)])+)(?:[ ]+("[^"]*"|\'[^\']*\'))?[)]/', $remainder, $matches))
- {
- $Element['attributes']['href'] = $matches[1];
-
- if (isset($matches[2]))
- {
- $Element['attributes']['title'] = substr($matches[2], 1, - 1);
- }
-
- $extent += strlen($matches[0]);
- }
- else
- {
- if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches))
- {
- $definition = $matches[1] ? $matches[1] : $Element['text'];
- $definition = strtolower($definition);
-
- $extent += strlen($matches[0]);
- }
- else
- {
- $definition = strtolower($Element['text']);
- }
-
- if ( ! isset($this->DefinitionData['Reference'][$definition]))
- {
- return;
- }
-
- $Definition = $this->DefinitionData['Reference'][$definition];
-
- $Element['attributes']['href'] = $Definition['url'];
- $Element['attributes']['title'] = $Definition['title'];
- }
-
- $Element['attributes']['href'] = str_replace(array('&', '<'), array('&', '<'), $Element['attributes']['href']);
-
- return array(
- 'extent' => $extent,
- 'element' => $Element,
- );
- }
-
- protected function inlineMarkup($Excerpt)
- {
- if ($this->markupEscaped or strpos($Excerpt['text'], '>') === false)
- {
- return;
- }
-
- if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w*[ ]*>/s', $Excerpt['text'], $matches))
- {
- return array(
- 'markup' => $matches[0],
- 'extent' => strlen($matches[0]),
- );
- }
-
- if ($Excerpt['text'][1] === '!' and preg_match('/^/s', $Excerpt['text'], $matches))
- {
- return array(
- 'markup' => $matches[0],
- 'extent' => strlen($matches[0]),
- );
- }
-
- if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\/?>/s', $Excerpt['text'], $matches))
- {
- return array(
- 'markup' => $matches[0],
- 'extent' => strlen($matches[0]),
- );
- }
- }
-
- protected function inlineSpecialCharacter($Excerpt)
- {
- if ($Excerpt['text'][0] === '&' and ! preg_match('/^?\w+;/', $Excerpt['text']))
- {
- return array(
- 'markup' => '&',
- 'extent' => 1,
- );
- }
-
- $SpecialCharacter = array('>' => 'gt', '<' => 'lt', '"' => 'quot');
-
- if (isset($SpecialCharacter[$Excerpt['text'][0]]))
- {
- return array(
- 'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';',
- 'extent' => 1,
- );
- }
- }
-
- protected function inlineStrikethrough($Excerpt)
- {
- if ( ! isset($Excerpt['text'][1]))
- {
- return;
- }
-
- if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches))
- {
- return array(
- 'extent' => strlen($matches[0]),
- 'element' => array(
- 'name' => 'del',
- 'text' => $matches[1],
- 'handler' => 'line',
- ),
- );
- }
- }
-
- protected function inlineUrl($Excerpt)
- {
- if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/')
- {
- return;
- }
-
- if (preg_match('/\bhttps?:[\/]{2}[^\s<]+\b\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE))
- {
- $Inline = array(
- 'extent' => strlen($matches[0][0]),
- 'position' => $matches[0][1],
- 'element' => array(
- 'name' => 'a',
- 'text' => $matches[0][0],
- 'attributes' => array(
- 'href' => $matches[0][0],
- ),
- ),
- );
-
- return $Inline;
- }
- }
-
- protected function inlineUrlTag($Excerpt)
- {
- if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w+:\/{2}[^ >]+)>/i', $Excerpt['text'], $matches))
- {
- $url = str_replace(array('&', '<'), array('&', '<'), $matches[1]);
-
- return array(
- 'extent' => strlen($matches[0]),
- 'element' => array(
- 'name' => 'a',
- 'text' => $url,
- 'attributes' => array(
- 'href' => $url,
- ),
- ),
- );
- }
- }
-
- # ~
-
- protected function unmarkedText($text)
- {
- if ($this->breaksEnabled)
- {
- $text = preg_replace('/[ ]*\n/', " \n", $text);
- }
- else
- {
- $text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\)\n/', " \n", $text);
- $text = str_replace(" \n", "\n", $text);
- }
-
- return $text;
- }
-
- #
- # Handlers
- #
-
- protected function element(array $Element)
- {
- $markup = '<'.$Element['name'];
-
- if (isset($Element['attributes']))
- {
- foreach ($Element['attributes'] as $name => $value)
- {
- if ($value === null)
- {
- continue;
- }
-
- $markup .= ' '.$name.'="'.$value.'"';
- }
- }
-
- if (isset($Element['text']))
- {
- $markup .= '>';
-
- if (isset($Element['handler']))
- {
- $markup .= $this->{$Element['handler']}($Element['text']);
- }
- else
- {
- $markup .= $Element['text'];
- }
-
- $markup .= ''.$Element['name'].'>';
- }
- else
- {
- $markup .= ' />';
- }
-
- return $markup;
- }
-
- protected function elements(array $Elements)
- {
- $markup = '';
-
- foreach ($Elements as $Element)
- {
- $markup .= "\n" . $this->element($Element);
- }
-
- $markup .= "\n";
-
- return $markup;
- }
-
- # ~
-
- protected function li($lines)
- {
- $markup = $this->lines($lines);
-
- $trimmedMarkup = trim($markup);
-
- if ( ! in_array('', $lines) and substr($trimmedMarkup, 0, 3) === '
')
- {
- $markup = $trimmedMarkup;
- $markup = substr($markup, 3);
-
- $position = strpos($markup, "
");
-
- $markup = substr_replace($markup, '', $position, 4);
- }
-
- return $markup;
- }
-
- #
- # Deprecated Methods
- #
-
- function parse($text)
- {
- $markup = $this->text($text);
-
- return $markup;
- }
-
- #
- # Static Methods
- #
-
- static function instance($name = 'default')
- {
- if (isset(self::$instances[$name]))
- {
- return self::$instances[$name];
- }
-
- $instance = new self();
-
- self::$instances[$name] = $instance;
-
- return $instance;
- }
-
- private static $instances = array();
-
- #
- # Fields
- #
-
- protected $DefinitionData;
-
- #
- # Read-Only
-
- protected $specialCharacters = array(
- '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|',
- );
-
- protected $StrongRegex = array(
- '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s',
- '_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us',
- );
-
- protected $EmRegex = array(
- '*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s',
- '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us',
- );
-
- protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*(?:\s*=\s*(?:[^"\'=<>`\s]+|"[^"]*"|\'[^\']*\'))?';
-
- protected $voidElements = array(
- 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source',
- );
-
- protected $textLevelElements = array(
- 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont',
- 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing',
- 'i', 'rp', 'del', 'code', 'strike', 'marquee',
- 'q', 'rt', 'ins', 'font', 'strong',
- 's', 'tt', 'sub', 'mark',
- 'u', 'xm', 'sup', 'nobr',
- 'var', 'ruby',
- 'wbr', 'span',
- 'time',
- );
-}
diff --git a/README.md b/README.md
deleted file mode 100644
index 385d7c0..0000000
--- a/README.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# Low-tech Lab - Grenoble
-
-## Local Development
-
-```bash
-# Start a PHP server
-php -S localhost:8000
-```
-
-Void
-====
-
-**Void** is a website creation tool. Just static pages or blog articles? Both are possible with [Void](https://gget.it/void).
-
-The core is done in a single PHP file of less than 100 lines of code. Huh, this is bad? See the discussion [here](https://gget.it/void/article/03).
-What about performance? See [here](https://gget.it/void/article/05-perf).
-
-Screenshot
-----
-
-[](https://gget.it/void/demo/)
-
-About
-----
-
-Author: Joseph Ernest ([@JosephErnest](https:/twitter.com/JosephErnest))
-
-Sponsors and consulting
-----
-
-I am available for Python, Data science, ML, Automation consulting. Please contact me on https://afewthingz.com for freelancing requests.
-
-Do you want to support the development of my open-source projects? Please contact me!
-
-I am currently sponsored by [CodeSigningStore.com](https://codesigningstore.com/). Thank you to them for providing a DigiCert Code Signing Certificate and supporting open source software.
-
-Credit
-----
-
-**Void** uses the [Parsedown](https://github.com/erusev/parsedown) library, licensed under MIT license.
-
-License
-----
-MIT license
-
-FAQ
-----
-
-**Question: How to add automatic code highlighting in articles / pages?**
-
-Use the library `highlight.js` by adding these three lines in the `` part of `index.php`:
-
-
-
-
-
-**Question: How to count the number of unique visitors per day (analytics)?**
-
-[See this blog article](https://gget.it/void/article/simpleanalytics).
diff --git a/article/01-welcome.md b/article/01-welcome.md
deleted file mode 100644
index a5b38d0..0000000
--- a/article/01-welcome.md
+++ /dev/null
@@ -1,7 +0,0 @@
-TITLE:First article
-DATE:2015 April 9th
-AUTHOR:Jo
-
-It's very simple to remove this useless article. Just delete the file `/article/01.txt` and that's it.
-
-
diff --git a/assets/brand.jpg b/assets/brand.jpg
deleted file mode 100644
index 6c383c5..0000000
Binary files a/assets/brand.jpg and /dev/null differ
diff --git a/index.php b/index.php
deleted file mode 100644
index 2153346..0000000
--- a/index.php
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
$pagetitle by $pageauthor, on $pagedate
";
- echo (new Parsedown())->text($pagecontent);
- echo "
";
-}
-else if ($type === "page") { echo "" . (new Parsedown())->text($pagecontent) . "
"; }
-
-if ($requestedpage === $blogpagename)
-{
- $pages = array_slice(array_reverse(glob("./article/*.{txt,md}", GLOB_BRACE)), $_GET['start'], 10);
- foreach($pages as $page)
- {
- list($pagecontent, $pagetitle, $pageauthor, $pagedate, $pagenomenu, $pageurl) = getpage($page);
- if (!$pageurl) { $pageurl = pathinfo($page)['filename']; }
- echo "$pagetitle by $pageauthor, on $pagedate
";
- echo (new Parsedown())->text($pagecontent);
- echo "
";
- }
- if ($_GET['start'] > 0) { echo " 10) ? "?start=" . ($_GET['start'] - 10) : "") . "\">Newer articles "; }
- if (count(array_slice(array_reverse(glob("./article/*.{txt,md}", GLOB_BRACE)), $_GET['start'], 11)) > 10) { echo "Older articles "; }
-}
-
-?>
-
-
-
-
-
diff --git a/localhost:8000/actions.html b/localhost:8000/actions.html
new file mode 100644
index 0000000..a04e11f
--- /dev/null
+++ b/localhost:8000/actions.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+ Low-tech Lab - Grenoble - Actions
+
+
+
+
+
+
+
+
Action locale (quartier Abbaye)
+
Texte Ă venir ...
+
Solaire Ă concentration
+
Depuis quelques années, l’association investit le champ du solaire à concentration pour des pratiques de production artisanale. Convaincu du potentiel énergétique et de la résilience écologique de ces technologies, nous proposons des formations à l’auto-construction de concentrateurs solaires auprès d’artisans ou d’entreprises travaillant dans l’alimentaire (boulangeries, restaurants, brasseries, …). Nous construisons également de toutes pièces ces concentrateurs solaires.
+Inspiré.e.s des travaux de Lytefire , Néoloco , Hélie et du Présage , nous sommes persuadé.e.s que d’autres modèles d’entreprises peuvent émerger sur ce modèle de sobriété énergétique. Nous souhaitons accompagner les personnes et les structures souhaitant utiliser ces nouvelles initiatives solaires.
+
En parallèle, l’association poursuit des axes de R&D pour continuer d’étoffer les low-tech autour du solaire à concentration : automatisation de concentrateur, four alimentaire bi-énergie (bois-solaire), nouveaux design de concentrateur, procédés thermiques, … Le tout dans une démarche libre et ouverte.
+
[Photos du lytefire de l’asso, des scouts et de Violaine ]()
+
Enseignement
+
Présentation des prestations/événements de l’asso (conférences, ateliers d’utilisation de LT, ateliers de formation de LT)
+L’association peut réaliser divers types de prestations autour des low-tech et de la démarche Low-tech.
+
Nous pouvons participer à des conférences ou des tables rondes pour apporter un point de vue sur la Low-tech, le techno-discernement ou les actions dans lesquelles nous sommes impliqué.e.s.
+
Nous proposons également des ateliers d’utilisation ou de fabrication de low-tech.
+
+
+
+
diff --git a/assets/theme-toggle.js b/localhost:8000/assets/theme-toggle.js
similarity index 100%
rename from assets/theme-toggle.js
rename to localhost:8000/assets/theme-toggle.js
diff --git a/localhost:8000/blog.html b/localhost:8000/blog.html
new file mode 100644
index 0000000..b92fce8
--- /dev/null
+++ b/localhost:8000/blog.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+ Low-tech Lab - Grenoble - Blog
+
+
+
+
+
+
+
+
Blog First article by Jo, on 2015 April 9th
It's very simple to remove this useless article. Just delete the file /article/01.txt and that's it.
+
+
+
+
+
diff --git a/localhost:8000/contact.html b/localhost:8000/contact.html
new file mode 100644
index 0000000..9b4765f
--- /dev/null
+++ b/localhost:8000/contact.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+ Low-tech Lab - Grenoble - Contact
+
+
+
+
+
+
+
+
Vous souhaitez rentrer en contact avec nous ? Ecrivez-nous !
+contact@lowtechlabgrenoble.org
+
Présentation du CA
+Présentation des salarié.es + VSC ?
+
Kévin Loeslé
+
+Présentation à venir
+
+
Félicie Beth
+
+Présentation à venir
+
+
Grégoire Pourcelot
+
+Salarié, coordinateur de projet de l’association. Issu de (dé)formation ingénieur énergie, je m’intéresse particulièrement aux applications du solaire à concentration et à l’application des outils low-tech dans une économie régénératrice. Toujours motivé pour lancer de nouveaux projets dans l’asso !
+
+
Adresse de l’asso avec plan ? (pour situer la position sur le square Barbara)
+
+
+
+
diff --git a/localhost:8000/faq.html b/localhost:8000/faq.html
new file mode 100644
index 0000000..a8594a0
--- /dev/null
+++ b/localhost:8000/faq.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+ Low-tech Lab - Grenoble - FAQ
+
+
+
+
+
+
+
+
Pas sûr qu’on en ait besoin, mais peut servir à éclarcir qqs questions récurrentes comme :
+
Est-ce que l’on recrute ?
+
+A ce jour, nous ne recrutons pas de poste permanent. Il est revanche possible d’effectuer un stage ou un service civique au sein de l’association. Merci de nous contacter à l’adresse contact@lowtechlabgrenoble.org
+
+
Est-ce que l’on récupère du matériel ?
+
+Réponse à venir
+
+
Est-ce que l’on organise des formations ?
+
+Réponse à venir
+
+
+
+
+
diff --git a/localhost:8000/i.html b/localhost:8000/i.html
new file mode 100644
index 0000000..0a664bc
--- /dev/null
+++ b/localhost:8000/i.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ Low-tech Lab - Grenoble
+
+
+
+
+
+
+
+
Page not found
+
Are you sure you entered the URL correctly?
+
Return to home page .
+
+
+
+
diff --git a/localhost:8000/index.html b/localhost:8000/index.html
new file mode 100644
index 0000000..d454938
--- /dev/null
+++ b/localhost:8000/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ Low-tech Lab - Grenoble
+
+
+
+
+
+
+
+
Page not found
+
Are you sure you entered the URL correctly?
+
Return to home page .
+
+
+
+
diff --git a/localhost:8000/index.php/actions.html b/localhost:8000/index.php/actions.html
new file mode 100644
index 0000000..f442627
--- /dev/null
+++ b/localhost:8000/index.php/actions.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+ Low-tech Lab - Grenoble - Actions
+
+
+
+
+
+
+
+
Action locale (quartier Abbaye)
+
Texte Ă venir ...
+
Solaire Ă concentration
+
Depuis quelques années, l’association investit le champ du solaire à concentration pour des pratiques de production artisanale. Convaincu du potentiel énergétique et de la résilience écologique de ces technologies, nous proposons des formations à l’auto-construction de concentrateurs solaires auprès d’artisans ou d’entreprises travaillant dans l’alimentaire (boulangeries, restaurants, brasseries, …). Nous construisons également de toutes pièces ces concentrateurs solaires.
+Inspiré.e.s des travaux de Lytefire , Néoloco , Hélie et du Présage , nous sommes persuadé.e.s que d’autres modèles d’entreprises peuvent émerger sur ce modèle de sobriété énergétique. Nous souhaitons accompagner les personnes et les structures souhaitant utiliser ces nouvelles initiatives solaires.
+
En parallèle, l’association poursuit des axes de R&D pour continuer d’étoffer les low-tech autour du solaire à concentration : automatisation de concentrateur, four alimentaire bi-énergie (bois-solaire), nouveaux design de concentrateur, procédés thermiques, … Le tout dans une démarche libre et ouverte.
+
[Photos du lytefire de l’asso, des scouts et de Violaine ]()
+
Enseignement
+
Présentation des prestations/événements de l’asso (conférences, ateliers d’utilisation de LT, ateliers de formation de LT)
+L’association peut réaliser divers types de prestations autour des low-tech et de la démarche Low-tech.
+
Nous pouvons participer à des conférences ou des tables rondes pour apporter un point de vue sur la Low-tech, le techno-discernement ou les actions dans lesquelles nous sommes impliqué.e.s.
+
Nous proposons également des ateliers d’utilisation ou de fabrication de low-tech.
+
+
+
+
diff --git a/localhost:8000/index.php/blog.html b/localhost:8000/index.php/blog.html
new file mode 100644
index 0000000..1276b1e
--- /dev/null
+++ b/localhost:8000/index.php/blog.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+ Low-tech Lab - Grenoble - Blog
+
+
+
+
+
+
+
+
Blog First article by Jo, on 2015 April 9th
It's very simple to remove this useless article. Just delete the file /article/01.txt and that's it.
+
+
+
+
+
diff --git a/localhost:8000/index.php/contact.html b/localhost:8000/index.php/contact.html
new file mode 100644
index 0000000..934a55c
--- /dev/null
+++ b/localhost:8000/index.php/contact.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+ Low-tech Lab - Grenoble - Contact
+
+
+
+
+
+
+
+
Vous souhaitez rentrer en contact avec nous ? Ecrivez-nous !
+contact@lowtechlabgrenoble.org
+
Présentation du CA
+Présentation des salarié.es + VSC ?
+
Kévin Loeslé
+
+Présentation à venir
+
+
Félicie Beth
+
+Présentation à venir
+
+
Grégoire Pourcelot
+
+Salarié, coordinateur de projet de l’association. Issu de (dé)formation ingénieur énergie, je m’intéresse particulièrement aux applications du solaire à concentration et à l’application des outils low-tech dans une économie régénératrice. Toujours motivé pour lancer de nouveaux projets dans l’asso !
+
+
Adresse de l’asso avec plan ? (pour situer la position sur le square Barbara)
+
+
+
+
diff --git a/localhost:8000/index.php/faq.html b/localhost:8000/index.php/faq.html
new file mode 100644
index 0000000..3a62b76
--- /dev/null
+++ b/localhost:8000/index.php/faq.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+ Low-tech Lab - Grenoble - FAQ
+
+
+
+
+
+
+
+
Pas sûr qu’on en ait besoin, mais peut servir à éclarcir qqs questions récurrentes comme :
+
Est-ce que l’on recrute ?
+
+A ce jour, nous ne recrutons pas de poste permanent. Il est revanche possible d’effectuer un stage ou un service civique au sein de l’association. Merci de nous contacter à l’adresse contact@lowtechlabgrenoble.org
+
+
Est-ce que l’on récupère du matériel ?
+
+Réponse à venir
+
+
Est-ce que l’on organise des formations ?
+
+Réponse à venir
+
+
+
+
+
diff --git a/localhost:8000/index.php/index.html b/localhost:8000/index.php/index.html
new file mode 100644
index 0000000..c75341f
--- /dev/null
+++ b/localhost:8000/index.php/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ Low-tech Lab - Grenoble
+
+
+
+
+
+
+
+
Page not found
+
Are you sure you entered the URL correctly?
+
Return to home page .
+
+
+
+
diff --git a/localhost:8000/index.php/ressources.html b/localhost:8000/index.php/ressources.html
new file mode 100644
index 0000000..ab5f55e
--- /dev/null
+++ b/localhost:8000/index.php/ressources.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+ Low-tech Lab - Grenoble - Ressources
+
+
+
+
+
+
+
+
Présentation des LT disponibles en prêt à prix libre & de la procédure (Si pas dans “Actions de l’asso”)
+
L’association dispose d’un petit pannel de low-tech empruntable à prix libre. Pour les emprunter, il suffit de contacter l’association via le mail contact@lowtechlabgrenoble.org et de demander à emprunter les low-tech. Une formation par un membre de l’association de 10/15 minutes est obligatoire. Ceci permet de bien comprendre et de bien utiliser les low-tech. L’emprunt se fait à prix libre.
+
Liste des low-tech :
+
+Lampe solaire
+Fours solaires (plusieurs types)
+Marmite norvégienne
+Machine à coudre mécanique
+Cuiseurs bois collectif (poêle à paëlla, wok, billig)
+Smoocyclette
+Vélo générateur
+BommBike (vélo amplificateur de son pour mettre de la musique ou animer des conférences)
+
+
Liens utiles
+
+
+
+
+
diff --git a/localhost:8000/ressources.html b/localhost:8000/ressources.html
new file mode 100644
index 0000000..6804b99
--- /dev/null
+++ b/localhost:8000/ressources.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+ Low-tech Lab - Grenoble - Ressources
+
+
+
+
+
+
+
+
Présentation des LT disponibles en prêt à prix libre & de la procédure (Si pas dans “Actions de l’asso”)
+
L’association dispose d’un petit pannel de low-tech empruntable à prix libre. Pour les emprunter, il suffit de contacter l’association via le mail contact@lowtechlabgrenoble.org et de demander à emprunter les low-tech. Une formation par un membre de l’association de 10/15 minutes est obligatoire. Ceci permet de bien comprendre et de bien utiliser les low-tech. L’emprunt se fait à prix libre.
+
Liste des low-tech :
+
+Lampe solaire
+Fours solaires (plusieurs types)
+Marmite norvégienne
+Machine à coudre mécanique
+Cuiseurs bois collectif (poêle à paëlla, wok, billig)
+Smoocyclette
+Vélo générateur
+BommBike (vélo amplificateur de son pour mettre de la musique ou animer des conférences)
+
+
Liens utiles
+
+
+
+
+
diff --git a/style.css b/localhost:8000/style.css
similarity index 100%
rename from style.css
rename to localhost:8000/style.css
diff --git a/page/01-home.md b/page/01-home.md
deleted file mode 100644
index 19466ba..0000000
--- a/page/01-home.md
+++ /dev/null
@@ -1,69 +0,0 @@
-TITLE:Accueil
-NOMENU:1
-
-
-![Photo de l'équipe ?]()
-
-# Présentation de l'asso
-
-Le Low-tech Lab Grenoble est une association loi 1901 reconnue d’intérêt général.
-Fondée en 2019, l’association promeut la démarche Low-tech et les systèmes low-tech (technologies et savoirs répondant aux critères utile, durable et accessible). Elle représente l’antenne grenobloise du large archipèle des Low-tech Labs.
-
-**Objet de l’association :**
-développer la résilience locale et collective, diffuser savoirs et techniques simples et accessibles aux citoyens, promouvoir et rechercher des solutions qui répondent à des problématiques d’habitat, d’autonomie en eau, énergie, alimentation ou matériaux, pour un meilleur respect de la nature, des cultures et des ressources propres à chaque territoire.
-
-# Comment nous rejoindre ?
-Vous avez envie de nous rendre visite ? Vous êtes curieux.se des low-tech ? Vous voulez en savoir plus sur l’association ? Venez aux forums de l’association ! C’est tous les premiers mercredis du mois au local de l’asso (18h). On y parle low-tech, transition, écologie, projets personnels, … Et on cuisine au cuiseur bois pour celleux qui sont là ! Bref de bons moments conviviaux pour échanger toustes ensemble !
-
-Pour les adhérents de l’association, on propose un temps collectif tous les 3e mercredis du mois au local (18h).
-C’est un temps collectif de partage (débat, cercle de parole, savoir-faire, bricolage, …)
-
-Pour les bénévoles investis dans la CA, les 2e mercredi du mois nous organisons la réunion de gouvernance partagé au local (18h). On parle des projets de l’association, des stratégies de l’association, des sujets de gouvernance, des prises de décision, … Le tout de manière partagée et ouverte !
-
-# Ils nous soutiennent !
-
-**Institutions**
-
-- [Ville de Grenoble](#)
-- [Métro](#)
-- [Département](#)
-- [Etat](#)
-- [Union Européenne (Erasmus+)](#)
-
-**Partenaires**
-
-- [Fondation GEG](#)
-- [Enerdata](#)
-
-# Nous travaillons ensemble !
-
-- [Actis](#)
-- [Mairies sur le projet Abbaye](#)
-- [SolarFire](#)
-- [Kerlotec](#)
-- [ENSAM](#)
-- [Parc régional des Monts d’Ardèche](#)
-- [Scouts et Guides de France](#)
-- [INRAE](#)
-- [La Ligue de l’Enseignement 38](#)
-- [Bar Radis](#)
-- [Au Local](#)
-- [Laboratoire PACTE](#)
-- [IUGA](#)
-- [UGA](#)
-- [ENSE3 et Grenoble-INP](#)
-- [Au Grès du Soleil](#)
-
-# Devenez mécène !
-
-Vous souhaitez faire du mécénat avec l’association ? C’est possible !
-Savez-vous qu’il existe 3 types de mécénat ?
-- Le mécénat financier, le plus connu.
-- Le mécénat en nature, il s’agit de donner du matériel ou prêter des biens (local, outillages, matériaux, …)
-- Le mécénat de compétences, il s’agit de mettre à disposition pour l’association du temps de travail d’un employé d’une entreprise (et de la fonction publique aussi !). Plein de compétences peuvent être valorisées à travers le mécénat de compétence : comptabilité, développement web, communication, juridique, ingénierie, artisanat, coup de main, …
-
-Ces 3 types de mécénat sont défiscalisables sur vos impôts (particulier et entreprise). Si vous êtes intéressé.e, contactez-nous !
-
-[Agenda](/agenda)
-[Inscription Ă l'infolettre](/infolettre)
- Low-tech Lab national
\ No newline at end of file
diff --git a/page/02-actions.md b/page/02-actions.md
deleted file mode 100644
index b0e9fbf..0000000
--- a/page/02-actions.md
+++ /dev/null
@@ -1,24 +0,0 @@
-TITLE:Actions
-
-# Action locale (quartier Abbaye)
-
-Texte Ă venir ...
-
-# Solaire Ă concentration
-
-Depuis quelques années, l’association investit le champ du solaire à concentration pour des pratiques de production artisanale. Convaincu du potentiel énergétique et de la résilience écologique de ces technologies, nous proposons des formations à l’auto-construction de concentrateurs solaires auprès d’artisans ou d’entreprises travaillant dans l’alimentaire (boulangeries, restaurants, brasseries, …). Nous construisons également de toutes pièces ces concentrateurs solaires.
-Inspiré.e.s des travaux de [Lytefire](https://lytefire.com/fr), [Néoloco](https://neoloco.fr/), [Hélie](https://microbrasseriehelie.odoo.com/) et du [Présage](https://lepresage.fr/), nous sommes persuadé.e.s que d’autres modèles d’entreprises peuvent émerger sur ce modèle de sobriété énergétique. Nous souhaitons accompagner les personnes et les structures souhaitant utiliser ces nouvelles initiatives solaires.
-
-En parallèle, l’association poursuit des axes de R&D pour continuer d’étoffer les low-tech autour du solaire à concentration : automatisation de concentrateur, four alimentaire bi-énergie (bois-solaire), nouveaux design de concentrateur, procédés thermiques, … Le tout dans une démarche libre et ouverte.
-
-[*Photos du lytefire de l’asso, des scouts et de Violaine*]()
-
-# Enseignement
-
-Présentation des prestations/événements de l’asso (conférences, ateliers d’utilisation de LT, ateliers de formation de LT)
-L’association peut réaliser divers types de prestations autour des low-tech et de la démarche Low-tech.
-
-Nous pouvons participer à des conférences ou des tables rondes pour apporter un point de vue sur la Low-tech, le techno-discernement ou les actions dans lesquelles nous sommes impliqué.e.s.
-
-Nous proposons également des ateliers d’utilisation ou de fabrication de low-tech.
-
diff --git a/page/03-contact.md b/page/03-contact.md
deleted file mode 100644
index 325f2ed..0000000
--- a/page/03-contact.md
+++ /dev/null
@@ -1,21 +0,0 @@
-TITLE:Contact
-
-Vous souhaitez rentrer en contact avec nous ? Ecrivez-nous !
-[contact@lowtechlabgrenoble.org](mailto:contact@lowtechlabgrenoble.org)
-
-Présentation du CA
-Présentation des salarié.es + VSC ?
-
-**Kévin Loeslé**
-
-> Présentation à venir
-
-**Félicie Beth**
-
-> Présentation à venir
-
-**Grégoire Pourcelot**
-
-> Salarié, coordinateur de projet de l’association. Issu de (dé)formation ingénieur énergie, je m’intéresse particulièrement aux applications du solaire à concentration et à l’application des outils low-tech dans une économie régénératrice. Toujours motivé pour lancer de nouveaux projets dans l’asso !
-
-Adresse de l’asso avec plan ? (pour situer la position sur le square Barbara)
diff --git a/page/04-ressources.md b/page/04-ressources.md
deleted file mode 100644
index 8dabb6a..0000000
--- a/page/04-ressources.md
+++ /dev/null
@@ -1,22 +0,0 @@
-TITLE:Ressources
-
-# Présentation des LT disponibles en prêt à prix libre & de la procédure (Si pas dans “Actions de l’asso”)
-
-L’association dispose d’un petit pannel de low-tech empruntable à prix libre. Pour les emprunter, il suffit de contacter l’association via le mail [contact@lowtechlabgrenoble.org](mailto:contact@lowtechlabgrenoble.org) et de demander à emprunter les low-tech. Une formation par un membre de l’association de 10/15 minutes est obligatoire. Ceci permet de bien comprendre et de bien utiliser les low-tech. L’emprunt se fait à prix libre.
-
-Liste des low-tech :
-- Lampe solaire
-- Fours solaires (plusieurs types)
-- Marmite norvégienne
-- Machine à coudre mécanique
-- Cuiseurs bois collectif (poêle à paëlla, wok, billig)
-- Smoocyclette
-- Vélo générateur
-- BommBike (vélo amplificateur de son pour mettre de la musique ou animer des conférences)
-
-# Liens utiles
-
-- Les tutos du LTLGrenoble & de ses membres sur le wiki national : [Wiki LTLNational](https://wiki.lowtechlab.org)
-- D'autres liens utiles sur la LT (CF site national) : [Agenda national](https://lowtechlab.org/fr/les-outils/agenda), [Annuaire national](https://lowtechlab.org/fr/les-outils/annuaire)
-- [Solar Low-tech Magazine](https://solar.lowtechmagazine.com/fr)
-- *Les articles sur le blog du LTLNational (si pas hébergés chez nous) : [https://lowtechlab.org/fr/actualites-blog](https://lowtechlab.org/fr/actualites-blog)*
\ No newline at end of file
diff --git a/page/05-faq.md b/page/05-faq.md
deleted file mode 100644
index 82cd4e5..0000000
--- a/page/05-faq.md
+++ /dev/null
@@ -1,15 +0,0 @@
-TITLE:FAQ
-
-Pas sûr qu’on en ait besoin, mais peut servir à éclarcir qqs questions récurrentes comme :
-
-**Est-ce que l’on recrute ?**
-
-> A ce jour, nous ne recrutons pas de poste permanent. Il est revanche possible d’effectuer un stage ou un service civique au sein de l’association. Merci de nous contacter à l’adresse [contact@lowtechlabgrenoble.org](contact@lowtechlabgrenoble.org)
-
-**Est-ce que l’on récupère du matériel ?**
-
-> Réponse à venir
-
-**Est-ce que l’on organise des formations ?**
-
-> Réponse à venir
diff --git a/page/06-blog.md b/page/06-blog.md
deleted file mode 100644
index 1aeaf51..0000000
--- a/page/06-blog.md
+++ /dev/null
@@ -1,3 +0,0 @@
-TITLE:Blog
-
-#Blog
\ No newline at end of file
diff --git a/page/HIDDEN-404.txt b/page/HIDDEN-404.txt
deleted file mode 100644
index 0b51ff1..0000000
--- a/page/HIDDEN-404.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-NOMENU:1
-
-#Page not found
-
-Are you sure you entered the URL correctly?
-
-Return to [home page](.).
\ No newline at end of file