This commit is contained in:
2019-02-06 00:49:12 +03:00
commit 8dbb1bb605
4796 changed files with 506072 additions and 0 deletions

8
bml/test/Pblocks/scheme.look Executable file
View File

@@ -0,0 +1,8 @@
oneline=>{P}Arg one: %%DATA1%%; Arg two: %%DATA2%%
multiline<={P}
Arg one: %%DATA1%%
Arg two: %%DATA2%%
<=multiline

9
bml/test/_config.bml Executable file
View File

@@ -0,0 +1,9 @@
LookRoot $testlookroot
DefaultScheme scheme
DefaultLanguage en
AllowOldSyntax 0
AllowCode 1
AllowTemplateCode 1

52
bml/test/bml-profile.pl Executable file
View File

@@ -0,0 +1,52 @@
#!/usr/bin/perl
#
use strict;
use lib "$ENV{'LJHOME'}/cgi-bin";
use Apache;
use Apache::FakeRequest ();
use Apache::BML;
use Benchmark;
my $benchmark = shift; # times to run new code
my $bold = shift; # times to run old code
$bold = $benchmark unless defined $bold;
my $r = Apache::FakeRequest->new(
'filename' => "$ENV{LJHOME}/fake_root/bml-test.bml",
# 'filename' => "$ENV{LJHOME}/htdocs/foo.bml",
'document_root' => "$ENV{LJHOME}/fake_root",
'method' => "GET",
'args' => "",
'content' => "",
'uri' => '/bml-test.bml',
# 'uri' => '/foo.bml',
'header_only' => $benchmark ? 1 : 0,
);
unless ($benchmark) {
# *Apache::BML::bml_decode = \&Apache::BML::bml_decode_OLD;
# *Apache::BML::load_elements = \&Apache::BML::load_elements_OLD;
my $stat = Apache::BML::handler($r);
die "bad init" unless $stat == 0;
exit 0;
}
print "New code:\n";
timethis($benchmark, sub {
my $stat = Apache::BML::handler($r);
});
if ($bold) {
print "Old code:\n";
*Apache::BML::bml_decode = \&Apache::BML::bml_decode_OLD;
*Apache::BML::load_elements = \&Apache::BML::load_elements_OLD;
timethis($bold, sub {
my $stat = Apache::BML::handler($r);
});
}

9
bml/test/brads/_config.bml Executable file
View File

@@ -0,0 +1,9 @@
LookRoot $testlookroot
DefaultScheme scheme
DefaultLanguage en
AllowOldSyntax 0
AllowCode 1
AllowTemplateCode 1

9
bml/test/brads/scheme.look Executable file
View File

@@ -0,0 +1,9 @@
page<=
{F}<html>
<head><title>%%title%%</title></head>
<body>
%%body%%
</body>
</html>
<=page

16
bml/test/brads/test1.bml Executable file
View File

@@ -0,0 +1,16 @@
<?_info
localblocks<=
foo=>[foo]%%DATA%%[/foo]
<=localblocks
_info?><?page
title=>Test1
body<=
Test of local block foo: <?foo?>
Another test of local block foo: <?foo with data this time foo?>
<=body
page?>

12
bml/test/brads/test1.correct Executable file
View File

@@ -0,0 +1,12 @@
<html>
<head><title>Test1</title></head>
<body>
Test of local block foo: [foo][/foo]
Another test of local block foo: [foo]with data this time[/foo]
</body>
</html>

View File

@@ -0,0 +1,9 @@
LookRoot $testlookroot
DefaultScheme scheme
DefaultLanguage en
AllowOldSyntax 0
AllowCode 1
AllowTemplateCode 1

View File

@@ -0,0 +1,6 @@
<?_code $content = "This should show up twice"; _code?>
<?_code $content _code?>
<?_code my $other = "This should only show up once."; _code?>
<?_code $other _code?>

View File

@@ -0,0 +1,6 @@
This should show up twice
This should show up twice
This should only show up once.

View File

@@ -0,0 +1,15 @@
<?_code
sub some_function { return "This is from the first codeblock"; }
$package = __PACKAGE__;
return "Returning from the first codeblock.";
_code?>
<?_code
$package->some_function();
_code?>

View File

@@ -0,0 +1,4 @@
Returning from the first codeblock.
This is from the first codeblock

View File

@@ -0,0 +1,28 @@
<?_code
package Foo;
sub new {
my $class = shift;
my ( $this, $that ) = @_;
bless {
this => $this || "default this",
that => $that || "default that",
}, $class;
}
sub this { my $self = shift; $self->{this} = shift if @_; $self->{this} }
sub that { my $self = shift; $self->{that} = shift if @_; $self->{that} }
sub msg {
my $self = shift;
return "[This: ". $self->this . ", That: ". $self->that . "]";
}
_code?>
<?_code
my $f = new Foo "pony", "not yours";
$f->msg;
_code?>

View File

@@ -0,0 +1,6 @@
[This: pony, That: not yours]

View File

@@ -0,0 +1,9 @@
Return a BML construct:
<?_code return "<?tag Foo tag?>" _code?>
Inside-out from above:
<?exec return "[This is it.]" exec?>
Recurse:
<?exec return '<?_code return "[Foo.]" _code?>' exec?>

View File

@@ -0,0 +1,9 @@
Return a BML construct:
[Tag: Foo]
Inside-out from above:
[This is it.]
Recurse:
[Error: <b>_CODE block failed to execute by permission settings</b>]

View File

@@ -0,0 +1,4 @@
tag=>{D}[Tag: %%DATA%%]
exec=>{D}<?_code %%DATA%% _code?>

12
bml/test/codeblocks/simple.bml Executable file
View File

@@ -0,0 +1,12 @@
Immediate value/Simple string:
<?_code "Foo" _code?>
Immediate value/List:
<?_code qw{this is some data in a list} _code?>
Returned string:
<?_code return "Bar" _code?>
Returned List:
<?_code return ("some", "stuff", "in", "a", "list") _code?>

View File

@@ -0,0 +1,12 @@
Immediate value/Simple string:
Foo
Immediate value/List:
list
Returned string:
Bar
Returned List:
list

9
bml/test/comments/_config.bml Executable file
View File

@@ -0,0 +1,9 @@
LookRoot $testlookroot
DefaultScheme scheme
DefaultLanguage en
AllowOldSyntax 0
AllowCode 1
AllowTemplateCode 1

22
bml/test/comments/basic.bml Executable file
View File

@@ -0,0 +1,22 @@
Comment:
<?_c This shouldn't show up _c?>
Comment full:
<?_comment This shouldn't show up _comment?>
Embedded:
<?_c This shouldn't show up: <?_code something _code?> _c?>
Embedded full:
<?_comment This shouldn't show up: <?_code something _code?> _comment?>
Multiline:
<?_c
This shouldn't show up: <?_code something _code?>
_c?>

18
bml/test/comments/basic.correct Executable file
View File

@@ -0,0 +1,18 @@
Comment:
Comment full:
Embedded:
Embedded full:
Multiline:

13
bml/test/comments/rendered.bml Executable file
View File

@@ -0,0 +1,13 @@
Single line:
<?user_comment This shouldn't be rendered user_comment?>
Multiline:
<?user_comment
This is a comment, too, so it shouldn't be renderered.
user_comment?>
Indirect:
<?indirect This shouldn't be rendered indirect?>

View File

@@ -0,0 +1,11 @@
Single line:
Multiline:
Indirect:
(Indirect)

6
bml/test/comments/scheme.look Executable file
View File

@@ -0,0 +1,6 @@
user_comment=><?_c %%DATA%% _c?>
indirect<=
(Indirect)
<?user_comment %%DATA%% user_comment?>
<=indirect

9
bml/test/escape/_config.bml Executable file
View File

@@ -0,0 +1,9 @@
LookRoot $testlookroot
DefaultScheme scheme
DefaultLanguage en
AllowOldSyntax 0
AllowCode 1
AllowTemplateCode 1

34
bml/test/escape/ea.bml Executable file
View File

@@ -0,0 +1,34 @@
Escape HTML tags:
<?_ea In structural HTML, the <b> tag should be replaced with <strong> and the
<i> tag with <em>. _ea?>
Escape a code example:
<pre><code><?_ea
# Overload Apache::FakeRequest's print to append output to a variable.
{
no warnings 'redefine';
*Apache::FakeRequest::print = sub {
my $r = shift;
$Output .= join('', @_)
};
*Apache::FakeRequest::log_error = sub {
my $r - shift;
print STDERR @_, "\n"; $Errout .= join('', @_)
};
*Apache::FakeRequest::pnotes = sub {
my ( $r, $key ) = @_;
$Pnotes->{ $key } = shift if @_;
$Pnotes->{ $key };
};
}
_ea?></code></pre>
Escape old-style syntax:
<?_ea Tags in BML used to be like (=this=), but that format has since been
deprecated. _ea?>
Escape new-style syntax:
<?_ea Now tags in BML look like: <?foo?>. _ea?>

32
bml/test/escape/ea.correct Executable file
View File

