Em Andamento

Write a parser and writer for a new structure text format targetted at non-programmers

Senior Executive Summary

Write a parser and writer for a new structure text format targetted at non-programmers

Executive Summary

Elegant Technologies Structured Text (ETST) is yet another structured text initiative to create a structured text format, but this one is being specifically designed to be used by non-programmers. The intended uses are:

1 a default text format for non-programmers, so when writing copy for a web site using Microsoft Word, they can created their own basic formatting.

2 a human readable format to store formatted text, such as when entered via rich html client (aka WYSIWYG in-browser editors) on a website, like earthlink’s webmail client, instead of storing in, say, RTF or HTML.

See the uploaded file for more details.

This will problably require at least three classes, and they must be changable intermingling at run-time (see the Design Pattern 'Builder').

If you are not familiar with the term "Design Pattern", then this project probably isn't right for you.

I'll provide a some test files before program kick-off.

Please allow some time for refinement.

You have have to record total hours worked record them at the end of each week on our phpdotproject site - but you will be paid by the job.

Please give an estimated total labor hours required to accomplish the job.

Links:

[url removed, login to view]

[url removed, login to view]

[url removed, login to view]

[url removed, login to view]

The Job:

Create a data storage class. Create a reader class that parses text files and inputs data into the storage class. Create a reader class that reads the text string that are stored in a MySQL database and inputs the info into the storage class. Create a class that interfaces with the storage class and translates it to pretty HTML. Create a class that interfaces with the storage class and translates it to a file.

You must be able to quickly parse and retrieve 500 pages of text from a text file in less than ½ sec on a Athlon 1.2 Ghz CPU with 512MG ram running Apache 2 and PHP 4.3.9. The code must also run under PHP 5.0 It is also acceptable for the importer code run in Python, but I need a PHP reader.

History

I recently finished writing a large-ish handbook for the web. I worked with several very knowledgable subject matter experts on the subject, but I was faced with the task of inputting all of their information into a website. The book was going to be about 400 web-pages long, and since everyone was working in their own version of MS Word, I had asked then to write there text in structured text (specifically, Python ReStructured Text, aka RST). I gained a lot of respect for for the structured text community, but this experience, combined with trying to roll out a WIKI, which used a different structured text format, at my company pursuaded me that non-programmers needed something a little simplier.

Principles

There is only one right way to do things. I don’t want people to get confused.

It should always be obvious where the special instructions are.

Simplier is better than complex. This language is for writers, not website designers – we aren’t doing anything too special here.

All advanced features are encapsulated in '[]'s

Authors can generate copy in MS Word 97 through 2003 – perhaps after turning off auto-completion.

It shall be implemented in PHP 4.3.9 & 5.0 using known Design Patterns.

It shall have PHP 5.0 unit tests.

When completed, a one page instruction sheet that neatly fits onto a web page AND a two page PDF cheat sheet, suitable for putting into a manual will be made. The front page will be new users, the back page will a reference for all advanced features.

Some standard emoticons and symbol shortcuts will be used.

A lot of special formatting, like acronyms, will be left up to custom output classes, and will not be part of the ETST spec.

Syntax errors are not possible, except inside brackets ([]). See, I spent a lot of time debugging my RST text. I mean it – I was actually debugging the text. This would have been impossible for a non-programmer.

TABS don’t exist, they are treated like five spaces.

English only. Sorry, I just don’t enough about other languages.

Each formatting addition must be modular so that we can add new stuff in the future.

The Spec

- Headers

- Header 1 (headers levels are designated by the number in dashes “-“ infront of some text)

-Header 1

-- Header 2

--Header 2

-- Header 3

---Header 3

...

---------- Header 10

----------Header 10

Headers can optionally have a line of dashes or equal signs under them. They will be ignored, but it makes text files easier to read:

-Application Programmer's Interface

=====================================

-- Overview

---------------------------------------

- Paragraphs

A paragraph starts on the next line.

Another paragraph begins after an carraige return (this is a paragraph with no extra separation).

One or more blank line between paragraphs designates an extra separation between the paragraphs

Two blanks lines, like this new paragraph, is no different than the preceeding paragraph.

One or more spaces or tabs incidates that this paragraph should be indented.

This is another indented paragraph.

