Skip to content

Instantly share code, notes, and snippets.

@emanuele45
Last active August 29, 2015 14:04
Show Gist options
  • Save emanuele45/e7f7e73d05172da5981c to your computer and use it in GitHub Desktop.
Save emanuele45/e7f7e73d05172da5981c to your computer and use it in GitHub Desktop.

Revisions

  1. emanuele45 revised this gist Jul 23, 2014. 2 changed files with 3 additions and 1 deletion.
    1 change: 0 additions & 1 deletion other.html
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,4 @@


    <downloadtable>
    {
    "version": "4.1.0",
    3 changes: 3 additions & 0 deletions path.pm
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    ...
    [qr!other.html$!, download_others => { template => "html_page.html" }],
    ...
  2. emanuele45 created this gist Jul 23, 2014.
    68 changes: 68 additions & 0 deletions other.html
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,68 @@


    <downloadtable>
    {
    "version": "4.1.0",
    "version_short": "4.1.0",
    "milestone": "AOO410m18",
    "build": "9764",
    "svn_rev": "r1589052",
    "rel_date": "2014-Apr-29",
    "prev_version": "4.0.1",
    "oldversion": "3.4.1",
    "legacyversion": "3.3.0",
    "sf": "http://sourceforge.net/projects/openofficeorg.mirror/files/",
    "asf": "http://www.apache.org/dyn/aoo-closer.cgi/openoffice/",
    "asf_dist": "http://www.apache.org/dist/openoffice/",
    "asf_arc": "http://archive.apache.org/dist/openoffice/",
    "beta_version": "4.1.1",
    "rel_platforms": [
    {"name": "Win_x86", "postfix": "", "ext": "exe", "dlname": "exe", "header": "Windows <br \/>Intel <br \/>EXE"},
    {"name": "Linux_x86", "postfix": "-rpm", "ext": "tar.gz", "dlname": "rpm", "header": "Linux <br \/>Intel <br \/>RPM"},
    {"name": "Linux_x86", "postfix": "-deb", "ext": "tar.gz", "dlname": "deb", "header": "Linux <br \/>Intel <br \/>DEB"},
    {"name": "Linux_x86-64", "postfix": "-rpm", "ext": "tar.gz", "dlname": "rpm", "header": "Linux <br \/>x86-64<br \/>RPM"},
    {"name": "Linux_x86-64", "postfix": "-deb", "ext": "tar.gz", "dlname": "deb", "header": "Linux <br \/>x86-64<br \/>DEB"},
    {"name": "MacOS_x86-64", "postfix": "", "ext": "dmg", "dlname": "dmg", "header": "OS&nbsp;X <br \/>x86-64<br \/>DMG"}
    ],
    "langs": [
    {"code": "ast", "en": "Asturian", "full": "1", "langpack": "1", "native": "Asturianu"},
    {"code": "eu", "en": "Basque", "full": "1", "langpack": "1", "native": "Euskara"},
    {"code": "bg", "en": "Bulgarian", "full": "1", "langpack": "1", "native": "български&nbsp;език"},
    {"code": "zh-CN", "en": "Chinese&nbsp;(simplified)", "full": "1", "langpack": "1", "native": "简体中文"},
    {"code": "zh-TW", "en": "Chinese&nbsp;(traditional)", "full": "1", "langpack": "1", "native": "正體中文"},
    {"code": "cs", "en": "Czech", "full": "1", "langpack": "1", "native": "Čeština"},
    {"code": "da", "en": "Danish", "full": "1", "langpack": "1", "native": "Dansk"},
    {"code": "nl", "en": "Dutch", "full": "1", "langpack": "1", "native": "Nederlands"},
    {"code": "en-GB", "en": "English&nbsp;(GB)", "full": "1", "langpack": "1", "native": "English&nbsp;(British)"},
    {"code": "en-US", "en": "English&nbsp;(US)", "full": "1", "langpack": "1", "native": "English&nbsp;(US)"},
    {"code": "fi", "en": "Finnish", "full": "1", "langpack": "1", "native": "Suomi"},
    {"code": "fr", "en": "French", "full": "1", "langpack": "1", "native": "Fran&ccedil;ais"},
    {"code": "gd", "en": "Gaelic<br \/>(Scottish)", "full": "1", "langpack": "1", "native": "Gàidhlig"},
    {"code": "gl", "en": "Galician", "full": "1", "langpack": "1", "native": "Galego"},
    {"code": "de", "en": "German", "full": "1", "langpack": "1", "native": "Deutsch"},
    {"code": "el", "en": "Greek", "full": "1", "langpack": "1", "native": "&Epsilon;&lambda;&lambda;&eta;&nu;&iota;&kappa;ά"},
    {"code": "he", "en": "Hebrew", "full": "1", "langpack": "1", "native": "עִבְרִית"},
    {"code": "hi", "en": "Hindi", "full": "1", "langpack": "1", "native": "हिन्दी"},
    {"code": "hu", "en": "Hungarian", "full": "1", "langpack": "1", "native": "Magyar"},
    {"code": "it", "en": "Italian", "full": "1", "langpack": "1", "native": "Italiano"},
    {"code": "ja", "en": "Japanese", "full": "1", "langpack": "1", "native": "日本語"},
    {"code": "km", "en": "Khmer", "full": "1", "langpack": "1", "native": "ភាសាខ្មែរ"},
    {"code": "ko", "en": "Korean", "full": "1", "langpack": "1", "native": "한국어"},
    {"code": "lt", "en": "Lithuanian", "full": "1", "langpack": "1", "native": "Lietuvių"},
    {"code": "nb", "en": "Norwegian<br \/>(Bokmal)", "full": "1", "langpack": "1", "native": "Norsk<br \/>(Bokmål)"},
    {"code": "pl", "en": "Polish", "full": "1", "langpack": "1", "native": "Polski"},
    {"code": "pt-BR", "en": "Portuguese&nbsp;(Brazilian)", "full": "1", "langpack": "1", "native": "Portugu&ecirc;s&nbsp;(do Brasil)"},
    {"code": "pt", "en": "Portuguese&nbsp;(European)", "full": "1", "langpack": "1", "native": "Portugu&ecirc;s&nbsp;(Europeu)"},
    {"code": "ru", "en": "Russian", "full": "1", "langpack": "1", "native": "Русский"},
    {"code": "sr", "en": "Serbian<br \/>(Cyrillic)", "full": "1", "langpack": "1", "native": "Cрпски<br \/>(ћирилицом)"},
    {"code": "sk", "en": "Slovak", "full": "1", "langpack": "1", "native": "Slovenský<br \/>jazyk (slovenčina)"},
    {"code": "sl", "en": "Slovenian", "full": "1", "langpack": "1", "native": "Slovenski<br \/>jezik (slovenščina)"},
    {"code": "es", "en": "Spanish", "full": "1", "langpack": "1", "native": "Espa&ntilde;ol"},
    {"code": "sv", "en": "Swedish", "full": "1", "langpack": "1", "native": "Svenska"},
    {"code": "ta", "en": "Tamil", "full": "1", "langpack": "1", "native": "தமிழ்"},
    {"code": "th", "en": "Thai", "full": "1", "langpack": "1", "native": "ภาษาไทย"},
    {"code": "tr", "en": "Turkish", "full": "1", "langpack": "1", "native": "T&uuml;rk&ccedil;e"},
    {"code": "vi", "en": "Vietnamese", "full": "1", "langpack": "1", "native": "Tiếng&nbsp;Việt"}
    ]
    }
    </downloadtable>
    152 changes: 152 additions & 0 deletions view.pm
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,152 @@
    sub write_table() {
    my $content = $_[0];
    my $rel_mode = 1;

    my $jsonc = '';
    if ($content =~ m!<downloadtable>(.*?)</downloadtable>!si) {
    $jsonc = create_dl_table($1);
    $content =~ s/<downloadtable>(.*?)<\/downloadtable>/$jsonc/si;
    }

    return $content;
    }

    sub create_dl_table() {
    my $jsonc = shift;
    my $json = new JSON;
    # these are some nice json options to relax restrictions a bit:
    my $json_text = $json->allow_nonref->utf8->relaxed->escape_slash->loose->allow_singlequote->allow_barekey->decode($jsonc);

    my $content = "
    <table>
    <thead>
    <tr>
    <th colspan=\"2\">Language<br />The names do not refer to countries.</th>
    <th>Types</th>";
    $content .= write_row($json_text->{rel_platforms});
    $content .= "
    </tr>
    </thead>
    <tbody>";

    foreach my $language (@{$json_text->{langs}}) {
    $content .= "
    <tr>" . write_row($json_text->{rel_platforms}, $language, $json_text->{version}, $json_text->{sf}, $json_text->{asf_arc}) . "
    </tr>";
    }

    $content .= "
    </tbody>
    </table>";

    # $content .= write_row(0, @rows);

    return $content;
    }

    sub write_row() {
    # my $FIRST_HEADER = $_[1];
    # my @args = @_;
    my $platform_obj = shift;
    my $lang_obj = shift;
    my $version = shift;
    my $base_url = shift;
    my $asf_arc = shift;

    # for(my $i = 1; $i < scalar(@args); $i++) {
    # $values[$i - 1] = $args[$i];
    # }

    my $SMALL1 = "";
    my $SMALL2 = "";

    my $return = "";

    # // If it's the first header at the top of a table use a normal font size
    # // But use a smaller font size for further headers within the table
    if ( not defined($lang_obj) ) {
    # $return .= "<th>" ;
    foreach my $val (@{$platform_obj}) {
    $return .= "
    <th>" . $val->{header} . "</th>";
    }
    #
    # $return .= "\n| " ;
    # foreach my $val (@{$platform_obj}) {
    # $return .= " ----------------- |";
    # }
    } else {

    # $return .= "| " ;
    $return .= "
    <td>
    <small>" . $lang_obj->{en} . "</small>
    </td>";
    $return .= "
    <td>
    <small>" . $lang_obj->{native} . "</small>
    </td>";
    if ($lang_obj->{full} == 1)
    {
    $return .= "
    <td>
    Full Install
    </td>";
    $return .= write_dl_array('install', $platform_obj, $lang_obj, 'Apache_OpenOffice_', $version, $base_url, $asf_arc);
    }
    if ($lang_obj->{langpack} == 1)
    {
    if ($lang_obj->{full} == 1) {
    $return .= "
    </tr>
    <tr>
    <td></td>
    <td></td>";
    }
    $return .= "
    <td>Langpack</td>";
    $return .= write_dl_array('langpack', $platform_obj, $lang_obj, 'Apache_OpenOffice_', $version, $base_url, $asf_arc);
    }

    }

    return $return . "\n";
    }

    sub write_dl_array()
    {
    my $type = shift;
    my $platform_obj = shift;
    my $lang_obj = shift;
    my $base_name = shift;
    my $version = shift;
    my $base_url = shift;
    my $asf_arc = shift;
    my $return = "";
    my @hashes = ('asc', 'md5', 'sha256');

    foreach my $val (@{$platform_obj}) {
    $return .= "
    <td>
    <a href=\"" . $base_url . $version . '/binaries/' . $lang_obj->{code} . '/' . $base_name . $version . '_' . $val->{name} . '_' . $type . $val->{postfix} . '_' . $lang_obj->{code} . '.' . $val->{ext} . "/download\">
    <b>" . $val->{dlname} . "</b>
    </a>
    <br>
    <br>";
    my $count = 0;
    foreach my $hash (@hashes) {
    $return .= "
    <a class=\"hashes\" href=\"" . $asf_arc . $version . '/binaries/' . $lang_obj->{code} . '/' . $base_name . $version . '_' . $val->{name} . '_' . $type . $val->{postfix} . '_' . $lang_obj->{code} . '.' . $val->{ext} . "." . $hash . "\">" . uc($hash) . "</a>";
    if ($count == 1) {
    $return .= "
    <br>";
    }
    $count++;
    }
    $return .= "
    </td>";
    }

    return $return;
    }