First off, if you’re not familiar with WorkFlowy you may want to watch this video. WorkFlowy is quite simply a list maker and based on my own usage of planning out a program / script I decided to create a script to take an exported list and convert it into a the workings of the program itself.
The script that I wrote is in PHP and only generates PHP files. I lost interest in the project, at least in the capacity of adding support for additional languages, so I took it down from my github (oh yeah, and no one was interested in the project itself ;))
At best, you can use this to take a list like this:
- My Script
- [IF] Check if file exists
- Reads the file in
- [FOREACH] Loops through the data
- [IF] Check if the data is empty
- Processes the data
- [ELSE]
- Does some other stuff
- Closes the file
- [WHILE] Just a while loop
- Increment counter
And turn it into something like this:
<?php
/**
* My Script
*/
// Check if file exists
if ($var == true)
{
}
// Reads the file in
// Loops through the data
foreach ($array as $key => $value)
{
// Check if the data is empty
if ($var == true)
{
// Processes the data
}
else
{
// Does some other stuff
}
}
// Closes the file
// Just a while loop
while ($i < 10)
{
// Increment counter
}
?>
Assuming you’re into that, here’s the source:
<!DOCTYPE html>
<html>
<body>
<h1>WorkFlowy Code Generator</h1>
<form action="" method="post">
<textarea name="list" rows="20" cols="100"><?php
if (isset($_POST['list']))
{
$items = explode("n", $_POST['list'
if (count($items) > 0)
{
$indents = null
$previous_spaces = null
$parenthesis = 0
foreach ($items as $item)
{
preg_match('/^( +)?(- )(.+)$/', $item, $matches
$spaces = strlen($matches[1
$item = trim($matches[3
$is_syntax = (strpos($item, '[') === 0
if ($item != '')
{
if ($indents === null)
{
$indents = 0
echo '<?php' . "nn"
echo '/**' . "n" . ' * ' . $item . "n" . ' */' . "nn"
}
else
{
if ($previous_spaces !== null)
{
if ($previous_spaces > $spaces)
{
$difference = $previous_spaces - $spaces
for ($i = 0 $i < $difference $i = $i + 2)
{
$indents--
if ($parenthesis > 0)
{
echo str_repeat("t", $indents) . '}' . "nn"
$parenthesis--
}
}
}
elseif ($previous_spaces < $spaces)
{
$difference = $spaces - $previous_spaces
for ($i = 0 $i < $difference $i = $i + 2)
{
$indents++
}
}
else
{
if ($parenthesis > 0)
{
echo $indent_string . '}' . "nn"
$parenthesis--
}
}
}
$indent_string = str_repeat("t", $indents
if ($is_syntax)
{
preg_match('/^([.+])(.+)?$/', $item, $matches
$type = substr($matches[1], 1, strlen($matches[1]) - 2
$item = trim($matches[2
}
else
{
$type = false
}
if ($item != '')
{
echo $indent_string . '// ' . $item . "n"
}
if ($type != false)
{
switch ($type)
{
case 'FOR':
echo $indent_string . 'for ($i = 0; $i < 10; $i++)' . "n" . $indent_string . '{'
break
case 'FOREACH':
echo $indent_string . 'foreach ($array as $key => $value)' . "n" . $indent_string . '{'
break
case 'IF':
echo $indent_string . 'if ($var == true)' . "n" . $indent_string . '{'
break
case 'ELSEIF':
echo $indent_string . 'elseif ($var == false)' . "n" . $indent_string . '{'
break
case 'ELSE':
echo $indent_string . 'else' . "n" . $indent_string . '{'
break
case 'WHILE':
echo $indent_string . 'while ($i < 10)' . "n" . $indent_string . '{'
break
}
$parenthesis++
}
echo "n"
$previous_spaces = $spaces
}
}
}
if ($parenthesis > 0)
{
echo '}' . "nn"
}
echo '?>'
}
}
?></textarea>
<input type="submit" />
</form>
</body>
</html>