@@ -0,0 +1,32 @@
Escape HTML tags:
In structural HTML, the &lt;b&gt; tag should be replaced with &lt;strong&gt; and the
&lt;i&gt; tag with &lt;em&gt;.
Escape a code example:
<pre><code># Overload Apache::FakeRequest&#39;s print to append output to a variable.
{
no warnings &#39;redefine&#39;;
*Apache::FakeRequest::print = sub {
my $r = shift;
$Output .= join(&#39;&#39;, @_)
};
*Apache::FakeRequest::log_error = sub {
my $r - shift;
print STDERR @_, &quot;\n&quot;; $Errout .= join(&#39;&#39;, @_)
};
*Apache::FakeRequest::pnotes = sub {
my ( $r, $key ) = @_;
$Pnotes-&gt;{ $key } = shift if @_;
$Pnotes-&gt;{ $key };
};
}</code></pre>
Escape old-style syntax:
Tags in BML used to be like (= this =), but that format has since been
deprecated.
Escape new-style syntax:
Now tags in BML look like: &lt;?foo?&gt;.

7
bml/test/escape/eb.bml Executable file
View File

@@ -0,0 +1,7 @@
Escape old-style syntax:
<?_eb Tags in BML used to be like (=this=), but that format has since been
deprecated. _eb?>
Escape new-style syntax:
<?_eb Now tags in BML look like: <?foo?>. _eb?>

7
bml/test/escape/eb.correct Executable file
View File

@@ -0,0 +1,7 @@
Escape old-style syntax:
Tags in BML used to be like (= this =), but that format has since been
deprecated.
Escape new-style syntax:
Now tags in BML look like: &lt;?foo?&gt;.

26
bml/test/escape/eh.bml Executable file
View File

@@ -0,0 +1,26 @@
Escape HTML tags:
<?_eh In structural HTML, the <b> tag should be replaced with <strong> and the
<i> tag with <em>. _eh?>
Escape a code example:
<pre><code><?_eh
# Overload Apache::FakeRequest's print to append output to a variable.
{
no warnings 'redefine';
*Apache::FakeRequest::print = sub {
my $r = shift;
$Output .= join('', @_)
};
*Apache::FakeRequest::log_error = sub {
my $r - shift;
print STDERR @_, "\n"; $Errout .= join('', @_)
};
*Apache::FakeRequest::pnotes = sub {
my ( $r, $key ) = @_;
$Pnotes->{ $key } = shift if @_;
$Pnotes->{ $key };
};
}
_eh?></code></pre>

24
bml/test/escape/eh.correct Executable file
View File

@@ -0,0 +1,24 @@
Escape HTML tags:
In structural HTML, the &lt;b&gt; tag should be replaced with &lt;strong&gt; and the
&lt;i&gt; tag with &lt;em&gt;.
Escape a code example:
<pre><code># Overload Apache::FakeRequest&#39;s print to append output to a variable.
{
no warnings &#39;redefine&#39;;
*Apache::FakeRequest::print = sub {
my $r = shift;
$Output .= join(&#39;&#39;, @_)
};
*Apache::FakeRequest::log_error = sub {
my $r - shift;
print STDERR @_, &quot;\n&quot;; $Errout .= join(&#39;&#39;, @_)
};
*Apache::FakeRequest::pnotes = sub {
my ( $r, $key ) = @_;
$Pnotes-&gt;{ $key } = shift if @_;
$Pnotes-&gt;{ $key };
};
}</code></pre>

3
bml/test/escape/eu.bml Executable file
View File

@@ -0,0 +1,3 @@
Escaped URL characters:
http://www.fruit-jar.com/booklist?title=<?_eu 21 Things to do with Excess !%$@#!@#@# Punctuation _eu?>

3
bml/test/escape/eu.correct Executable file
View File

@@ -0,0 +1,3 @@
Escaped URL characters:
http://www.fruit-jar.com/booklist?title=21+Things+to+do+with+Excess+%21%25%24%40%23%21%40%23%40%23+Punctuation

1
bml/test/escape/scheme.look Executable file
View File

@@ -0,0 +1 @@

9
bml/test/fake_root/_config.bml Executable file
View File

@@ -0,0 +1,9 @@
LookRoot .
DefaultScheme bluewhite
DefaultLanguage en
AllowCode 1
AllowTemplateCode 1

251
bml/test/fake_root/bluewhite.look Executable file
View File

@@ -0,0 +1,251 @@
#
# Welcome to GENERIC.LOOK for the WhiteBlue scheme
#
# by....
# Brad Fitzpatrick
# brad@danga.com
#
######################### little stuff
_parent=>global.look
AL=>{P}<I><A HREF="%%DATA1%%">%%DATA2%%</A></I> <IMG SRC="/img/external_link.gif" WIDTH=16 HEIGHT=11 ALIGN=ABSMIDDLE>
AWAYLINK=>{P}<I><A HREF="%%DATA1%%">%%DATA2%%</A></I> <IMG SRC="/img/external_link.gif" WIDTH=16 HEIGHT=11 ALIGN=ABSMIDDLE>
H1=>{D}<P><FONT FACE="Arial,Helvetica" COLOR="#CC0000"><B>%%DATA%%</B></FONT>
H1/FOLLOW_CHOICES=>{D}<FONT FACE="Arial,Helvetica" COLOR="#CC0000"><B>%%DATA%%</B></FONT>
HEAD1=>{D}<P><FONT FACE="Arial,Helvetica" COLOR="#CC0000"><B>%%DATA%%</B></FONT>
H2=>{D}<P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>%%DATA%%</B></FONT>
HEAD2=>{D}<P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>%%DATA%%</B></FONT>
# Banner Header: search results banner, content desriptor, etc...
BH=>{D}<P ALIGN=CENTER><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>%%DATA%%</B></FONT>
GRIN=>&lt;grin&gt;
HR=><P ALIGN="CENTER"><FONT COLOR=BLUE>*</FONT></P>
NEWLINE=>{D}<BR>&nbsp;&nbsp;&nbsp;&nbsp;
P=>{D}<BR>%%DATA%%
P/FOLLOW_P=>{D}<BR><IMG SRC="/img/dot.gif" WIDTH=1 VSPACE=6 HEIGHT=1><BR>%%DATA%%
STANDOUTO<=
{D}<CENTER><FONT SIZE=1><BR></FONT><TABLE ALIGN=CENTER CELLPADDING=8 BORDER=1 BGCOLOR=#CCCCFF BORDERCOLORLIGHT=#DDDDFF
BORDERCOLORDARK=#BBBBFF><TR><TD VALIGN=CENTER>
%%DATA%%
</TD></TR></TABLE></CENTER>
<=STANDOUTO
STANDOUT<=
{D}<CENTER><FONT SIZE=1><BR></FONT>
<table cellspacing=0 cellpadding=0 border=0 bgcolor="#ccccff">
<tr>
<td width=7 align=left valign=top>
<img width=7 height=7 src="/img/corn_nw.gif" alt=""></td>
<td height=7>
<img height=7 src="/img/dot.gif" alt=""></td>
<td width=7 valign=top align=right>
<img height=7 src="/img/corn_ne.gif" alt=""></td>
</tr><tr>
<td width=7>
<img width=7 height=1 src="/img/dot.gif" alt=""></td>
<td valign=top>
%%DATA%%
</td>
<td width=7>
<img width=7 height=1 src="/img/dot.gif" alt=""></td>
</tr><tr>
<td width=7 align=left valign=top>
<img width=7 height=7 src="/img/corn_sw.gif" alt=""></td>
<td height=7>
<img height=7 src="/img/dot.gif" alt=""></td>
<td width=7 valign=top align=right>
<img height=7 src="/img/corn_se.gif" alt=""></td>
</tr>
</table>
</CENTER>
<=STANDOUT
SOERROR=><div style='background-color:#f3f4fe; color:red; font-weight:bold; text-align:center'>%%data%%</div>
######################### choices stuff
CHOICE=>{P}<DT><A HREF="%%DATA2%%"><FONT FACE="Arial,Helvetica"><B>%%DATA1%%</B></FONT></A><DD><FONT SIZE="2">%%DATA3%%</FONT>
CHOICES<=
{F}<P><DIV CLASS="choice"><TABLE WIDTH="100%" CELLPADDING="2" CELLSPACING="5">
<TR>
<TD VALIGN=TOP WIDTH="50%">
<DL>
%%ITEMS%%
</DL>
</TD>
<TD VALIGN=TOP WIDTH="50%">
<DL>
%%ITEMSB%%
</DL>
</TD>
</TR>
</TABLE></DIV>
<=CHOICES
##################################################################################
################################### MAIN PAGE ####################################
##################################################################################
PAGE<=
{F}<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML><?load_page_info?>
<HEAD>
<TITLE>%%TITLE%%</TITLE>
%%head%%
</HEAD>
<BODY BGCOLOR=#FFFFFF TOPMARGIN="0" LEFTMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0" LINK=#0000C0 VLINK=#0000C0 %%bodyopts%%>
<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0 BACKGROUND="/img/bluewhite/bluefade.jpg">
<TR WIDTH=100%>
<TD VALIGN=BOTTOM ALIGN=LEFT HEIGHT=100>
<TABLE BACKGROUND="" HEIGHT=95 WIDTH=100% BORDER=0>
<TR>
<TD WIDTH=3>&nbsp;</TD>
<TD HEIGHT=53 WIDTH=406 VALIGN=BOTTOM>
<?_code
$is_home = (BML::get_uri() =~ m!^/(index\.bml)?!);
if (0 && $is_home)
{
return '<IMG SRC="/img/bluewhite/title.gif" WIDTH=600 HEIGHT=53><!-- ';
}
return "";
_code?>
<FONT SIZE=6 COLOR="#000a3f" FACE="Arial, Helvetica"><B>%%TITLE%%</B></FONT>
<?_code
if (0 && $is_home)
{
return ' -->';
}
return "";
_code?>
</TD>
<TD VALIGN=TOP ALIGN=RIGHT>
<?_code
unless ($is_home) {
return "<A HREF=\"/\"><IMG SRC=\"/img/bluewhite/home.gif\" WIDTH=35 HEIGHT=36 BORDER=0></A>&nbsp;";
}
return "";
_code?>
</TD>
</TR>
</TABLE>
</TD></TR>
</TABLE>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
<TR VALIGN=TOP>
<TD WIDTH=133 BGCOLOR=#d7d9e8 NOWRAP><IMG SRC="/img/bluewhite/hline.gif" WIDTH=133 HEIGHT=25 ALT="">
<TABLE WIDTH=128 BORDER=0 CELLSPACING=0 CELLPADDING=0>
<TR><TD>
<FONT FACE="Arial,Helvetica" SIZE=-1>
<?_code
$ret = "";
sub dump_entry
{
my ($ret, $listref, $depth) = @_;
foreach my $mi (@$listref)
{
if ($depth==0) {
$$ret .= "<P><IMG SRC=\"/img/bluewhite/bullet.gif\" WIDTH=10 HEIGHT=10 HSPACE=2 ALIGN=ABSMIDDLE>";
} else {
$$ret .= "&nbsp;" x ($depth*3+1);
$$ret .= $mi->{'cont'} ? "&nbsp;&nbsp;" : "- ";
}
my $name = $mi->{'name'};
$name =~ s/ /&nbsp;/g;
if (! defined $mi->{'uri'}) {
if ($depth == 0) {
$$ret .= "<B>$name</B><BR>";
} else {
$$ret .= "$name<BR>";
}
} elsif ($mi->{'match'} ?
(BML::get_uri() =~ /$mi->{'match'}/) :
(BML::get_uri() eq $mi->{'uri'})
){
$$ret .= "<B><SPAN style=\"background-color: #FFFFFF\"><FONT COLOR=#0000D0>$name</FONT></SPAN></B><BR>";
} else {
$$ret .= "<A HREF=\"$mi->{'uri'}\">$name</A><BR>";
}
if ($mi->{'children'} &&
($mi->{'recursematch'} ? BML::get_uri() =~ /$mi->{'recursematch'}/ : 1)) {
&dump_entry($ret, $mi->{'children'}, $depth+1);
}
}
}
&dump_entry(\$ret, \@sidebar, 0);
return $ret;
_code?>
</FONT>
</TD></TR></TABLE>
</TD>
<TD ALIGN=LEFT BACKGROUND="/img/bluewhite/vline.gif" WIDTH=25 NOWRAP>
<IMG SRC="/img/bluewhite/linetop.gif" WIDTH=25 HEIGHT=25 ALT=""><BR>
<IMG SRC="/img/bluewhite/vline.gif" WIDTH=25 HEIGHT=800 ALT="">
</TD>
<TD>
<IMG SRC="/img/dot.gif" WIDTH=1 HEIGHT=3><BR>
%%BODY%%
</TD>
<TD WIDTH=20>&nbsp;</TD>
</TR>
<!-- table closure row -->
<TR>
<TD WIDTH=133 NOWRAP><IMG SRC="/img/bluewhite/sidebarfade.gif" WIDTH=133 HEIGHT=25 ALT=""></TD>
<TD WIDTH=25 NOWRAP><IMG SRC="/img/bluewhite/sidebarfade_line.gif" WIDTH=25 HEIGHT=25 ALT=""></TD></TD>
<TD>
&nbsp;
</TD>
<TD WIDTH=20>&nbsp;</TD>
</TR>
</TABLE>
<!-- /table closure row -->
<TABLE WIDTH=100%>
<TR>
<TD ALIGN=RIGHT>
<FONT FACE="Arial, Helvetica" SIZE="-2">
<A HREF="/privacy.bml">Privacy Policy</A> -
<A HREF="/coppa.bml">COPPA</A><BR>
<A HREF="/disclaimer.bml">Legal Disclaimer</A> -
<A HREF="/sitemap.bml">Site Map</A><BR>
</FONT>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
<=PAGE

View File

@@ -0,0 +1,14 @@
<?_info
localblocks<=
h1=>{D}<h1 bml='1'>%%data%%</h1>
<=localblocks
_info?>
Pre.
[<?h1 User Links <?h1 Inner h1?> <?h1?> h1?>]
Mid.
<?h1?>
End.

View File

@@ -0,0 +1,10 @@
Pre.
[<h1 bml='1'>User Links <h1 bml='1'>Inner</h1> <h1 bml='1'></h1></h1>]
Mid.
<h1 bml='1'></h1>
End.

265
bml/test/fake_root/bml-test.bml Executable file
View File

@@ -0,0 +1,265 @@
<?_info
localblocks<=
pof=>{s}<a href='/paidaccounts/'><img src='<?imgprefix?>/talk/md10_thumbup.gif' width='25' height='19' alt='&#10004;' style='vertical-align: middle; border: 0;' /></a>
pef=>{s}<a href='/paidaccounts/'><img src='<?imgprefix?>/talk/sm08_star.gif' width='25' height='19' alt='&#9786;' style='vertical-align: middle; border: 0;' /></a>
h1=>{D}<h1 bml='1'>%%data%%</h1>
page<=
{F}<html>
<head><title>%%title%%</title></head>
<body>
%%body%%
</body></html>
<=page
<=localblocks
_info?><?page
head<=
<style type="text/css">
<!--
li { font-weight: bold; }
li.header { font-weight: normal; }
-->
</style>
<=head
title=>Site Map
body<=
<?p foo p?>
<?p bar p?>
<?p baz <?p baznest p?> endbaz p?>
<?pof?> = Paid Only Feature<br />
<?pef?> = Enhanced for Paid Users
<?h1 User Links <?h1 Inner h1?> <?h1?> h1?>
<?h1?>
<table style='margin-top: 10px' cellpadding="2" width="100%">
<tr valign="top"><td>
<ul>
<li class="header"><?h2 Your Account: h2?>
<ul>
<li><a href="/create.bml">Create an Account</a></li>
<li><a href="/login.bml">Login to your Account</a></li>
<li><a href="/update.bml">Update your Journal</a></li>
<li><a href="/editjournal.bml">Edit your Journal Entries</a></li>
<li><a href="/lostinfo.bml">Lost Password?</a></li>
<li><a href="/changepassword.bml">Change Account Password</a></li>
<li><a href="/tools/emailmanage.bml">Email Management</a></li>
<li><a href="/accountstatus.bml">Delete/Undelete your Journal</a></li>
<li><a href="/manage/files.bml">File Manager</a></li>
</ul>
</li>
<li class="header"><?h2 Your Settings: h2?>
<ul>
<li><a href="/manage/">Manage all Settings</a></li>
<li><a href="/editinfo.bml">Edit your Information</a> <?pef?></li>
<li><a href="/customize/">Customize your Journal</a> <?pef?></li>
<li><a href="/manage/links.bml">Create Link List</a> <?pef?></li>
<li><a href="/manage/siteopts.bml">Browse Preferences</a></li>
<li><a href="/editpics.bml">Edit and Upload User Picture Icons</a> <?pef?></li>
<li><a href="/manage/emailpost.bml">Email Gateway Settings</a> <?pof?></li>
<li><a href="/manage/phonepost.bml">Post by Phone Settings</a> <?pof?></li>
</ul>
</li>
<li class="header"><?h2 Tools: h2?>
<ul>
<li><a href="/portal/">Portal</a></li>
<li><a href="/invite/">Invite a Friend</a> <?pef?></li>
<li><a href="/misc/whereami.bml">Where am I?</a></li>
<li><a href="/admin/console">Administrative Console</a> - <a href="/admin/console/reference.bml">Reference</a></li>
<li><a href="/tools/textmessage.bml">Text Message Tool</a> <?pof?></li>
<li><a href="/poll/create.bml">Poll Creator</a> <?pof?></li>
<li><a href="/tools/memories.bml">Memorable Posts</a></li>
<li><a href="/todo/">To-Do List</a> <?pef?></li>
<li><a href="/export.bml">Export your Journal</a></li>
</ul>
</li>
<li class="header"><?h2 Friends: h2?>
<ul>
<li><a href="/friends/edit.bml">Edit Your Friends</a></li>
<li><a href="/friends/editgroups.bml">Edit Your Friend Groups</a></li>
<li><a href="/friends/filter.bml">Friends Filter</a></li>
<li><a href="/birthdays.bml">Birthdays</a></li>
<li><a href="/friends/popwithfriends.bml">Popular Users Amongst Your Friends</a> <?pof?></li>
</ul>
</li>
<li class="header"><?h2 Clients: h2?>
<ul>
<li><a href="/download/">Download A Client</a></li>
<li><a href="/update.bml">Web Update Client</a> - <a href="/update.bml?mode=full">(Full Mode)</a></li>
<li><a href="/phonepost/">Post by Phone <?pof?></li>
<li><a href="/support/faqbrowse.bml?faqcat=clients">FAQ Category</a></li>
</ul>
</li>
<li class="header"><?h2 Communities: h2?>
<ul>
<li><a href="/community/">Community Center</a></li>
<li><a href="/community/settings.bml?mode=create">Create a Community</a></li>
<li><a href="/community/manage.bml">Manage Communities</a></li>
<li><?ljcomm community_promo ljcomm?></li>
<li><?ljcomm community_quest ljcomm?></li>
<li><a href="/support/faqbrowse.bml?faqcat=community">FAQ Category</a></li>
<li><a href="/support/faqbrowse.bml?faqcat=comm-manage">Community Management FAQ</a></li>
</ul>
</li>
<li class="header"><?h2 Legal / Abuse: h2?>
<ul>
<li><a href="/legal/tos.bml">Terms Of Service</a></li>
<li><a href="/legal/privacy.bml">Privacy Policy</a></li>
<li><a href="/legal/coppa.bml">COPPA Policy</a></li>
<li><a href="/site/contract.bml">Our Social Contract</a></li>
<li><a href="/support/faqbrowse.bml?faqcat=abuse">FAQ Category</a></li>
<li><a href="/abuse/report.bml">Report Violations</a></li>
</ul>
</li>
</ul>
</td><td>
<ul>
<li class="header"><?h2 New to <?sitename?>? h2?>
<ul>
<li><a href="/site/about.bml">About <?sitename?></a></li>
<li><a href="/doc/tour">Take the LiveJournal Tour</a></li>
<li><a href="http://newbies.livejournal.com/">The Newbies Lounge</a></li>
<li><a href="/create.bml">Create an Account</a></li>
<li><a href="/support/">Have a Question?</a></li>
</ul>
</li>
<li class="header"><?h2 Paid Accounts: h2?>
<ul>
<li><a href="/paidaccounts/">Paid Accounts</a></li>
<li><a href="/site/accounts.bml">Features by Account Type</a></li>
<li><a href="/paidaccounts/status.bml">Paid Account Status</a></li>
<li><a href="/pay/history.bml">Payment History</a> - <a href="/pay/coupons.bml">Current Coupons</a></li>
<li><a href="/rename/">Rename Your Account</a></li>
<li><a href="/paidaccounts/friends.bml">Buy for Friends!</a></li>
<li><a href="/support/faqbrowse.bml?faqcat=paidaccounts">FAQ Category</a></li>
<li><a href="/phonepost/">Post by Phone</a></li>
</ul>
</li>
<li class="header"><?h2 Style System 1: h2?>
<ul>
<li><a href="/developer/styles.bml">Style Reference</a></li>
<li><a href="/styles/create.bml">Create a Style</a> <?pof?></li>
<li><a href="/styles/edit.bml">Edit Styles</a> <?pof?></li>
<li><a href="/modify.bml">Modify your S1 Settings</a> <?pef?></li>
</ul>
</li>
<li class="header"><?h2 Style System 2 h2?>
<ul>
<li><a href="/doc/s2/">S2 Manual</a></li>
<li><a href="/customize/">Customize your Journal</a></li>
<li><a href="/customize/advanced/layerbrowse.bml">Layer Browser</a></li>
<li><a href="/customize/advanced/">Advanced Customization</a> <?pof?></li>
</ul>
</li>
<li class="header"><?h2 Syndication: h2?>
<ul>
<li><a href="/syn/">Syndicated Accounts</a> <?pef?></li>
<li><?ljcomm syn_promo ljcomm?></li>
<li><a href="/syn/raw.bml">Recently Updated Feeds</a></li>
<li><a href="/support/faqbrowse.bml?faqcat=syn">FAQ Category</a></li>
</ul>
</li>
<li class="header"><?h2 Technical Support: h2?>
<ul>
<li><a href="/support/faq.bml">FAQ</a> - <a href="/support/faqpop.bml">Popular FAQs</a></li>
<li><a href="/support/submit.bml">Ask a Question</a></li>
<li><a href="/support/help.bml">Help Someone Out</a></li>
<li><a href="/support/highscores.bml">High Scores</a></li>
<li><a href="/support/changenotify.bml">Change Support Notifications</a></li>
</ul>
</li>
<li class="header"><?h2 International: h2?>
<ul>
<li><a href="/manage/siteopts.bml">Set Language</a></li>
<li><a href="/utf8convert.bml">Conversion Tool</a></li>
<li><a href="/translate/">Tool for Translation Volunteers</a></li>
</ul>
</li>
<li class="header"><?h2 Fun Stuff: h2?>
<ul>
<li><a href="./goat.bml">Frank the Goat!</a></li>
<li><a href="/users/news/50307.html?mode=reply">LiveJournal &hellip; The Song!</a></li>
<li><a href="/singles/">Singles</a> <?pof?></li>
<li><a href="/meme.bml">Meme Tracker</a></li>
<li><a href="/banners.bml">Banners</a></li>
<li><?ljcomm lj_nifty ljcomm?></li>
</ul>
</li>
<li class="header"><?h2 Search/Find Users: h2?>
<ul>
<li><a href="/random.bml">Random User</a></li>
<li><a href="/directory.bml">By Region</a> <?pof?></li>
<li><a href="/interests.bml">By Interest</a> <?pef?></li>
<li><a href="/directorysearch.bml">Directory Search</a> <?pof?></li>
</ul>
</li>
</ul></td>
</tr>
</table>
<?h1 Other Links h1?>
<table style='margin-top: 10px' cellpadding="2" width="100%">
<tr valign="top">
<td>
<ul>
<li class="header"><?h2 Development: h2?>
<ul>
<li><a href="/developer/">Developer Info</a></li>
<li><a href="/site/contributors.bml">Contributors</a></li>
<li><?ljcomm lj_dev ljcomm?></li>
<li><a href="/users/changelog">Changelog</a></li>
<li><a href="http://www.livejournal.org">LiveJournal.org</a></li>
<li><a href="http://test.livejournal.org">Test Site</a> - <?ljcomm lj_test ljcomm?></li>
<li><a href="http://cvs.livejournal.org">CVS</a></li>
<li><a href="/doc/server/">LiveJournal Server Manual</a></li>
</ul>
</li>
<li class="header"><?h2 Service Status: h2?>
<ul>
<li><a href="/news.bml">News Page</a> - <?ljuser news ljuser?></li>
<li><a href="http://status.livejournal.org">The Status of LiveJournal</a></li>
<li><?ljcomm lj_maintenance ljcomm?></li>
</ul>
</li>
<li class="header"><?h2 Offsite Tools: h2?>
<ul>
<li><a href="http://www.petekrawczyk.com/lj_connect/">LiveJournal Connect</a></li>
<li><a href="http://marnanel.org/joule">Friends List Analysis, Past &amp; Present</a></li>
<li><a href="http://livejournal.meetup.com/">Meetup!</a></li>
</ul>
</li>
</ul>
</td><td>
<ul>
<li class="header"><?h2 Feedback: h2?>
<ul>
<li><a href="/suggestions/">Suggestions</a></li>
<li><a href="/support/">Technical Support</a></li>
</ul>
</li>
</ul>
<ul>
<li class="header"><?h2 Press: h2?>
<ul>
<li><a href="/press/">Press Area</a></li>
<li><a href="/press/articles.bml">LiveJournal in the Press</a> - <?ljuser press ljuser?></li>
<li><a href="/press/staff.bml">Senior Staff</a></li>
<li><a href="/stats.bml">Statistics</a></li>
</ul>
</li>
<li class="header"><?h2 Documentation: h2?>
<ul>
<li><a href="/support/faq.bml">FAQ</a></li>
<li><a href="/doc/html/">Guides</a></li>
<li><a href="/doc/server">LiveJournal Server Manual</a></li>
<li><?ljcomm lj_sysdoc ljcomm?></li>
<li><?ljcomm lj_userdoc ljcomm?></li>
</ul>
</li>
</ul>
</td></tr></table>
<?hr?>
Thanks go to <?ljuser pinrad ljuser?> for the initial version of this page.
<=body
page?>

View File

@@ -0,0 +1,245 @@
<html>
<head><title>Site Map</title></head>
<body>
<BR>foo
<BR><IMG SRC="/img/dot.gif" WIDTH=1 VSPACE=6 HEIGHT=1><BR>bar
<BR><IMG SRC="/img/dot.gif" WIDTH=1 VSPACE=6 HEIGHT=1><BR>baz <BR>baznest endbaz
<a href='/paidaccounts/'><img src='/img/talk/md10_thumbup.gif' width='25' height='19' alt='&#10004;' style='vertical-align: middle; border: 0;' /></a> = Paid Only Feature<br />
<a href='/paidaccounts/'><img src='/img/talk/sm08_star.gif' width='25' height='19' alt='&#9786;' style='vertical-align: middle; border: 0;' /></a> = Enhanced for Paid Users
<h1 bml='1'>User Links <h1 bml='1'>Inner</h1> <h1 bml='1'></h1></h1>
<h1 bml='1'></h1>
<table style='margin-top: 10px' cellpadding="2" width="100%">
<tr valign="top"><td>
<ul>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Your Account:</B></FONT>
<ul>
<li><a href="/create.bml">Create an Account</a></li>
<li><a href="/login.bml">Login to your Account</a></li>
<li><a href="/update.bml">Update your Journal</a></li>
<li><a href="/editjournal.bml">Edit your Journal Entries</a></li>
<li><a href="/lostinfo.bml">Lost Password?</a></li>
<li><a href="/changepassword.bml">Change Account Password</a></li>
<li><a href="/tools/emailmanage.bml">Email Management</a></li>
<li><a href="/accountstatus.bml">Delete/Undelete your Journal</a></li>
<li><a href="/manage/files.bml">File Manager</a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Your Settings:</B></FONT>
<ul>
<li><a href="/manage/">Manage all Settings</a></li>
<li><a href="/editinfo.bml">Edit your Information</a> <a href='/paidaccounts/'><img src='/img/talk/sm08_star.gif' width='25' height='19' alt='&#9786;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/customize/">Customize your Journal</a> <a href='/paidaccounts/'><img src='/img/talk/sm08_star.gif' width='25' height='19' alt='&#9786;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/manage/links.bml">Create Link List</a> <a href='/paidaccounts/'><img src='/img/talk/sm08_star.gif' width='25' height='19' alt='&#9786;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/manage/siteopts.bml">Browse Preferences</a></li>
<li><a href="/editpics.bml">Edit and Upload User Picture Icons</a> <a href='/paidaccounts/'><img src='/img/talk/sm08_star.gif' width='25' height='19' alt='&#9786;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/manage/emailpost.bml">Email Gateway Settings</a> <a href='/paidaccounts/'><img src='/img/talk/md10_thumbup.gif' width='25' height='19' alt='&#10004;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/manage/phonepost.bml">Post by Phone Settings</a> <a href='/paidaccounts/'><img src='/img/talk/md10_thumbup.gif' width='25' height='19' alt='&#10004;' style='vertical-align: middle; border: 0;' /></a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Tools:</B></FONT>
<ul>
<li><a href="/portal/">Portal</a></li>
<li><a href="/invite/">Invite a Friend</a> <a href='/paidaccounts/'><img src='/img/talk/sm08_star.gif' width='25' height='19' alt='&#9786;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/misc/whereami.bml">Where am I?</a></li>
<li><a href="/admin/console">Administrative Console</a> - <a href="/admin/console/reference.bml">Reference</a></li>
<li><a href="/tools/textmessage.bml">Text Message Tool</a> <a href='/paidaccounts/'><img src='/img/talk/md10_thumbup.gif' width='25' height='19' alt='&#10004;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/poll/create.bml">Poll Creator</a> <a href='/paidaccounts/'><img src='/img/talk/md10_thumbup.gif' width='25' height='19' alt='&#10004;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/tools/memories.bml">Memorable Posts</a></li>
<li><a href="/todo/">To-Do List</a> <a href='/paidaccounts/'><img src='/img/talk/sm08_star.gif' width='25' height='19' alt='&#9786;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/export.bml">Export your Journal</a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Friends:</B></FONT>
<ul>
<li><a href="/friends/edit.bml">Edit Your Friends</a></li>
<li><a href="/friends/editgroups.bml">Edit Your Friend Groups</a></li>
<li><a href="/friends/filter.bml">Friends Filter</a></li>
<li><a href="/birthdays.bml">Birthdays</a></li>
<li><a href="/friends/popwithfriends.bml">Popular Users Amongst Your Friends</a> <a href='/paidaccounts/'><img src='/img/talk/md10_thumbup.gif' width='25' height='19' alt='&#10004;' style='vertical-align: middle; border: 0;' /></a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Clients:</B></FONT>
<ul>
<li><a href="/download/">Download A Client</a></li>
<li><a href="/update.bml">Web Update Client</a> - <a href="/update.bml?mode=full">(Full Mode)</a></li>
<li><a href="/phonepost/">Post by Phone <a href='/paidaccounts/'><img src='/img/talk/md10_thumbup.gif' width='25' height='19' alt='&#10004;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/support/faqbrowse.bml?faqcat=clients">FAQ Category</a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Communities:</B></FONT>
<ul>
<li><a href="/community/">Community Center</a></li>
<li><a href="/community/settings.bml?mode=create">Create a Community</a></li>
<li><a href="/community/manage.bml">Manage Communities</a></li>
<li><span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=community_promo'><img src='/img/community.gif' alt='userinfo' width='16' height='16' style='vertical-align:bottom;border:0;' /></a><a href='/community/community_promo/'><b>community_promo</b></a></span></li>
<li><span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=community_quest'><img src='/img/community.gif' alt='userinfo' width='16' height='16' style='vertical-align:bottom;border:0;' /></a><a href='/community/community_quest/'><b>community_quest</b></a></span></li>
<li><a href="/support/faqbrowse.bml?faqcat=community">FAQ Category</a></li>
<li><a href="/support/faqbrowse.bml?faqcat=comm-manage">Community Management FAQ</a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Legal / Abuse:</B></FONT>
<ul>
<li><a href="/legal/tos.bml">Terms Of Service</a></li>
<li><a href="/legal/privacy.bml">Privacy Policy</a></li>
<li><a href="/legal/coppa.bml">COPPA Policy</a></li>
<li><a href="/site/contract.bml">Our Social Contract</a></li>
<li><a href="/support/faqbrowse.bml?faqcat=abuse">FAQ Category</a></li>
<li><a href="/abuse/report.bml">Report Violations</a></li>
</ul>
</li>
</ul>
</td><td>
<ul>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>New to Foo.com?</B></FONT>
<ul>
<li><a href="/site/about.bml">About Foo.com</a></li>
<li><a href="/doc/tour">Take the LiveJournal Tour</a></li>
<li><a href="http://newbies.livejournal.com/">The Newbies Lounge</a></li>
<li><a href="/create.bml">Create an Account</a></li>
<li><a href="/support/">Have a Question?</a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Paid Accounts:</B></FONT>
<ul>
<li><a href="/paidaccounts/">Paid Accounts</a></li>
<li><a href="/site/accounts.bml">Features by Account Type</a></li>
<li><a href="/paidaccounts/status.bml">Paid Account Status</a></li>
<li><a href="/pay/history.bml">Payment History</a> - <a href="/pay/coupons.bml">Current Coupons</a></li>
<li><a href="/rename/">Rename Your Account</a></li>
<li><a href="/paidaccounts/friends.bml">Buy for Friends!</a></li>
<li><a href="/support/faqbrowse.bml?faqcat=paidaccounts">FAQ Category</a></li>
<li><a href="/phonepost/">Post by Phone</a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Style System 1:</B></FONT>
<ul>
<li><a href="/developer/styles.bml">Style Reference</a></li>
<li><a href="/styles/create.bml">Create a Style</a> <a href='/paidaccounts/'><img src='/img/talk/md10_thumbup.gif' width='25' height='19' alt='&#10004;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/styles/edit.bml">Edit Styles</a> <a href='/paidaccounts/'><img src='/img/talk/md10_thumbup.gif' width='25' height='19' alt='&#10004;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/modify.bml">Modify your S1 Settings</a> <a href='/paidaccounts/'><img src='/img/talk/sm08_star.gif' width='25' height='19' alt='&#9786;' style='vertical-align: middle; border: 0;' /></a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Style System 2</B></FONT>
<ul>
<li><a href="/doc/s2/">S2 Manual</a></li>
<li><a href="/customize/">Customize your Journal</a></li>
<li><a href="/customize/advanced/layerbrowse.bml">Layer Browser</a></li>
<li><a href="/customize/advanced/">Advanced Customization</a> <a href='/paidaccounts/'><img src='/img/talk/md10_thumbup.gif' width='25' height='19' alt='&#10004;' style='vertical-align: middle; border: 0;' /></a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Syndication:</B></FONT>
<ul>
<li><a href="/syn/">Syndicated Accounts</a> <a href='/paidaccounts/'><img src='/img/talk/sm08_star.gif' width='25' height='19' alt='&#9786;' style='vertical-align: middle; border: 0;' /></a></li>
<li><span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=syn_promo'><img src='/img/community.gif' alt='userinfo' width='16' height='16' style='vertical-align:bottom;border:0;' /></a><a href='/community/syn_promo/'><b>syn_promo</b></a></span></li>
<li><a href="/syn/raw.bml">Recently Updated Feeds</a></li>
<li><a href="/support/faqbrowse.bml?faqcat=syn">FAQ Category</a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Technical Support:</B></FONT>
<ul>
<li><a href="/support/faq.bml">FAQ</a> - <a href="/support/faqpop.bml">Popular FAQs</a></li>
<li><a href="/support/submit.bml">Ask a Question</a></li>
<li><a href="/support/help.bml">Help Someone Out</a></li>
<li><a href="/support/highscores.bml">High Scores</a></li>
<li><a href="/support/changenotify.bml">Change Support Notifications</a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>International:</B></FONT>
<ul>
<li><a href="/manage/siteopts.bml">Set Language</a></li>
<li><a href="/utf8convert.bml">Conversion Tool</a></li>
<li><a href="/translate/">Tool for Translation Volunteers</a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Fun Stuff:</B></FONT>
<ul>
<li><a href="./goat.bml">Frank the Goat!</a></li>
<li><a href="/users/news/50307.html?mode=reply">LiveJournal &hellip; The Song!</a></li>
<li><a href="/singles/">Singles</a> <a href='/paidaccounts/'><img src='/img/talk/md10_thumbup.gif' width='25' height='19' alt='&#10004;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/meme.bml">Meme Tracker</a></li>
<li><a href="/banners.bml">Banners</a></li>
<li><span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=lj_nifty'><img src='/img/community.gif' alt='userinfo' width='16' height='16' style='vertical-align:bottom;border:0;' /></a><a href='/community/lj_nifty/'><b>lj_nifty</b></a></span></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Search/Find Users:</B></FONT>
<ul>
<li><a href="/random.bml">Random User</a></li>
<li><a href="/directory.bml">By Region</a> <a href='/paidaccounts/'><img src='/img/talk/md10_thumbup.gif' width='25' height='19' alt='&#10004;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/interests.bml">By Interest</a> <a href='/paidaccounts/'><img src='/img/talk/sm08_star.gif' width='25' height='19' alt='&#9786;' style='vertical-align: middle; border: 0;' /></a></li>
<li><a href="/directorysearch.bml">Directory Search</a> <a href='/paidaccounts/'><img src='/img/talk/md10_thumbup.gif' width='25' height='19' alt='&#10004;' style='vertical-align: middle; border: 0;' /></a></li>
</ul>
</li>
</ul></td>
</tr>
</table>
<h1 bml='1'>Other Links</h1>
<table style='margin-top: 10px' cellpadding="2" width="100%">
<tr valign="top">
<td>
<ul>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Development:</B></FONT>
<ul>
<li><a href="/developer/">Developer Info</a></li>
<li><a href="/site/contributors.bml">Contributors</a></li>
<li><span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=lj_dev'><img src='/img/community.gif' alt='userinfo' width='16' height='16' style='vertical-align:bottom;border:0;' /></a><a href='/community/lj_dev/'><b>lj_dev</b></a></span></li>
<li><a href="/users/changelog">Changelog</a></li>
<li><a href="http://www.livejournal.org">LiveJournal.org</a></li>
<li><a href="http://test.livejournal.org">Test Site</a> - <span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=lj_test'><img src='/img/community.gif' alt='userinfo' width='16' height='16' style='vertical-align:bottom;border:0;' /></a><a href='/community/lj_test/'><b>lj_test</b></a></span></li>
<li><a href="http://cvs.livejournal.org">CVS</a></li>
<li><a href="/doc/server/">LiveJournal Server Manual</a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Service Status:</B></FONT>
<ul>
<li><a href="/news.bml">News Page</a> - <span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=news'><img src='/img/userinfo.gif' alt='userinfo' width='17' height='17' style='vertical-align:bottom;border:0;' /></a><a href='/users/news/'><b>news</b></a></span></li>
<li><a href="http://status.livejournal.org">The Status of LiveJournal</a></li>
<li><span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=lj_maintenance'><img src='/img/community.gif' alt='userinfo' width='16' height='16' style='vertical-align:bottom;border:0;' /></a><a href='/community/lj_maintenance/'><b>lj_maintenance</b></a></span></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Offsite Tools:</B></FONT>
<ul>
<li><a href="http://www.petekrawczyk.com/lj_connect/">LiveJournal Connect</a></li>
<li><a href="http://marnanel.org/joule">Friends List Analysis, Past &amp; Present</a></li>
<li><a href="http://livejournal.meetup.com/">Meetup!</a></li>
</ul>
</li>
</ul>
</td><td>
<ul>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Feedback:</B></FONT>
<ul>
<li><a href="/suggestions/">Suggestions</a></li>
<li><a href="/support/">Technical Support</a></li>
</ul>
</li>
</ul>
<ul>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Press:</B></FONT>
<ul>
<li><a href="/press/">Press Area</a></li>
<li><a href="/press/articles.bml">LiveJournal in the Press</a> - <span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=press'><img src='/img/userinfo.gif' alt='userinfo' width='17' height='17' style='vertical-align:bottom;border:0;' /></a><a href='/users/press/'><b>press</b></a></span></li>
<li><a href="/press/staff.bml">Senior Staff</a></li>
<li><a href="/stats.bml">Statistics</a></li>
</ul>
</li>
<li class="header"><P><FONT FACE="Arial,Helvetica" COLOR="#CC0000" SIZE=-1><B>Documentation:</B></FONT>
<ul>
<li><a href="/support/faq.bml">FAQ</a></li>
<li><a href="/doc/html/">Guides</a></li>
<li><a href="/doc/server">LiveJournal Server Manual</a></li>
<li><span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=lj_sysdoc'><img src='/img/community.gif' alt='userinfo' width='16' height='16' style='vertical-align:bottom;border:0;' /></a><a href='/community/lj_sysdoc/'><b>lj_sysdoc</b></a></span></li>
<li><span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=lj_userdoc'><img src='/img/community.gif' alt='userinfo' width='16' height='16' style='vertical-align:bottom;border:0;' /></a><a href='/community/lj_userdoc/'><b>lj_userdoc</b></a></span></li>
</ul>
</li>
</ul>
</td></tr></table>
<P ALIGN="CENTER"><FONT COLOR=BLUE>*</FONT></P>
Thanks go to <span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=pinrad'><img src='/img/userinfo.gif' alt='userinfo' width='17' height='17' style='vertical-align:bottom;border:0;' /></a><a href='/users/pinrad/'><b>pinrad</b></a></span> for the initial version of this page.
</body></html>

286
bml/test/fake_root/global.look Executable file
View File

@@ -0,0 +1,286 @@
IMGPREFIX=>{S}/img
STATPREFIX=>{S}/stc
SITENAME=>{S}Foo.com
SITEROOT=>{S}http://www.lj.com/
SECURITYPRIVATE=>{Ss}<img src="<?imgprefix?>/icon_private.gif" width=16 height=16 align=absmiddle>
SECURITYPROTECTED=>{Ss}<img src="<?imgprefix?>/icon_protected.gif" width=14 height=15 align=absmiddle>
LJUSER=>{DRs}<span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=%%data%%'><img src='<?imgprefix?>/userinfo.gif' alt='userinfo' width='17' height='17' style='vertical-align:bottom;border:0;' /></a><a href='/users/%%data%%/'><b>%%data%%</b></a></span>
LJCOMM=>{DRs}<span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=%%data%%'><img src='<?imgprefix?>/community.gif' alt='userinfo' width='16' height='16' style='vertical-align:bottom;border:0;' /></a><a href='/community/%%data%%/'><b>%%data%%</b></a></span>
LJUSERF=>{DRs}<span class='ljuser' style='white-space:nowrap;'><a href='/userinfo.bml?user=%%data%%&amp;mode=full'><img src='<?imgprefix?>/userinfo.gif' alt='userinfo' width='17' height='17' style='vertical-align:bottom;border:0;' /></a><a href='/users/%%data%%/'><b>%%data%%</b></a></span>
HELP=>{DR}(<a href="%%data%%"><i>help</i></a>)
INERR=>{DR}<font color="#ff0000"><b>%%data%%</b></font>
SOERROR=>{DR}<div><b>%%data%%</b></div>
NEEDLOGIN<=
<?h1 Login Required h1?>
<?p
To view this page you must first <a href="/login.bml?ret=1">go login</a>.
p?>
<=NEEDLOGIN
BADINPUT<=
<?h1 Bad Unicode input h1?>
<?p
Your browser sent some text which is not recognised as valid text in the
UTF-8 encoding, as it should be. This might happen if you forced your browser
to view the previous page in some other encoding rather than UTF-8. It may
also indicate a bug in the browser. If you cannot get around this error,
contact us.
p?>
<=BADINPUT
REQUIREPOST<=
{S}As a security precaution, the page you're viewing requires a POST request,
not a GET. If you're trying to submit this form legitimately, please
contact us.
<=REQUIREPOST
LOAD_PAGE_INFO<=
<?_code
#line 3
@sidebar = ({ 'name' => 'Home',
'uri' => '/',
'match' => "^/(index\\.bml)?(\\?.*)?\$",
'children' => [
{ 'name' => 'Create Journal',
'uri' => '/create.bml', },
{ 'name' => 'Update',
'uri' => '/update.bml',
'extra' => '/update.bml?mode=full',
# 'children' => [
# { 'name' => 'Full Update',
# 'uri' => '/update.bml?mode=full', }
# ],
},
{ 'name' => 'Download',
'uri' => '/download/', },
],
},
{ 'name' => 'LiveJournal',
'children' => [
{ 'name' => 'News',
'match' => '^/news\\.bml\$',
'uri' => '/news.bml', },
{ 'name' => 'Paid Accounts',
'uri' => '/paidaccounts/',
'recursematch' => '^/paidaccounts/',
'children' => [
{ 'name' => 'Is this safe?',
'uri' => '/paidaccounts/whysafe.bml', },
{ 'name' => 'Progress',
'uri' => '/paidaccounts/progress.bml', },
],
},
# { 'name' => 'To-Do list',
# 'uri' => '/todo.bml', },
{ 'name' => 'Contributors',
'uri' => '/contributors.bml', },
],
},
{ 'name' => 'Customize',
'children' => [
{ 'name' => 'Modify Journal',
'uri' => '/modify.bml', },
{ 'name' => 'Create Style',
'uri' => '/createstyle.bml', },
{ 'name' => 'Edit Style',
'uri' => '/editstyle.bml', },
],
},
{ 'name' => 'Find Users',
'children' => [
{ 'name' => 'Random!',
'uri' => '/random.bml', },
{ 'name' => 'By Region',
'uri' => '/directory.bml', },
{ 'name' => 'By Interest',
'uri' => '/interests.bml', },
{ 'name' => 'Search',
'uri' => '/directorysearch.bml', }
], },
{ 'name' => 'Edit ...',
'children' => [
{ 'name' => 'Personal Info &',
'uri' => '/editinfo.bml', },
{ 'name' => 'Settings', cont => 1,
'uri' => '/editinfo.bml', },
{ 'name' => 'Your Friends',
'uri' => '/editfriends.bml', },
{ 'name' => 'Old Entries',
'uri' => '/editjournal.bml', },
{ 'name' => 'Your Pictures',
'uri' => '/editpics.bml', },
{ 'name' => 'Your Password',
'uri' => '/changepassword.bml', },
],
},
{ 'name' => 'Developer Area',
'uri' => '/developer/',
'match' => "^/developer/\$",
'recursematch' => "^/developer/",
'children' => [
{ 'name' => 'Style System',
'uri' => '/developer/styles.bml',
'children' => [
{ 'name' => 'View Types',
'uri' => '/developer/views.bml', },
{ 'name' => 'Variable List',
'uri' => '/developer/varlist.bml', },
],
},
{ 'name' => 'Embedding',
'uri' => '/developer/embedding.bml', },
{ 'name' => 'Protocol',
'uri' => '/developer/protocol.bml',
'children' => [
{ 'name' => 'Mode List',
'uri' => '/developer/modelist.bml', }
],
},
],
},
{ 'name' => 'Need Help?',
'children' => [
{ 'name' => 'Lost Password?',
'uri' => '/lostinfo.bml', },
{ 'name' => 'Freq. Asked',
'uri' => '/support/faq.bml', },
{ 'name' => 'Questions',
'uri' => '/support/faq.bml', cont => 1, },
{ 'name' => 'Support Area',
'uri' => '/support/', },
],
},
);
my $remote = LJ::get_remote();
my $remuser = $remote ? $remote->{'user'} : "";
my $uri = BML::get_uri();
if ($remuser ne "" && $uri ne "/logout.bml")
{
my $subdomain = $remuser;
$subdomain =~ s/_/-/g;
unshift @sidebar, { 'name' => "Hello, $remuser!",
'children' => [
{ 'name' => 'Your Journal',
'children' => [
{ 'name' => 'Recent',
'uri' => "/users/$remuser/", },
{ 'name' => 'Calendar',
'uri' => "/users/$remuser/calendar", },
{ 'name' => 'Friends',
'uri' => "/users/$remuser/friends",
'extra' => "/friendsfilter.bml",
},
],
},
{ 'name' => 'User Info',
'uri' => "/userinfo.bml?user=$remuser", },
{ 'name' => 'Memories',
'uri' => "/memories.bml?user=$remuser", },
{ 'name' => 'Logout',
'uri' => '/logout.bml', },
]
};
} elsif ($uri ne "/login.bml") {
unshift @sidebar, { 'name' => "Log In",
'uri' => '/login.bml', }
}
return "";
_code?>
<=LOAD_PAGE_INFO
AL=>{P}<i><a href="%%data1%%">%%data2%%</a></i> <img src="/img/external_link.gif" width='16' height='11' align='absmiddle' />
AWAYLINK=>{P}<i><a href="%%data1%%">%%data2%%</a></i> <img src="/img/external_link.gif" width='16' height='11' align='absmiddle' />
H1=>{D}<h1>%%data%%</h1>
H2=>{D}<h2>%%data%%</h2>
# Banner Header: search results banner, content desriptor, etc...
BH=>{D}<p align='center'><font face="Arial,Helvetica" color="#CC0000" size='-1'><b>%%data%%</b></font>
GRIN=>{S}&lt;grin&gt;
HR=>{S}<hr />
NEWLINE=>{S}<BR>&nbsp;&nbsp;&nbsp;&nbsp;
P=>{D}<P>%%data%%</P>
STANDOUT<=
{D}<blockquote>
<hr />
%%data%%
<hr />
</blockquote>
<=STANDOUT
BADCONTENT<=
<?h1 Error h1?>
<?p
One or more errors occured processing your request. Please go back, correct the
necessary information, and submit your data again.
p?>
<=BADCONTENT
DE<=
%%data%%
<=DE
EMCOLOR=>{S}#c0c0c0
HOTCOLOR=>{S}#ff0000
EMCOLORLITE=>{S}#e2e2e2
screenedbarcolor=>{S}#d0d0d0
CHOICE=>{P}<dt><a href="%%data2%%"><font size="+1"><tt><b>%%data1%%</b></tt></font></a><dd><font size="2">%%data3%%</font>
CHOICES<=
{F}<table width="100%" cellpadding="2" cellspacing="5">
<tr>
<td valign='top' width="50%">
<dl>
%%items%%
</dl>
</td>
<td valign='top' width="50%">
<dl>
%%itemsb%%
</dl>
</td>
</tr>
</table>
<=CHOICES
PAGE<=
{Fp}<html>
<head><title>%%title%%</title>%%head%%</head>
<body %%bodyopts%%>
%%body%%
</body>
</html>
<=PAGE
CHALRESPJS<=
<script type="text/javascript" src="/js/md5.js"></script>
<script language="JavaScript">
<!--
function sendForm ()
{
if (! document.getElementById) return true;
var loginform = document.getElementById('login');
if (! loginform) return true;
var pass_ele = document.getElementById('xc_password');
var chal_ele = document.getElementById('login_chal');
var resp_ele = document.getElementById('login_response');
if (! pass_ele || ! chal_ele || ! resp_ele) return true;
var pass = pass_ele.value;
var chal = chal_ele.value;
var res = MD5(chal + MD5(pass));
resp_ele.value = res;
pass_ele.value = ""; // dont send clear-text password!
loginform.submit();
return false; // cancel browser submit
}
// -->
</script>
<=CHALRESPJS

9
bml/test/include/_config.bml Executable file
View File

@@ -0,0 +1,9 @@
LookRoot $testlookroot
DefaultScheme scheme
DefaultLanguage en
AllowOldSyntax 0
AllowCode 1
AllowTemplateCode 1

31
bml/test/include/loremipsum.txt Executable file
View File

@@ -0,0 +1,31 @@
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque convallis
lacus vel dui. Nam nec augue in massa bibendum consectetuer. In porttitor
nulla. Integer volutpat placerat justo. Etiam interdum pulvinar risus. Sed ut mi
sit amet nulla euismod pulvinar. Phasellus sed turpis. Aliquam in leo in wisi
auctor feugiat. Quisque consequat ante id orci. Sed condimentum pede id
elit. Proin vitae nunc nec arcu ornare tincidunt. Ut mollis interdum
augue. Integer id felis. Nulla facilisis faucibus sapien. Praesent vehicula
luctus wisi. Sed volutpat augue nec lacus vulputate pretium. Suspendisse
potenti. Sed blandit semper tellus.
Ut tortor. Class aptent taciti sociosqu ad litora torquent per conubia nostra,
per inceptos hymenaeos. Phasellus id metus. Phasellus interdum lacinia
leo. Pellentesque a massa. Aliquam non justo. Proin enim metus, nonummy sit
amet, ornare eu, convallis vel, arcu. Pellentesque tempor rhoncus
mauris. Praesent malesuada pulvinar turpis. Vestibulum ante ipsum primis in
faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus nunc. Mauris
imperdiet mi nec libero. Maecenas purus velit, fringilla id, mattis sed,
pulvinar id, ligula. Vivamus vel erat vel diam cursus eleifend.
Donec massa est, mollis ac, placerat iaculis, vehicula id, dolor. Quisque
malesuada diam vel pede. Suspendisse egestas. Sed imperdiet tellus non
magna. Etiam luctus, wisi ut fringilla pharetra, tortor lorem suscipit libero,
nec imperdiet ante dolor mollis wisi. Nulla feugiat, erat non viverra mattis,
massa dui molestie orci, vitae bibendum dolor orci id ligula. Quisque
lorem. Donec fringilla vehicula ante. Nam convallis, sapien vitae interdum
mattis, nisl diam egestas enim, ac posuere nisl elit ut purus. Nullam
nonummy. Nulla felis. Fusce cursus lorem quis enim. Suspendisse mattis luctus
magna. Morbi ligula lectus, bibendum ac, tempus ac, scelerisque ac,
pede. Praesent lobortis lectus a libero. Sed luctus, dui a porttitor congue,
neque metus facilisis orci, sit amet congue lorem ligula ut magna. Vivamus non
orci.

6
bml/test/include/plain.bml Executable file
View File

@@ -0,0 +1,6 @@
Some Plain Text:
<?_include
bml=>1
code=>0
file=>loremipsum.txt
_include?>

2
bml/test/include/plain.correct Executable file
View File

@@ -0,0 +1,2 @@
Some Plain Text:
[Error: <b>Could not open include file.</b>]

1
bml/test/include/scheme.look Executable file
View File

@@ -0,0 +1 @@

9
bml/test/info/_config.bml Executable file
View File

@@ -0,0 +1,9 @@
LookRoot $testlookroot
DefaultScheme scheme
DefaultLanguage en
AllowOldSyntax 0
AllowCode 1
AllowTemplateCode 1

9
bml/test/info/localblocks.bml Executable file
View File

@@ -0,0 +1,9 @@
<?_info
localblocks<=
bracketed=>[ %%DATA%% ]
braced=>{ %%DATA%% }
grouped=>( %%DATA%% )
<=localblocks
_info?>
<?bracketed <?braced <?bracketed <?grouped fish grouped?> bracketed?> braced?> bracketed?>

View File

@@ -0,0 +1,3 @@
[ { [ ( fish ) ] } ]

9
bml/test/info/package.bml Executable file
View File

@@ -0,0 +1,9 @@
<?_c
What the hell does package do?
_c?>
<?_info
package=>Foo
_info?>

2
bml/test/info/package.correct Executable file
View File

@@ -0,0 +1,2 @@

0
bml/test/info/scheme.look Executable file
View File

82
bml/test/newtest.pl Executable file
View File

@@ -0,0 +1,82 @@
#!/usr/bin/perl -w
package newtest;
use strict;
use warnings qw{all};
BEGIN {
use Term::Prompter qw{};
use FindBin qw{$Bin};
use Cwd qw{getcwd};
use IO::File qw{};
use Fcntl qw{O_WRONLY O_CREAT O_EXCL};
}
my (
$prompter,
$olddir,
$testname,
$firstfile,
$ofh,
);
$olddir = getcwd();
chdir $Bin;
$prompter = new Term::Prompter;
$prompter->promptColor( 'cyan' );
# Prompt for the information about this test
$prompter->message( "This will create a new test subdirectory and create the \n",
"necessary files and links.\n" );
$testname = $prompter->prompt( "Name of the test subdirectory:" )
or exit 1;
$firstfile = $prompter->promptWithDefault( 'index.bml', "Name of the first BML test file" );
$firstfile .= ".bml" unless $firstfile =~ m{\.bml$};
# Make the test directory, symlink the config, and add the new files to it
$prompter->message( "Creating '$testname' directory..." );
mkdir $testname or die "mkdir: $testname: $!";
symlink "../_config.bml", "$testname/_config.bml"
or die "symlink: _config.bml -> $testname/_config.bml: $!";
$prompter->message( "Creating BML file '$testname/$firstfile'..." );
$ofh = new IO::File "$testname/$firstfile", O_WRONLY|O_CREAT|O_EXCL
or die "open: $testname/$firstfile: $!";
$ofh->print( <<"EOF" );
<!-- You should, of course, replace this with your own stuff... -->
<?example This is an example call to a block. example?>
EOF
$ofh->close;
$prompter->message( "Creating lookfile '$testname/scheme.look'..." );
$ofh = new IO::File "$testname/scheme.look", O_WRONLY|O_CREAT|O_EXCL
or die "open: $testname/scheme.look: $!";
$ofh->print( <<"EOF" );
example=>{D}<example>%%DATA%%</example>
EOF
$ofh->close;
chdir( $olddir );
# Give instructions to the user
( my $correct = $firstfile ) =~ s{\.bml$}{.correct};
$prompter->message( <<"EOF" );
Now you need to do three things to finish setting up the test:
1. Edit $testname/scheme.look and add the blocks you're testing.
2. Edit $testname/$firstfile and add your test content.
3. When you're done, add '$testname' to the list of tests to run in the
\@TestSubdirs var in t/20_render.t.
Then when you run the new test for the first time, it'll generate a comparison
test output file in $testname/$correct which you should verify for
correctness.
EOF

9
bml/test/recursion/_config.bml Executable file
View File

@@ -0,0 +1,9 @@
LookRoot $testlookroot
DefaultScheme scheme
DefaultLanguage en
AllowOldSyntax 0
AllowCode 1
AllowTemplateCode 1

11
bml/test/recursion/infinite.bml Executable file
View File

@@ -0,0 +1,11 @@
Simple infinite recursion:
<?rtag Foo rtag?>
Complex infinite recursion:
<?1tag
From there to here,
from here to there,
funny things
are everywhere.
1tag?>

View File

@@ -0,0 +1,6 @@
Simple infinite recursion:
<b>[Error: Too deep recursion: RTAG -> RTAG -> RTAG -> RTAG -> RTAG -> RTAG -> RTAG -> RTAG -> RTAG -> RTAG -> RTAG]</b>
Complex infinite recursion:
<b>[Error: Too deep recursion: 1TAG -> 2TAG -> REDTAG -> BLUETAG -> 1TAG -> 2TAG -> REDTAG -> BLUETAG -> 1TAG -> 2TAG -> REDTAG]</b>

1
bml/test/recursion/nested.bml Executable file
View File

@@ -0,0 +1 @@
<?outer Foo outer?>

View File

@@ -0,0 +1 @@
[outer: [inner: Foo]]

7
bml/test/recursion/scheme.look Executable file
View File

@@ -0,0 +1,7 @@
rtag=>{D}<?rtag %%DATA%% rtag?>
outer=>{D}[outer: <?inner %%DATA%% inner?>]
inner=>{D}[inner: %%DATA%%]
1tag=>{D}<?2tag %%DATA%% 2tag?>
2tag=>{D}<?redtag %%DATA%% redtag?>
redtag=>{D}<?bluetag %%DATA%% bluetag?>
bluetag=>{D}<?1tag %%DATA%% 1tag?>

View File

@@ -0,0 +1,9 @@
LookRoot $testlookroot
DefaultScheme scheme
DefaultLanguage en
AllowOldSyntax 0
AllowCode 1
AllowTemplateCode 1

View File

@@ -0,0 +1 @@
<? Some stuff

View File

@@ -0,0 +1 @@
<? Some stuff

View File

@@ -0,0 +1,2 @@
Tag vs Tga:
<?tag Foo tga?>

View File

@@ -0,0 +1,2 @@
Tag vs Tga:
[Error: <b>BML block 'TAG' has no close</b>]

View File

@@ -0,0 +1,7 @@
<?tag
Some stuff
?>

View File

@@ -0,0 +1 @@
[Error: <b>BML block 'TAG' has no close</b>]

View File

@@ -0,0 +1,2 @@
tag=>{D}[Tag: %%DATA%%]

View File

@@ -0,0 +1,12 @@
Tag with spurious space:
<?tag Foo t ag?>
Tag with leading padding:
<? tag Foo tag?>
Tag with padding on both sides:
<? tag Foo tag ?>
Tag with trailing padding:
<?tag Foo tag ?>

View File

@@ -0,0 +1,11 @@
Tag with spurious space:
[Tag: Foo t ag?>
Tag with leading padding:
<? tag Foo]
Tag with padding on both sides:
<? tag Foo tag ?>
Tag with trailing padding:
[Error: <b>BML block 'TAG' has no close</b>]

View File

@@ -0,0 +1,8 @@
<html>
<head><title><?project project?></title>
<body>
<h1><?project project?></h1>
<?greeting greeting?>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<html>
<head><title>The Alabaster Project</title>
<body>
<h1>The Alabaster Project</h1>
<p>Welcome to The Alabaster Project, a joint effort between the citizens of earth
and Spumco, Inc.</p>
</body>
</html>

View File

@@ -0,0 +1,6 @@
project=>The Alabaster Project
greeting<=
<p>Welcome to <?project project?>, a joint effort between the citizens of earth
and Spumco, Inc.</p>
<=greeting

View File

@@ -0,0 +1,27 @@
<html>
<head><title>Hansel and Grendel Go to Finishing School</title>
<body>
<?heading Hansel and Grendel Go to Finishing School heading?>
<p>Our story begins at a point in the Universe not unlike where you are now
sitting, drinking your government-sanctioned stimulant, dreaming of the
day when you, too, will own your own personalized luxury home on 0.3 acres
of land, with a stunning view of, well, the neighbor's personalized luxury
home on 0.3 acres of land. Except this point in the Universe is much more
exciting, fine-smelling, and generally a better place to be than
yours.</p>
<?subheading No, Really, It Is Much Finer subheading?>
<p>So, anyway, at this particular point in the Universe, on a day not
entirely unlike today, two entirely unrelated mythological pantheons
collided, resulting in a fast friendship between a Little Boy Bound to be
Eaten by the Architypal Crone and a Faceless Beast That Waits for the Hero
to Dispatch It. Which, as you might have guessed, was not the intention of
the various storytellers involved, but that's what happens when people
stop reading all the really cool stories and start checking the Financial
Section every 12 minutes. There's only so much space to go around in the
collective consciousness, you know...</p>
</body>
</html>

View File

@@ -0,0 +1,27 @@
<html>
<head><title>Hansel and Grendel Go to Finishing School</title>
<body>
<h1>Hansel and Grendel Go to Finishing School</h1>
<p>Our story begins at a point in the Universe not unlike where you are now
sitting, drinking your government-sanctioned stimulant, dreaming of the
day when you, too, will own your own personalized luxury home on 0.3 acres
of land, with a stunning view of, well, the neighbor's personalized luxury
home on 0.3 acres of land. Except this point in the Universe is much more
exciting, fine-smelling, and generally a better place to be than
yours.</p>
<h2>No, Really, It Is Much Finer</h2>
<p>So, anyway, at this particular point in the Universe, on a day not
entirely unlike today, two entirely unrelated mythological pantheons
collided, resulting in a fast friendship between a Little Boy Bound to be
Eaten by the Architypal Crone and a Faceless Beast That Waits for the Hero
to Dispatch It. Which, as you might have guessed, was not the intention of
the various storytellers involved, but that's what happens when people
stop reading all the really cool stories and start checking the Financial
Section every 12 minutes. There's only so much space to go around in the
collective consciousness, you know...</p>
</body>
</html>

View File

@@ -0,0 +1,2 @@
heading=><h1>%%DATA%%</h1>
subheading=><h2>%%DATA%%</h2>

View File

@@ -0,0 +1,3 @@
<?heading Lava Lamps heading?>
<?subhead Oil-based Lava Lamps (and Chickens) subhead?>

View File

@@ -0,0 +1,6 @@
<h1 class="heading"><img src="logo.png"/> Lava Lamps</h1>
<!-- This is a subheading, which naturally requires a chicken above it -->
<img src="chicken.png" /><br />
<h2 class="subheading">Oil-based Lava Lamps (and Chickens)</h2>

View File

@@ -0,0 +1,6 @@
heading=><h1 class="heading"><img src="logo.png"/> %%DATA%%</h1>
subhead<=
<!-- This is a subheading, which naturally requires a chicken above it -->
<img src="chicken.png" /><br />
<h2 class="subheading">%%DATA%%</h2>
<=subhead

View File

@@ -0,0 +1,9 @@
<?section
id=>listrules
heading=>Rules of the Lists
body<=
There are many considerations when engaging in mounted combat at a tourney, not
the least of which is obeying the convoluted and sometimes confusing localized
<em>Rules of the Lists</em>.
<=body
section?>

View File

@@ -0,0 +1,9 @@
<div id="section-listrules" class="section">
<h3>Rules of the Lists</h3>
<p>There are many considerations when engaging in mounted combat at a tourney, not
the least of which is obeying the convoluted and sometimes confusing localized
<em>Rules of the Lists</em>.
</p>
</div>

View File

@@ -0,0 +1,11 @@
smallcaps=>{D}<span style="font-variant: small-caps">%%DATA%%</span>
topiclink=>{F}<a href="/topic.pl?name=%%name%%">%%linktext%%</a>
section<=
{F}
<div id="section-%%id%%" class="section">
<h3>%%heading%%</h3>
<p>%%body%%</p>
</div>
<=section

View File

@@ -0,0 +1,9 @@
LookRoot $testlookroot
DefaultScheme scheme
DefaultLanguage en
AllowOldSyntax 0
AllowCode 1
AllowTemplateCode 1

View File

@@ -0,0 +1,8 @@
<?linklist
date=>2004/10/14
items<=
<?linkitem News of Brad|http://brad.livejournal.com/|Brad's daily adventure linkitem?>
<?linkitem BoingBoing|http://boingboing.net/|A directory of wonderful things linkitem?>
<?linkitem WPGtR|http://poignantguide.net/ruby/|Wow, this book comes with an onion! linkitem?>
<=items
linklist?>

View File

@@ -0,0 +1,10 @@
<h4>My Current Reading List</h4>
<dl>
<dt><a href="http://brad.livejournal.com/">News of Brad</a></dt> <dd>Brad's daily adventure</dd>
<dt><a href="http://boingboing.net/">BoingBoing</a></dt> <dd>A directory of wonderful things</dd>
<dt><a href="http://poignantguide.net/ruby/">WPGtR</a></dt> <dd>Wow, this book comes with an onion!</dd>
</dl>
<p><small>Last updated: 2004/10/14</small></p>

View File

@@ -0,0 +1,11 @@
LINKITEM=>{P}<dt><a href="%%data2%%">%%data1%%</a></dt> <dd>%%data3%%</dd>
LINKLIST<=
{F}
<h4>My Current Reading List</h4>
<dl>
%%items%%
</dl>
<p><small>Last updated: %%date%%</small></p>
<=LINKLIST

View File

@@ -0,0 +1,4 @@
<h1>Welcome to <?companyname companyname?></h1>

View File

@@ -0,0 +1,4 @@
<h1>Welcome to Spumco, Inc.</h1>

View File

@@ -0,0 +1,3 @@
companyname=>{S}Spumco, Inc.

View File

@@ -0,0 +1,5 @@
<!-- You should, of course, replace this with your own stuff... -->
<?example This is an example call to a block. example?>

View File

@@ -0,0 +1,5 @@
<!-- You should, of course, replace this with your own stuff... -->
<example>This is an example call to a block.</example>

View File

@@ -0,0 +1,3 @@
example=>{D}<example>%%DATA%%</example>

9
bml/test/tutorial1/_config.bml Executable file
View File

@@ -0,0 +1,9 @@
LookRoot $testlookroot
DefaultScheme scheme
DefaultLanguage en
AllowOldSyntax 0
AllowCode 1
AllowTemplateCode 1

21
bml/test/tutorial1/index.bml Executable file
View File

@@ -0,0 +1,21 @@
<html>
<head>
<title>FooBar Enterprises - Page</title>
</head>
<body>
<h1 class="header">FooBar Enterprises - Page</h1>
<hr />
<?header Headers - What good are they? header?>
<p class="para" style="text-align: justify">
This is just an introductory text. The normal way to include text like this
is to write it in Latin, but since I don't know Latin, you'll have to settle
with this little paragraph.
</p>
<?header Templates are for Wimps! header?>
<p class="para">
I'd rather have to edit all of my pages by hand when I decide to change the
unified look of my site!
</p>
</body>
</html>

View File

@@ -0,0 +1,20 @@
<html>
<head>
<title>FooBar Enterprises - Page</title>
</head>
<body>
<h1 class="header">FooBar Enterprises - Page</h1>
<hr />
<div class="header"><strong>Headers - What good are they?</strong></div>
<p class="para" style="text-align: justify">
This is just an introductory text. The normal way to include text like this
is to write it in Latin, but since I don't know Latin, you'll have to settle
with this little paragraph.
</p>
<div class="header"><strong>Templates are for Wimps!</strong></div>
<p class="para">
I'd rather have to edit all of my pages by hand when I decide to change the
unified look of my site!
</p>
</body>
</html>

2
bml/test/tutorial1/scheme.look Executable file
View File

@@ -0,0 +1,2 @@
header=>{D}<div class="header"><strong>%%DATA%%</strong></div>

9
bml/test/tutorial2/_config.bml Executable file
View File

@@ -0,0 +1,9 @@
LookRoot $testlookroot
DefaultScheme scheme
DefaultLanguage en
AllowOldSyntax 0
AllowCode 1
AllowTemplateCode 1

18
bml/test/tutorial2/index.bml Executable file
View File

@@ -0,0 +1,18 @@
<?page
title=>FooBar Enterprises - Page
body<=
<?h1 FooBar Enterprises - Page h1?>
<hr />
<?header Headers - What good are they? header?>
<p class="para" style="text-align: justify">
This is just an introductory text. The normal way to include text like this
is to write it in Latin, but since I don't know Latin, you'll have to settle
with this little paragraph.
</p>
<?header Templates are for Wimps! header?>
<p class="para">
I'd rather have to edit all of my pages by hand when I decide to change the
unified look of my site!
</p>
<=body
page?>

View File

@@ -0,0 +1,21 @@
<html>
<head>
<title>FooBar Enterprises - Page</title>
</head>
<body>
<h1 class="header">FooBar Enterprises - Page</h1>
<hr />
<div class="header"><strong>Headers - What good are they?</strong></div>
<p class="para" style="text-align: justify">
This is just an introductory text. The normal way to include text like this
is to write it in Latin, but since I don't know Latin, you'll have to settle
with this little paragraph.
</p>
<div class="header"><strong>Templates are for Wimps!</strong></div>
<p class="para">
I'd rather have to edit all of my pages by hand when I decide to change the
unified look of my site!
</p>
</body>
</html>

13
bml/test/tutorial2/scheme.look Executable file
View File

@@ -0,0 +1,13 @@
page<=
{F}<html>
<head>
<title>%%title%%</title>
</head>
<body>
%%body%%
</body>
</html>
<=page
header=>{D}<div class="header"><strong>%%DATA%%</strong></div>
h1=>{D}<h1 class="header">%%DATA%%</h1>