scruf

darn simple HTML5 doc generator
git clone git://git.ricketyspace.net/scruf.git
Log | Files | Refs | README

commit 54e4ec0cc7f0b58e747729a0c5260044ca4c370f
parent 7f46c19441f6690bde92c1359c535321cb8c3025
Author: rsiddharth <rsiddharth@ninthfloor.org>
Date:   Wed, 26 Dec 2012 21:31:18 +0530

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

Diffstat:
README | 147+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
TODO | 74--------------------------------------------------------------------------
conversion/ConvertDirectory.java | 13+++----------
docs/scruf | 88-------------------------------------------------------------------------------
docs/scruf-howto.html | 258+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
docs/scruffy-markup.html | 298+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
docs/style.css | 180+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
etc/TODO | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
etc/scruf-art | 19+++++++++++++++++++
parsers/Footer.java | 2+-
10 files changed, 971 insertions(+), 173 deletions(-)

diff --git a/README 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/TODO b/TODO @@ -1,74 +0,0 @@ -SCRUF - TODO -*- mode: org; -*- - -* features - -** build system (GNU auto tools) - -** test suite - -** implement lists - 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). -** HISTORY file - 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 - way to ignore directories - -** [done] move PresentFile.java to status/ - -** [done] extension for scruffy files - extension for scruff marked-up files to make discovery easier. - -** [done] modify conversion/CanConvert.java (bug) - -** [done] link to scruffy source - include a link or something to view the 'source'. - -** [done] 'quote' special symbols inside a code-block. -** [done] 'last update' string - the 'last updated' string must be dangled somewhere in the document - that is licked by scruf. - -** [done] <meta> tags - introduce 'meta' info in html doc generated -- authorinfo. - -** [done] mailing list -** [done] build rsiddharth's weblog - Test it by generating rsiddharth's weblog using scruf. diff --git 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 @@ -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 @@ -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 @@ -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 @@ -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/etc/TODO b/etc/TODO @@ -0,0 +1,65 @@ +SCRUF - TODO -*- mode: org; -*- + +* features + +** build system (GNU auto tools) + +** test suite + +** implement lists + introduce mark-up for lists. Weird that I have not implement + yet. + +** mark-up to center align text + +* distribution related +** NEWS file + should contain information about new releases and features(if + needed). +** HISTORY file + not required for 0.1.0 release. +** FAQ file + not required for 0.1.0 release. +* website +* finished todos + +** [done] ignore directories + way to ignore directories + +** [done] move PresentFile.java to status/ + +** [done] extension for scruffy files + extension for scruff marked-up files to make discovery easier. + +** [done] modify conversion/CanConvert.java (bug) + +** [done] link to scruffy source + include a link or something to view the 'source'. + +** [done] 'quote' special symbols inside a code-block. +** [done] 'last update' string + the 'last updated' string must be dangled somewhere in the document + that is licked by scruf. + +** [done] <meta> tags + introduce 'meta' info in html doc generated -- authorinfo. + +** [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 @@ -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 @@ -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;