summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsiddharth <rsiddharth@ninthfloor.org>2012-12-26 21:31:18 +0530
committerrsiddharth <rsiddharth@ninthfloor.org>2012-12-26 21:31:18 +0530
commit54e4ec0cc7f0b58e747729a0c5260044ca4c370f (patch)
tree0f0396ca8af98ba777caae546231aeb96bb55c4d
parent7f46c19441f6690bde92c1359c535321cb8c3025 (diff)
parent2707017336aa14d20e9c8e4261a83598d7c03662 (diff)
merged from devel branch. this is going to labelled version 0.1.0.
removed: TODO docs/scruf added: README docs/scruf-howto.html docs/scruffy-markup.html docs/style.css etc/ etc/TODO etc/scruf-art modified: conversion/ConvertDirectory.java parsers/Footer.java
-rw-r--r--README146
-rw-r--r--conversion/ConvertDirectory.java13
-rw-r--r--docs/scruf88
-rw-r--r--docs/scruf-howto.html258
-rw-r--r--docs/scruffy-markup.html298
-rw-r--r--docs/style.css180
-rw-r--r--etc/TODO (renamed from TODO)41
-rw-r--r--etc/scruf-art18
-rw-r--r--parsers/Footer.java2
9 files changed, 920 insertions, 124 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..724e656
--- /dev/null
+++ b/README
@@ -0,0 +1,146 @@
+scruf
+=====
+
+scruf is a simple program that converts marked up files to
+corresponding valid HTML5 files.
+
+The markup that is understood by scruf is called the "scruffy"
+markup. To learn about the scruffy markup look at
+manual/scruffy-markup.html file.
+
+To get the up to date information about scruf, visit its homepage[1].
+
+[1]: http://nongnu.org/scruf/
+
+License
+=======
+
+scruf is free software[2] and it is licensed under the GNU General
+Public License version 3 or later.
+
+The COPYING file contains the full text of the GNU General Public
+License version 3.
+
+[2]: http://www.gnu.org/philosophy/free-sw.html
+
+The style sheet, style.css, in styling/ is dedicated to the public
+domain.
+
+Platform
+========
+
+At present scruf can be used in GNU/Linux based operating
+systems. Since scruf is written in Java, it might work on other
+platforms like Windows, Mac, etc.
+
+scruf was not test in platforms other than GNU/Linux, so it might not
+work as it should in platforms other than GNU/Linux, even if it
+compiles successfully.
+
+Dependencies
+============
+
+To compile and run scruf, the OpenJDK[3] is need. Instructions are
+provided in manual/scruf-howto.html on how to install the JDK.
+
+[3]: http://openjdk.java.net
+
+Installation
+============
+
+The source has to be compiled with the `javac' command, with that, the
+installation is done. For instruction on compiling the scruf source,
+see manual/scruf-howto.html.
+
+Overview of the scruf source
+============================
+
+This section is for folks who wish to read/explore/hack/study/etc the
+source code.
+
+* Run.java : This is entry point for scruf. It contains the `main'
+ function starts the nuts & bolts of scruf.
+
+* parser/ : This directory contains all the `Parsers' and
+ related classes.
+
+ The 'Parser' interface is defined in Parser.java and all parsers
+ implement this interface.
+
+ The functionality of a Parser is to convert a specific scruffy
+ markup into corresponding HTML5 element. For instance, the `Link'
+ parser converts scruffy marked up links into corresponding HTML5
+ links; The `CodeBlocks' parsers looks for code blocks in the marked up
+ file and converts the block into a HTML5 code block.
+
+ `ParserList' class contains a list of all parsers that is used to
+ convert a scruffy markup file to valid HTML5.
+
+* conversion/ : Contains classes responsible for traversing
+ directories looking for scruffy marked up files & feeding the marked
+ up files to a list of parsers to convert into HTML5
+
+ `ConvertDirectory' class recursively traverses a directories & when
+ it finds a scruffy marked up file, it gives it to the `ConvertFile'
+ class to perform HTML5 conversion.
+
+ `ConvertFile' gets a scruffy marked up file and feeds the file to a
+ list of parsers to convert to HTML5 and writes the converted HTML5
+ file to the disk.
+
+ + ignore/ : This directory contains a class which help identify
+ sub-directories that are to be ignored.
+
+* index/ : Contains the `IndexCreator' class which adds links to newly
+ converted HTML5 files to the directory's `index.scruffy' file
+
+ `index.scruffy' is created in directories that have scruffy marked
+ up files and it contains a list of links to all the HTML5 files
+ converted by scruf.
+
+* io/ : Contains classes for reading/writing files.
+
+* status/ : Contains the `PresentFile' class which has the details
+ about the marked up file that is being converted to HTML5.
+
+ The `DirectoryInfo' class has the `level' of the directory being
+ traversed with respect to the `root' directory.
+
+ The `root' directory is the top level directory given by the user to
+ perform HTML5 conversion.
+
+* styling/ : This directory contains the StyleChecker class which
+ makes sure that every directory, that has a scruffy marked up file,
+ contains a dedicated style sheet -- style.css.
+
+ The style.css is the default style sheet used by scruf.
+
+* docs/ directory: Contains documentation on how to install and use
+ scruf.
+
+Mailing List
+============
+
+All public discussion regarding the scruf project happens in the
+scruf-friends[4] mailing list.
+
+If you want help or have issues using scruf or wish to contribute to
+the scruf project or desire to give vent to your thoughts about scruf,
+the scruf-friends[4] list is the right place.
+
+[4]: https://lists.nongnu.org/mailman/listinfo/scruf-friends
+
+Report a Bug
+============
+
+Found scruf has gone bonkers or it is not working the way it has to?
+Just file a bug report[5] about it. Please also provide your contact
+information if it is required.
+
+[5]: http://savannah.nongnu.org/bugs/?group=scruf&func=additem
+
+Author
+======
+
+scruf is authored & maintained by rsiddharth
+<rsiddharth@ninthfloor.org>. \ No newline at end of file
diff --git a/conversion/ConvertDirectory.java b/conversion/ConvertDirectory.java
index 87a0145..5a8cb17 100644
--- a/conversion/ConvertDirectory.java
+++ b/conversion/ConvertDirectory.java
@@ -32,7 +32,6 @@ public class ConvertDirectory {
private CanConvert canConvert;
private boolean can;
private StyleChecker styleSheet;
- private boolean styleFlag;
public ConvertDirectory() {
html = new ConvertFile();
canConvert = new CanConvert();
@@ -51,8 +50,6 @@ public class ConvertDirectory {
IndexCreator index = new IndexCreator(directory);
// iterate through the directory.
System.out.println("Current Directory: "+directory.getAbsolutePath());
- // reset styleFlag.
- styleFlag = false;
for(File file:directory.listFiles(new FileSieve())) {
if(file.isFile()) {
can = canConvert.check(file);
@@ -60,8 +57,9 @@ public class ConvertDirectory {
System.out.println("Converting..."+file.getAbsolutePath());
html.convert(file);
index.add(file);
- // set styleFlag.
- styleFlag = true;
+ // check for style sheet in the directory; create/update
+ // if needed.
+ styleSheet.check(directory);
}
}
else if(file.isDirectory()) {
@@ -73,11 +71,6 @@ public class ConvertDirectory {
}
}
}
- // if styleFlag is set, check for style sheet in
- // in the directory.
- if(styleFlag) {
- styleSheet.check(directory);
- }
boolean convertIndex = (index.shouldConvert() ||
canConvert.check(index.indexFile()));
if(convertIndex) {
diff --git a/docs/scruf b/docs/scruf
deleted file mode 100644
index 63f0b3e..0000000
--- a/docs/scruf
+++ /dev/null
@@ -1,88 +0,0 @@
-scruf - documentation
-
-==========
-scruf - documentation
-==========
-
- ''scruf'' is a simple program that converts text marked-up in
-''scruffy'' mark-up to HTML5 files. It was written specifically for
-generating blog posts. The way ''scruf'' works is straight forward --
-it takes in directory and converts all the ''scruffy'' marked-up
-plain-text files into corresponding HTML5 files. After the conversion,
-''scruf'' puts links to the generated HTML5 files in the `index.html`
-file of that directory. So, that's how ''scruf'' works.
-
-====================
-using scruf
-====================
-
-Before you plunge into learning about scruf and eventually using
-it. Let me run you through the pre-requisites.
-
- '''Paraphernalia''': ''scruf'' is written in Java, therefore, you'll
- need the `openjdk` package, inorder to be able to compile and run
- scruf. Go ahead and install `openjdk` before proceeding
- forward. Number two, ''scruf'' was written on a GNU/Linux machine,
- so, it should work well on all Unix-based operating systems.
-
-Once, you have a copy of `openjdk` installed on your machine, you're
-all set to start licking ''scruf''. Here we go.
-
-==============================
-scruffy mark-up
-==============================
-
-Inorder to convert plain-text files into HTML5 using ''scruf'', you
-got to mark it up with the ''scruff'' mark-up, so that ''scruf''
-understands the elements of the plain-text document and duly converts
-them into HTML5. As the name suggests ''scruffy'' mark is pretty
-shabby when compared to cleaner mark-ups like
-[[http://daringfireball.net/projects/markdown/|Markdown]]. ''scruffy''
-is inspired, to an extent, from [[http://moinmo.in/|MoinMoin]] &
-[[http://www.mediawiki.org/wiki/MediaWiki|MediaWiki]] syntax.
-
-
-========================================
-basic structure
-========================================
-
-The ''scruffy'' plain-text document that is going to be converted by
-''scruf'', follows a format and here it is:
-
-###
-
-title
-
-==========
-foo heading
-==========
-
-$$$ 1 January 1970 $$$
-
-The bar blog post goes like this...
-...
-...
-the bar blog post ends
-
-----------------------------------------------------------------------
-author's signature
-----------------------------------------------------------------------
-
-###
-
-The first line in the ''scruffy'' document __must__ always begin with
-the text of the title of the document. The ''title'' is the string
-that is going to be displayed on the browser tabs and for compliance
-sake, it is recommended that it be same as the ''heading'' of the
-''scruffy'' document. Followed by the ''title'' is the heading, then
-the body of the post/essay/whatever and finally the author's
-signature. This is the basic structure of a ''scruffy'' document.
-
-
-========================================
-syntax
-========================================
-
-==============================
-running scruf
-==============================
diff --git a/docs/scruf-howto.html b/docs/scruf-howto.html
new file mode 100644
index 0000000..09eb543
--- /dev/null
+++ b/docs/scruf-howto.html
@@ -0,0 +1,258 @@
+<!DOCTYPE html>
+<head>
+<meta charset="UTF-8">
+ <link rel="stylesheet" type="text/css" href="style.css" />
+<meta name="author" content=" rsiddharth">
+<title> scruf manual</title></head>
+<body>
+<article>
+
+
+
+<h1> scruf manual </h1>
+
+<h2> scruf </h2>
+
+<p>
+scruf is a dirty, but minimalistic, program that spits out valid HTML5
+files from marked up plain text files.
+</p>
+
+<h3> scruffy markup </h3>
+
+<p>
+The markup that is understood by scruf is called <i>scruffy</i>. The
+<i>scruffy</i> markup is inspired from
+<a href="http://moinmo.in/HelpOnMoinWikiSyntax">MoinMoin's markup</a>.
+</p>
+
+<p>
+To learn about the syntax and details about the <i>scruffy</i> markup,
+take a look at the <a href="./scruffy-markup.html">documentation page</a> of
+<i>scruffy</i> markup.
+</p>
+
+<h2> how scruf works </h2>
+
+<p>
+The way scruf works is darn straightforward. You give it a directory
+and it recursively checks for <i>scruffy</i> marked up files and converts
+them into valid HTML5.
+</p>
+
+<p>
+In each directory that contains <i>scruffy</i> marked up files, scruf
+automatically creates an <span class="monospace">index&#46;scruffy</span> file and a corresponding
+<span class="monospace">index&#46;html</span>,to which it appends links to all the HTML5 files that it
+has converted.
+</p>
+
+<p>
+scruf provides its own style sheet which is placed in each directory
+that has HTML5 files produced by scruf.
+</p>
+
+<h2> using scruf </h2>
+
+<p>
+At present, scruf is cursed to only run on GNU/Linux based operating
+systems.
+</p>
+
+<p>
+scruf is written in Java, therefore, there is a strong possibility
+that it could work out of the box in Windows, Mac, etc. But, be aware
+that it was never tested in platforms other than GNU/Linux, so there
+is no assurance that it <i>will</i> work as it should on other platforms.
+</p>
+
+<p>
+To be able to use scruf, the <span class="monospace">openjdk</span> package is required, in order to
+compile and run scruf.
+</p>
+
+<h3> installing the jdk </h3>
+
+<p>
+On a <a href="http://www.debian.org/">Debian</a> GNU/Linux based system, the JDK
+can be installed with:
+</p>
+
+<div class="code"><br /> &#35; apt&#45;get update<br /> &#35; apt&#45;get install default&#45;jdk<br /></div>
+
+<p>
+If the above <span class="monospace">install</span> command does not work, do:
+</p>
+
+<div class="code"><br /> &#35; apt&#45;cache search jdk <br /></div>
+
+<p>
+to find the appropriate package name for the JDK and then install the
+package with:
+</p>
+
+<div class="code"><br /> &#35; apt&#45;get install appropriate&#45;package&#45;name<br /></div>
+
+<p>
+For installing the JDK on other GNU/Linux systems, take a look at
+openjdk's <a href="http://openjdk.java.net/">homepage</a> for more information.
+</p>
+
+<h3> compiling scruf </h3>
+
+<p>
+You must compile scruf's source files, before it can be run to eat
+your <i>scruffy</i> marked up files.
+</p>
+
+<p>
+Extract the tar archive and <span class="monospace">cd</span> to scruf's territory:
+</p>
+
+<div class="code"><br /> &#36; tar &#45;xvzf scruf&#45;X&#46;X&#46;X&#46;tar&#46;gz<br /> &#36; cd scruf&#45;X&#46;X&#46;X&#47;<br /></div>
+
+<p>
+The 'X's represent the version number of the scruf package.
+</p>
+
+<p>
+The compilation procedure is arduous at present, it will be made
+simpler and nicer in the future to come.
+</p>
+
+<p>
+Here's how the source is compiled at present:
+</p>
+
+<div class="code"><br /> &#36; javac scruf&#47;&#42;&#46;java<br /> &#36; javac scruf&#47;&#42;&#47;&#42;&#46;java<br /> &#36; javac scruf&#47;&#42;&#47;&#42;&#47;&#42;&#46;java<br /></div>
+
+<p>
+By now, scruf is cooked and read to be exploited by your sweet
+hands.
+</p>
+
+<h3> convert <i>scruffy</i> files to HTML5 </h3>
+
+<p>
+To convert <i>scruffy</i> marked up files, <span class="monospace">cd</span> to the directory where
+scruf is:
+</p>
+
+<div class="code"><br /> &#36; cd &#47;path&#47;to&#47;scruf&#45;X&#46;X&#46;X&#47;<br /></div>
+
+<p>
+and do:
+</p>
+
+<div class="code"><br /> &#36; java scruf&#46;Run &#47;path&#47;to&#47;scruffy&#45;files&#45;directory&#47;<br /></div>
+
+<p>
+scruf will convert the <i>scruffy</i> marked up files and place the
+generated HTML5 files in the same directory where the <i>scruffy</i>
+marked up files reside.
+</p>
+
+<p>
+The HTML5 files, generated by scruf, <u>must not</u> be manually edited,
+if you wish to edit a HTML5 file, edit the corresponding <i>scruffy</i> marked
+up file and generate the HTML5 files again by doing:
+</p>
+
+<div class="code"><br /> &#36; java scruf&#46;Run<br /></div>
+
+<p>
+As is seen above, it is not required to give the path to the <i>scruffy</i>
+files directory every time. scruf is intelligent enough to remember
+the directory. So from the second time on, it is just enough to run
+the program.
+</p>
+
+<p>
+When a directory is given to scruf, when it is invoked:
+</p>
+
+<div class="code"><br /> &#36; java scruf&#46;Run &#47;path&#47;to&#47;directory<br /></div>
+
+<p>
+It stores the absolute path of the directory in <span class="monospace">&#126;&#47;&#46;scruf&#47;list</span>.
+</p>
+
+<p>
+Every time, scruf is run:
+</p>
+
+<div class="code"><br /> &#36; java scruf&#46;Run<br /></div>
+
+<p>
+it checks all the directories is the <span class="monospace">list</span> for new/modified <i>scruffy</i>
+marked up files and converts them into HTML5.
+</p>
+
+<h3> ignoring directories </h3>
+
+<p>
+As previously mentioned, scruf recursively checks the given directory
+to find <i>scruffy</i> marked up files. There will be times when it doesn't
+make sense to let scruf loiter in sub-directories. It is possible to
+tell scruf to ignore the respective sub-directories.
+</p>
+
+<p>
+To do this, create a <span class="monospace">&#46;ignored</span> file in the respective directory and
+list all the sub-directories that has to be ignored. The
+sub-directories listed in <span class="monospace">&#46;ignored</span> should be line seperated.
+</p>
+
+<p>
+For instance, if <span class="monospace">audio&#47;</span>, <span class="monospace">video&#47;</span>, <span class="monospace">images&#47;</span> are the
+sub-directories, that are to be ignored by scruf in the respective
+directory. The <span class="monospace">&#46;ignore</span> file, in this case, will look like this:
+</p>
+
+<div class="code"><br />audio&#47;<br />video&#47;<br />images&#47;<br /></div>
+
+<h2> Cascading Style Sheets(CSS) </h2>
+
+<p>
+scruf places <span class="monospace">style&#46;css</span> in each directory in which it finds a <i>scruffy</i>
+marked up file. Feel free to edit &amp; modify the style sheet. but please
+remember not to change/remove the <u>names</u> of <span class="monospace">classes</span>, it may
+mess up the formatting of all the HTML5 files that are dependent on the
+style sheet.
+</p>
+
+<p>
+The <a href="./style.css">style.css</a> is valid CSS3.
+</p>
+
+<h2> have problems? </h2>
+
+<p>
+If there are/is any issue(s) with using scruf or understanding how it
+works. Please subscribe &amp; send an email to the
+<a href="http://lists.nongnu.org/mailman/listinfo/scruf-friends">scruf-friends</a>
+mailing list. That way we can solve your problem together.
+</p>
+
+
+<footer>a <i>scruffy</i> howto.</footer>
+
+
+ <div class="source">
+
+ <a href="./scruf-howto.scruffy">source</a>
+ </div>
+<div class="back">
+<a href="./"> back </a>
+</div>
+</article>
+
+<div class="lastupdate">
+ Last Updated on: 21 December, 2012</div>
+
+<div class="scruf">
+<a href="http://nongnu.org/scruf/">powered by scruf</a>
+</div>
+
+</body>
+</html>
diff --git a/docs/scruffy-markup.html b/docs/scruffy-markup.html
new file mode 100644
index 0000000..c367a5b
--- /dev/null
+++ b/docs/scruffy-markup.html
@@ -0,0 +1,298 @@
+<!DOCTYPE html>
+<head>
+<meta charset="UTF-8">
+ <link rel="stylesheet" type="text/css" href="style.css" />
+<meta name="author" content=" rsiddharth">
+<title> the scruffy markup</title></head>
+<body>
+<article>
+
+
+
+<h1> the scruffy markup </h1>
+
+<p>
+ <i>scruffy</i> is the markup that is understood by scruf.
+</p>
+
+<p>
+All <i>scruffy</i> marked up documents must have a <span class="monospace">&#46;scruffy</span> extension
+-- that is how scruf comes to know that a particular file is, indeed,
+a <i>scruffy</i> document.
+</p>
+
+<p>
+The following sections will get you acquainted with the <i>scruffy</i>
+markup.
+</p>
+
+<h2> meta things </h2>
+
+<p>
+First things first. At the beginning of the <i>scruffy</i> document, it
+is required to specify some <span class="monospace">meta</span> things -- the document title &amp; the
+author of the document.
+</p>
+
+<p>
+This is how it is done.
+</p>
+
+<div class="code"><br />meta&#45;title&#58; Title of Your Document<br />meta&#45;author&#58; Author<br /></div>
+
+<h2> document date </h2>
+
+<p>
+To specify the date of creation of the document, surround the date
+with a pair of <span class="monospace">&#36;&#36;&#36;</span>.
+</p>
+
+<div class="code"><br />&#36;&#36;&#36; 1 January&#44; 1984 &#36;&#36;&#36;<br /></div>
+
+<p>
+It can be made verbose too.
+</p>
+
+<div class="code"><br />&#36;&#36;&#36; Posted on 1 January&#44; 1984 &#36;&#36;&#36;<br /></div>
+
+
+<h2> headings </h2>
+
+<p>
+The mark-up for specifying the heading is the clumsiest of all. Now is
+the time to hate <i>scruffy</i> for what it is.
+</p>
+
+<p>
+To specify a &lt;h1&gt; heading, surround the <i>heading string</i> with a pair
+of <span class="monospace">10</span> equals sign(<span class="monospace">&#61;</span>).
+</p>
+
+<div class="code"><br />&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;<br />Heading 1<br />&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;<br /></div>
+
+<p>
+For a &lt;h2&gt; heading, the <i>heading string</i> is surrounded by a pair of
+<span class="monospace">20</span> equals sign.
+</p>
+
+<div class="code"><br />&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;<br />Heading 2<br />&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;<br /></div>
+
+<p>
+So the math is:
+</p>
+
+<div class="code"><br />no of equals signs &#61; &#40;&#40;heading size&#41; &#42; 10&#41;<br /></div>
+
+<p>
+For &lt;h3&gt; (head size is 3), the number of equals signs is equal to
+30. Therefore, a to get a &lt;h3&gt; heading, the <i>heading string</i> should
+be surrounded by a pair of <span class="monospace">30</span> equals signs.
+</p>
+
+<h2> paragraphs </h2>
+
+<p>
+Paragraphs are delimited by a blank line.
+</p>
+
+<div class="code"><br />foo is good at drinking&#46;<br /><br />bar loves to hack code&#46;<br /></div>
+
+<p>
+The above two lines are converted to:
+</p>
+
+<div class="code"><br />&lt;p&gt; foo is good at drinking&#46;&lt;&#47;p&gt;<br /><br />&lt;p&gt; bar loves to hack code&#46;&lt;&#47;p&gt;<br /></div>
+
+<h2> word decoration </h2>
+
+<p>
+ <b>Bold</b> text is surrounded by three singles quotes(<span class="monospace">&#39;&#39;&#39;</span>).
+</p>
+
+<div class="code"><br />&#39;&#39;&#39;This text will be in bold&#39;&#39;&#39; <br /></div>
+
+
+<p>
+ <i>Italic</i> text is surrounded by two single quotes(<span class="monospace">&#39;&#39;</span>).
+</p>
+
+<div class="code"><br />&#39;&#39;This text will be italicized&#39;&#39;<br /></div>
+
+<p>
+ <u>Underlined</u> text is surrounded by two underscores (<span class="monospace">&#95;&#95;</span>).
+</p>
+
+<div class="code"><br /> &#95;&#95;This text will be underlined&#95;&#95;<br /></div>
+
+<p>
+Text may be <span class="monospace">monopspaced</span> too, it is done by surrounding the text with
+<span class="monospace">&#96;</span> symbol.
+</p>
+
+<div class="code"><br /> &#96;monospaced text&#96; <br /></div>
+
+<p>
+If the beginning of the text, in a paragraph, is decorated,
+then, please remember to <i>leave a space before starting the
+paragraph</i>.
+</p>
+
+<div class="code"><br /> &#39;&#39;This paragraph is&#39;&#39; decorated at the beginning with italics&#44; <br />so&#44; a space is left before starting the paragraph&#46;<br /></div>
+
+<h2> code blocks </h2>
+
+<p>
+When it is desired to illustrate code or show verbatim text, the text
+or code is put around a pair of <span class="monospace">&#35;&#35;&#35;</span>.
+</p>
+
+<div class="code"><br /> &#35;&#35;&#35;<br /><br /> &#35;include &lt;beer&#46;h&gt;<br /><br /> void main&#40;&#41; &#123;<br /> beer lager&#59;<br /> lager&#46;drink&#40;&#41;&#59;<br /> return&#59;<br /> &#125;<br /><br /> &#35;&#35;&#35;<br /></div>
+
+<p>
+Text inside code blocks <u>cannot</u> be marked up, as all special
+characters are converted into their corresponding HTML number inside a
+code block.
+</p>
+
+<p>
+All through this document, those grayscaled blocks of text are,
+indeed, code blocks.
+</p>
+
+<h2> block quote </h2>
+
+<p>
+A block of text is <i>blockquoted</i> when it is surrounded by <span class="monospace">&#37;&#37;&#37;</span>
+string.
+</p>
+
+<div class="code"><br />&#37;&#37;&#37;<br /><br />The is phrase is fain to be blockquoted by scruf&#46; <br /><br />&#37;&#37;&#37;<br /></div>
+
+<h2> links </h2>
+
+<p>
+The markup for links is very similar to
+<a href="http://moinmo.in/HelpOnMoinWikiSyntax#Hyperlinks">MoinMoin's markup
+for links</a>:
+</p>
+
+<div class="code"><br /> &#91;&#91;http&#58;&#47;&#47;en&#46;wikipedia&#46;org&#47;wiki&#47;Special&#58;Random&#124;Wikipedia Random Article&#93;&#93;<br /></div>
+
+<p>
+As seen above, the <i>link block</i> is surround by <span class="monospace">&#91;&#91;</span> &amp; <span class="monospace">&#93;&#93;</span>. The
+first part inside the link block is the <i>link</i> and the second part
+(which is optional) is a description of the link. The two parts of the
+<i>link block</i> is separated by a <span class="monospace">&#124;</span> (pipe) symbol.
+</p>
+
+<p>
+The pipe symbol (<span class="monospace">&#124;</span>) is eliminated from the <i>link block</i>, if the
+link description is not specified.
+</p>
+
+<p>
+The HTML form of the above <i>link block</i> will look like:
+</p>
+
+<div class="code"><br />&lt;a href&#61;&#34;http&#58;&#47;&#47;en&#46;wikipedia&#46;org&#47;wiki&#47;Special&#58;Random&#34;&gt; Wikipedia Random Article &lt;&#47;a&gt;<br /></div>
+
+<h2> images </h2>
+
+<p>
+The markup for the <i>image block</i> looks like this:
+</p>
+
+<div class="code"><br />&#123;&#123;&#47;path&#47;to&#47;the&#47;image&#46;jpg&#124;description of the image&#125;&#125;<br /></div>
+
+<p>
+As seen above, the <i>image block</i> is enclosed with <span class="monospace">&#123;&#123;</span> &amp; <span class="monospace">&#125;&#125;</span>. The
+first part of the <i>image block</i> is the path to the location where
+the image stored. The second part (which is optional) is a textual
+description of the image. The textual description is what that is
+shown when the image cannot be displayed in the browser(text-only
+browsers, for instance).
+</p>
+
+<p>
+The two parts of the <i>image block</i> is separated by the <span class="monospace">&#124;</span> (pipe)
+symbol. The pipe symbol is eliminated, if the textual description of
+the image is not specified.
+</p>
+
+<h2> audio </h2>
+
+<p>
+scruf uses HTML5 &lt;audio&gt; tag to embed audio.
+</p>
+
+<p>
+The markup for embedding audio:
+</p>
+
+<div class="code"><br />&#123;&#123;audio&#58;&#47;path&#47;to&#47;the&#47;audio&#46;ogg&#125;&#125;<br /></div>
+
+<p>
+As seen above, the <i>audio block</i> is enclosed with <span class="monospace">&#123;&#123;</span> &amp;
+<span class="monospace">&#125;&#125;</span>. Inside the braces, the <i>audio block</i> starts with <span class="monospace">audio&#58;</span>
+followed by the path to the audio file.
+</p>
+
+<p>
+At present, there is support for only Ogg Vorbis audio.
+</p>
+
+<h2> footer </h2>
+
+<p>
+The author's name and copyright information may be placed inside the
+<i>footer block</i>. This block, as the name implies, is put at the end
+of the document.
+</p>
+
+<div class="code"><br />&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;<br />written by Audacius Scrooge&#46; It is licensed under CC&#45;BY&#45;SA<br />&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;<br /></div>
+
+<p>
+The <i>footer block</i> is enclosed by a pair of seventy hyphens
+(<span class="monospace">&#45;</span>).
+</p>
+
+<p>
+In Emacs, the whopping seventy hyphens can be generated with a <span class="monospace">C&#45;u 70
+&#45;</span>.
+</p>
+
+<h2> have problems? </h2>
+
+<p>
+If there are/is any issue(s) with understanding the <i>scruffy</i>
+markup. Please subscribe &amp; send an email to the
+<a href="http://lists.nongnu.org/mailman/listinfo/scruf-friends">scruf-friends</a>
+mailing list. That way we can solve your problem together.
+</p>
+
+<p>
+go back to the <a href="./scruf-howto.html">scruf-howto</a>.
+</p>
+
+
+<footer>a <i>scruffy</i> markup.</footer>
+
+
+ <div class="source">
+
+ <a href="./scruffy-markup.scruffy">source</a>
+ </div>
+<div class="back">
+<a href="./"> back </a>
+</div>
+</article>
+
+<div class="lastupdate">
+ Last Updated on: 21 December, 2012</div>
+
+<div class="scruf">
+<a href="http://nongnu.org/scruf/">powered by scruf</a>
+</div>
+
+</body>
+</html>
diff --git a/docs/style.css b/docs/style.css
new file mode 100644
index 0000000..d6a533a
--- /dev/null
+++ b/docs/style.css
@@ -0,0 +1,180 @@
+/*
+ Author: rsiddharth
+ Contact: <rsiddharth@ninthfloor.org>
+ License: Public Domain <http://creativecommons.org/publicdomain/zero/1.0/>
+
+*/
+
+article {
+ font-size:1.50em;
+ font-family:"Palatino Linotype","Book Antiqua",Palatino,"URW Palladio L",FreeSerif,serif;
+ color:#787878;
+ margin-left:auto;
+ margin-right:auto;
+ border:1px;
+ padding:5px;
+ width:97%;
+ box-shadow: 1px 1.5px 3px 0.5px #bababa;
+}
+
+h1, h2, h3, h4, h5 {
+ margin-left:auto;
+ margin-right:auto;
+ border:1px;
+ padding:5px;
+ width:75%;
+ text-align:center;
+}
+h1 {
+ font-size:1.80em;
+}
+
+p, i, b{
+ margin-left:auto;
+ margin-right:auto;
+ border:1px;
+ padding:5px;
+ width:70%;
+ text-align:justify;
+ line-height:170%;
+ -moz-word-wrap:break-word;
+}
+.center {
+ text-align:center;
+}
+
+blockquote {
+ font-size:0.77em;
+ font-style:oblique;
+ color:#888888;
+ text-align:justify;
+ background-color:#fcfcfc;
+ margin-left:auto;
+ margin-right:auto;
+ border:1px;
+ padding:5px;
+ width:60%;
+}
+
+span.monospace {
+ border: 1px;
+ padding: 1px;
+ font-size:0.625em;
+ font-family:monospace;
+}
+
+div.code {
+ font-family:monospace;
+ font-size:0.625em;
+ background-color:#fcfcfc;
+ margin-left:auto;
+ margin-right:auto;
+ border:1px;
+ padding:5px;
+ width:70%;
+}
+
+div.time {
+ font-size:0.50em;
+ font-family:"Palatino Linotype","Book Antiqua",Palatino,"URW Palladio L",FreeSerif,serif;
+ color:#aaaaaa;
+ margin-left:auto;
+ margin-right:auto;
+ border:1px;
+ padding:5px;
+ width:20%;
+ text-align:center;
+}
+
+img {
+ margin-left:auto;
+ margin-right:auto;
+ display:block;
+ border: 1px;
+ padding: 10px;
+}
+
+audio {
+ margin-left:auto;
+ margin-right:auto;
+ display:block;
+ border: 1px;
+ padding: 10px;
+}
+
+a:link,a:visited {
+ transition:border-bottom 0.3s, color 0.3s;
+ -moz-transition:border-bottom 0.3s, color 0.3s;
+ -webkit-transition:border-bottom 0.3s, color 0.3s;
+ -o-transition:border-bottom 0.3s, color 0.3s;
+ color:#686868;
+ border-bottom:1px dotted #d9d9d9;
+ text-decoration:none;
+}
+a:hover,a:active {
+ color:#000000;
+ border-bottom: 1px;
+ text-decoration:none;
+}
+
+div.back {
+ font-size:0.7em;
+ font-family:junicode,"Palatino Linotype","Book Antiqua",Palatino,"URW Palladio L",FreeSerif,serif;
+ text-align:center;
+ color:#989898;
+ margin-left:auto;
+ margin-right:auto;
+ border:1px;
+ padding:5px;
+ width:7%;
+}
+
+footer {
+ font-size:0.8em;
+ font-family:"Palatino Linotype","Book Antiqua",Palatino,"URW Palladio L",FreeSerif,serif;
+ text-align:center;
+ color:#989898;
+ margin-left:auto;
+ margin-right:auto;
+ border:1px;
+ padding:5px;
+ width:45%;
+}
+
+div.lastupdate {
+ font-size:0.6em;
+ font-family:"Palatino Linotype","Book Antiqua",Palatino,"URW Palladio L",FreeSerif,serif;
+ text-align:center;
+ color:#989898;
+ margin-left:auto;
+ margin-right:auto;
+ border:1px;
+ padding:5px;
+ width:40%;
+}
+
+div.source {
+ font-size:0.4em;
+ font-family:monospace;
+ text-align:center;
+ color:#989898;
+ margin-left:auto;
+ margin-right:auto;
+ border:1px;
+ padding:5px;
+ width:40%;
+}
+
+div.scruf {
+ font-size:0.9em;
+ font-family:"Palatino Linotype","Book Antiqua",Palatino,"URW Palladio L",FreeSerif,serif;
+ text-align:center;
+ color:#bcbcbc;
+ margin-left:auto;
+ margin-right:auto;
+ border:1px;
+ padding:5px;
+ width:40%;
+
+}
+
diff --git a/TODO b/etc/TODO
index df33c12..e5386b0 100644
--- a/TODO
+++ b/etc/TODO
@@ -10,22 +10,9 @@ SCRUF - TODO -*- mode: org; -*-
introduce mark-up for lists. Weird that I have not implement
yet.
-** [hp] documentation
-
- introduction to 'scruf' & 'scruffy' mark-up. finished the initial
- draft. It need to be edited and fine tuned.
-
** mark-up to center align text
* distribution related
-
-** README file
- a brief description of the project; pointer to website; notes on
- the platform; a roadmap to important files; pointer to INSTALL
- file; pointer to AUTHORS file; project NEWS.
-** INSTALL file
- point to the manual where installation instruction can be found.
-** AUTHORS file
** NEWS file
should contain information about new releases and features(if
needed).
@@ -33,19 +20,7 @@ SCRUF - TODO -*- mode: org; -*-
not required for 0.1.0 release.
** FAQ file
not required for 0.1.0 release.
-** checksum
- md5sum.
-** manual
- the manual file should also be part of the source distribution.
-
-** package & upload it in savannah
-
* website
-
-** create a documentation section in the homepage.
-
-** create a mailing list section in the homepage
-
* finished todos
** [done] ignore directories
@@ -72,3 +47,19 @@ SCRUF - TODO -*- mode: org; -*-
** [done] mailing list
** [done] build rsiddharth's weblog
Test it by generating rsiddharth's weblog using scruf.
+** [done] manual
+ the manual file should also be part of the source distribution.
+** [done] README file
+ a brief description of the project; pointer to website; notes on
+ the platform; a roadmap to important files; installation info
+ file; info about author;
+
+** [done] create a documentation section in the homepage.
+
+** [done] create a mailing list section in the homepage
+** [hp] documentation
+
+ introduction to 'scruf' & 'scruffy' mark-up. finished the initial
+ draft. It need to be edited and fine tuned.
+
+
diff --git a/etc/scruf-art b/etc/scruf-art
new file mode 100644
index 0000000..49c4853
--- /dev/null
+++ b/etc/scruf-art
@@ -0,0 +1,18 @@
+ _______________ _______________ _______________ ____ ____ _______________
+ | | | | | | | | | | | |
+ | ____________| | ___________| | _________ | | | | | | ___________|
+ | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | |___________
+ | |___________ | | | |_______| | | | | | | |
+ | | | | | _______| | | | | | ____________|
+ |___________ | | | | |\ \ | | | | | |
+ | | | | | | \ \ | | | | | |
+ | | | | | | \ \ | | | | | |
+ | | | | | | \ \ | | | | | |
+ ____________| | | |___________ | | \ \ | |_______| | | |
+ | | | | | | \ \ | | | |
+ |______________| |______________| |__| \__\ |_____________| |__|
+
+
+
+ an ugly artwork for the dirty HTML5 generator. \ No newline at end of file
diff --git a/parsers/Footer.java b/parsers/Footer.java
index f8d85ae..ad85c10 100644
--- a/parsers/Footer.java
+++ b/parsers/Footer.java
@@ -25,7 +25,7 @@ import java.util.regex.*;
import scruf.io.*;
public class Footer implements Parser {
public String parse(String fileContent) {
- Pattern pattern = Pattern.compile("\\-{70}\\n(.+)\\n\\-{70}");
+ Pattern pattern = Pattern.compile("\\-{70}\\n(.+)\\n\\-{70}",Pattern.DOTALL);
Matcher matcher = pattern.matcher(fileContent);
StringBuffer sbuffer = new StringBuffer();
String footer=null;