Here is a third indented paragraph. These will all be indented the same amount. We just care that it was indented.

-- Justification

Paragraphs are, by default, left justified. You can, however, specify a paragraph to be centered, right justified, or justified. Once specifying a justification for a paragraph, then all subsequent paragraphs have the same formatting. Indenting issues for the first line of a paragraph are ignored for all formatting except left justified paragraphs. Bullets are always left justified

>> Here is a right justified paragrapaph.

Here is another right justified paragraph.

>< Here is a centered paragraph.

Here is a justified paragraph

<< here is a left justified paragraph.

Here is a justified paragraph.

- Bullets

Here are a bunch of bullets. The first level of bullet should be indented. Since it is generally pretty obvious that line starting with a ‘*’ is a bullet, then even if the formatting isn’t perfect, the parser will take its best guess at what the author intended, and must always rewrite the formating correctly. To guess at the author’s formatting, the parser base everything one uninterupted cluster of bullets at a time (a new paragraph breaks a cluster). Determine how many distinct levels of indentation there are, and group by indentation, so, like python, indentation counts.

* Here is a bulletted item

* Here is a second item

*Here is another bullet, and the end of the first bullet cluster.

Here is a new paragraph

* Here is a bullet. This is the second bullet cluster. (indentation level=1)

* Here is an sub bullet because it is indented (indentation level=2)

* Here is a sub-sub bullet because it is indented further (indentation level=3)

* Here is a sub-sub-sub bullet because it is indented even further (indentation level=5)

* Here is a sub-sub bullet. Notice how it nicely lines up with the the bullet two lines above this. (indentation level=3)

* Here is a bullet (indentation level=1)

* Here is a sub-sub bullet. (indentation level=6)

* Here is a sub bullet (indentation level=4)

* Here is a sub-sub-sub bullet because (indentation level=7)

Now, here is the same cluster of bullets nicely formatted.

* Here is a bullet. This is the second bullet cluster. (indentation level=1)

* Here is an sub bullet because it is indented (indentation level=2)

* Here is a sub-sub bullet because it is indented further (indentation level=3)

* Here is a sub-sub-sub bullet because it is indented even further (indentation level=5)

* Here is a sub-sub bullet. Notice how it nicely lines up with the the bullet two lines above this. (indentation level=3)

* Here is a bullet (indentation level=1)

* Here is a sub-sub bullet. (indentation level=6)

* Here is a sub bullet (indentation level=4)

* Here is a sub-sub-sub bullet because (indentation level=7)

-- Numbered Lists

For numbered list, the formatting is the same as for bullets, except that instead of a ‘*’, either a number or a ‘#’ can be used. Decorations immediately after the number are ignored and removed when parsed. When it is rewritten, the items are nicely numbered as ‘X. Some text.’ Here are some examples:

1. First, get a chicken

2. Find a big pot

5.) Find a seclude clearing

3 Get a bushel of wheat.

# I forget what comes next

# some other items

(9) lastly, enjoy your meal!

These are all legal, and produce the following nicely formatted text.

1. First, get a chicken

2. Find a big pot

3. Find a seclude clearing

4. Get a bushel of wheat.

5. I forget what comes next

6. some other items

7. lastly, enjoy your meal!

Habilidades: PHP, Python

Ver mais: wysiwyg web design, wysiwyg html, writing recently write paragraph, writing unit tests, writing unit book, writing file python, writing file, writing text website, writing spaces, writing patterns, writing paragraphs book pdf, writing matter website, writing right, writing get english, writing handbook, writing two week notice, writing executive summary, writing week notice, write say, write book want read, writers write, writers org, writers manual, writers community, writers editors needed

Acerca do Empregador:
( 18 comentários ) Belmont, United States

ID do Projeto: #7966

Premiar a:

siddhartha1

Dear sir, pls check pmb

$100 USD em 18 dias
(34 Avaliações)
7.6

3 freelancers estão ofertando em média $73 para este trabalho

inavigator

We wish to introduce iNavigators as an Information Technology arm of Rungta Enterprises, a multimillion-dollar conglomerate that was conceived with a singular charter to provide quality software solutions and to cater Mais

$20 USD in 20 dias
(11 Comentários)
6.7
bid2

we can do it.

$100 USD in 5 dias
(0 Comentários)
0.0