<erl>


out(A) ->
    [{ssi, "TAB.inc","%%",[{"index", "choosen"}]},
     {ehtml,
      [{'div', [{id, "entry"}],
        [{h1,[],"Yaws"},


        {p,[],"Yaws is a HTTP high perfomance 1.1 webserver particularly"
         " well suited for dynamic-content web applications. Two
         separate modes of operations are supported:"},
        {ul,[],
         [{li,[],
           {p,[],"Standalone mode where Yaws runs as a regular webserver " 
            "daemon. This is the default mode."}},
          {li,[],
           {p,[], "Embedded mode where Yaws runs as an embedded webserver in "
            "another Erlang application."}}
         ]},
        {p,[], ["Yaws is entirely written in ",
                {a, [{href, "http://www.erlang.org"}],  "Erlang"},
                ", and furthermore it is a multithreaded webserver where one "
                "Erlang lightweight process is used to handle each client."]},
        {p,[], "The main advantages of Yaws compared to other Web technologies"
         " are performance and elegance. The performance comes from the "
         " underlying Erlang system and its ability to handle concurrent "
         " processes in an efficent way. Its elegance comes from Erlang as "
         "well. Web applications don't have to be written in ugly ad hoc "
         "languages."},
        
        {h2,[], "yaws.hyber.org"},
        
        {p,[], ["The www page for Yaws is ",
                {a ,[{href,"http://yaws.hyber.org"}], "yaws.hyber.org"},
                " The documentation, examples as well as releases can be "
                "found there, and of course, ",
                {a ,[{href,"http://yaws.hyber.org"}],"yaws.hyber.org"},
                " is itself powered by Yaws."]},
        
        {p,[], ["A mailing list exists at: ",
                {a,[{href,"https://lists.sourceforge.net/lists/listinfo/""erlyaws-list"}],
                 "https://lists.sourceforge.net/lists/listinfo/erlyaws-list"}]},
         {h2, [], "News"},
         gen_news(A)]}]},
     {ssi, "END2",[],[]}].
    


gen_news(A) ->
    case file:open(A#arg.docroot ++ "/news",[read]) of
        {ok, Fd} ->
            gen_news(Fd, io:get_line(Fd,''));
        Err ->
            {p,[], f("No news: ~p",[Err])}
    end.

gen_news(Fd, eof) ->
    file:close(Fd),
    [];
gen_news(Fd, Line) ->
    Items = gen_items(Fd, io:get_line(Fd, '')),
    case Items of
      [] ->
         gen_news(Fd, io:get_line(Fd,''));
      _ ->
         X = [{'div', [{class, "news"}],
           [{h3, [], Line},
            {ul, [], Items}]}
          ],
          
    [X | gen_news(Fd, io:get_line(Fd,''))]
   end.


gen_items(Fd, [10]) ->
    [];
gen_items(Fd,eof) ->
    [];
gen_items(Fd,Line) ->
    [{li, [], {p, [], Line}} |gen_items(Fd, io:get_line(Fd, ''))].



</erl>



