|  | @@ -8,9 +8,11 @@ import (
 | 
	
		
			
				|  |  |  	"errors"
 | 
	
		
			
				|  |  |  	"fmt"
 | 
	
		
			
				|  |  |  	"io/ioutil"
 | 
	
		
			
				|  |  | +	"html/template"
 | 
	
		
			
				|  |  |  	"os"
 | 
	
		
			
				|  |  |  	"path"
 | 
	
		
			
				|  |  |  	"path/filepath"
 | 
	
		
			
				|  |  | +	"regexp"
 | 
	
		
			
				|  |  |  	"runtime"
 | 
	
		
			
				|  |  |  	"sort"
 | 
	
		
			
				|  |  |  	"strings"
 | 
	
	
		
			
				|  | @@ -46,6 +48,10 @@ var (
 | 
	
		
			
				|  |  |  	LanguageIgns, Licenses []string
 | 
	
		
			
				|  |  |  )
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +var (
 | 
	
		
			
				|  |  | +	DescriptionPattern = regexp.MustCompile(`https?://\S+`)
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  // getAssetList returns corresponding asset list in 'conf'.
 | 
	
		
			
				|  |  |  func getAssetList(prefix string) []string {
 | 
	
		
			
				|  |  |  	assets := make([]string, 0, 15)
 | 
	
	
		
			
				|  | @@ -145,6 +151,10 @@ func (repo *Repository) GetOwner() (err error) {
 | 
	
		
			
				|  |  |  	return err
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +func (repo *Repository) DescriptionHtml() template.HTML {
 | 
	
		
			
				|  |  | +	return template.HTML(DescriptionPattern.ReplaceAllString(repo.Description, `<a href="$0" target="_blank">$0</a>`))
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  // IsRepositoryExist returns true if the repository with given name under user has already existed.
 | 
	
		
			
				|  |  |  func IsRepositoryExist(u *User, repoName string) (bool, error) {
 | 
	
		
			
				|  |  |  	repo := Repository{OwnerId: u.Id}
 | 
	
	
		
			
				|  | @@ -1000,4 +1010,4 @@ func IsWatching(uid, rid int64) bool {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  func ForkRepository(repoName string, uid int64) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | +}
 |