release-notes/devel/scripts Makefile, NONE, 1.1 index.html.in, NONE, 1.1 mkindex, NONE, 1.1 mkindex.awk, NONE, 1.1 mkindex.map, NONE, 1.1

Tommy Reynolds (jtr) fedora-docs-commits at redhat.com
Sun Sep 17 21:11:33 UTC 2006


Author: jtr

Update of /cvs/docs/release-notes/devel/scripts
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv25378

Added Files:
	Makefile index.html.in mkindex mkindex.awk mkindex.map 
Log Message:
Adaptive "index.html" for the Release Notes.



--- NEW FILE Makefile ---
# The values below will be overriden when this script is invoked from
# Makefile.common with the proper values.

PRI_LANG=en_US
OTHERS	=de ru

all::	index.html

index.html:: mkindex mkindex.awk mkindex.map
	./mkindex -o $@ ${PRI_LANG} ${OTHERS}

clean::

distclean clobber:: clean
	${RM} index.html


--- NEW FILE index.html.in ---
<!--
	vim: ts=2 sw=2
  -->
<HTML>
<HEAD>
<SCRIPT language="javascript">
<!--
function getlanguage() {
	language=navigator.language.replace( /-/, "_");
	if( language == "" )	{
		language = "C";
	}
	// prefix="/usr/share/doc/fedora-release-5/RELEASE-NOTES-";
	// suffix=".html";
	prefix = "<prefix/>";
	suffix = "<suffix/>";
	switch( language )	{
	default :
		middle = language.substring( 0, 1 );
		switch( middle )	{
			default:
				middle = "C";
				break;
				<SHORTS/>
		}
		break;
		<LOCALES/>
	}
	window.location=prefix + middle + suffix;
}
// -->
</SCRIPT>
</HEAD>
<BODY onload="javascript:getlanguage();">
	<H1>Fedora Release Notes</H1>
	<PARA>
		In a moment, you should see the release notes in your language.
	</PARA>
	<PARA>
		Depending on your browser, we may not be able to determine the
		proper language to use.
	</PARA>
	<PARA>
		If there is any problem, choose from the list below.
	</PARA>
	<PARA>
		Use the links below to view the Feodra Release Notes in the language 
		of your choice.
	</PARA>
	<DL>
	<ITEMS/>
	</DL>
</BODY>
</HTML>


--- NEW FILE mkindex ---
#!/bin/bash
MYDIR=$(dirname $0)
ME=$(basename $0)
USAGE="usage: ${ME} [-o ofile] [-s skel] lang1 ... langN"

OFILE=
SKEL="${MYDIR}/index.html.in"
MAP="${MYDIR}/${ME}.map"

while getopts :m:s:o: c
do
	case "${c}" in
	s)	SKEL="${OPTARG}";;
	o)	OFILE="${OPTARG}";;
	*)
		echo "${ME}: unknown switch -${OPTARG}" >&2
		exit 1
	esac
done
shift $(expr ${OPTIND} - 1 )
if [ $# -eq 0 ]; then
	echo "${USAGE}" >&2
	exit 1
fi
if [ "${OFILE}" ]; then
	rm -f "${OFILE}"
	exec >"${OFILE}"
fi
LANGS="$@"
SCRIPT="${MYDIR}/${ME}.awk"
set -x
exec /bin/awk -f "${SCRIPT}" -v LANGS="${LANGS}" -v MAP="${MAP}" "${SKEL}"


--- NEW FILE mkindex.awk ---
BEGIN	{
	prefix="/usr/share/doc/fedora-release-5/RELEASE-NOTES-";
	suffix=".html";
	nLangs = split( LANGS, langs );
	for( i = 1; i <= nLangs; ++i )	{
		lang = langs[ i ]
		loc = substr( lang, 1, 2 )
		shorts[ loc ] = loc
	}
	# Read in the maps
	while( getline < MAP > 0 )	{
		sub( /#.*$/, "" )
		if( NF >= 2 )	{
			src = $1
			dst = $2
			$1 = ""
			$2 = ""
			note = $0
			maps[ src ] = dst
			notes[ src ] = note
		}
	}
}
{
	gsub( /<prefix\/>/, prefix )
	gsub( /<suffix\/>/, suffix )
}
/<LOCALES\/>/	{
	printf "// Attempt to match specific locales\n"
	for( i = 1; i <= nLangs; ++i )	{
		lang = langs[ i ]
		printf "\tcase \"%s\":\n", lang
		if( lang in maps )	{
			printf "\tmiddle = \"%s\";\n", maps[ lang ]
		}
		printf "\t\tbreak;\n"
	}
	next
}
/<SHORTS\/>/	{
	printf "\t// Attempt to match generic locales\n"
	for( lang in shorts )	{
		printf "\t\tcase \"%s\":\n", lang
		if( lang in maps )	{
			printf "\t\t\tmiddle = \"$s\";\n", maps[ lang ]
		}
		printf "\t\t\tbreak;\n"
	}
	next
}
/<ITEMS\/>/	{
	for( i = 1; i <= nLangs; ++i )	{
		url = prefix lang suffix
		print "<DT>"
		if( lang in notes )	{
			print notes[ lang ]
		} else	{
			print lang
		}
		print "</DT>"
		print "<DD>"
		printf "\t<a href=\"%s\">%s</a>\n", url, url
		print "</DD>"
	}
	for( lang in shorts )	{
		url = prefix lang suffix
		if( lang in notes )	{
			print notes[ lang ]
		} else	{
			print lang
		}
		print "<DD>"
		printf "\t<a href=\"%s\">%s</a>\n", url, url
		print "</DD>"
	}
	next
}
{
	print
}


--- NEW FILE mkindex.map ---
# Map browser languages into known locales for the Release Notes
#
# Some browsers don't handle the ${LANG} environment very well, if at all.
# To try to accomodate them, we can try to map the "navigator.language"
# value reported by the browser into either the ${PRI_LANG} or ${OTHERS}
# value for which we have release notes.
#
# This isn't very robust, but it's a (perhaps, false) start.
#
# BROWSER locale desc
en_US	en	US English




More information about the docs-commits mailing list