从SVN关键字替换中提取作者/日期的Javascript

时间:2020-03-06 14:33:25  来源:igfitidea点击:

SVN关键字替换给人的感觉并不漂亮。例如。,

Last updated: $Date$ by $Author$

产量

Last updated: $Date: 2008-09-22
  14:38:43 -0400 (Mon, 22 Sep 2008) $ by
  $Author: cconway $"

是否有人有一个Javascript片段来美化事物并输出一些HTML?结果应该更像是:

Last update: 22 Sep 2008 by cconway

P.S.有没有办法用显示名称替换" cconway"?

解决方案

一些JavaScript库提供模板功能。

原型http://www.prototypejs.org/api/template
Ext JS http://extjs.com/deploy/dev/docs/?class=Ext.DomHelper

我确定我们可以找到JQuery的插件。

Errr ..感觉有点像我在为我们完成工作:),但这里有:

function formatSvnString(string){
    var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

    var re = /$Date: (\d{4})-(\d\d)-(\d\d).*?$Author: (\S+) $/
    return string.replace(re, function(match, year, month, day, author){ 
        var date = new Date([year, month, day].join('/'))
        return date.getDate()
            + ' ' + months[date.getMonth()]
            + ' ' + date.getFullYear()
            + ' by ' + author
    })
}

用法:

formatSvnString("$Date: 2008-09-22 14:38:43 -0400 (Mon, 22 Sep 2008) $ by $Author: cconway $")
// returns: 22 Sep 2008 by cconway

我将由我们自己决定如何找到这些SVN字符串并自动应用上述代码:)

要使用用户的显示名称,我们或者必须说服SVN插入它(我认为它不能做到这一点,但是我可能是错的),或者以某种方式为JS提供了一种方法来获取它,或者可以访问一个充满用户名和相关显示名称的表(不过可能有点像安全隐患。嘿,孩子们,看看是否可以使用这些用户名之一闯入我的服务器!)

这是完成此工作的一些jQuery代码:

$(document).ready(function() {
     var date = "$Date: 2008-09-23 00:10:56 -0400 (Tue, 23 Sep 2008) $"
         .replace(/$Date:.*\((.*)\)\s*$/,"");
     $(".timestamp").text( "Last updated: " + date );
 });

我们希望时间戳文本出现在HTML的任何位置的HTML中都有一个<div class =" timestamp" />`。