2017-10-31 2 views
0

나는 잘 작동하는 매우 간단한 마크 다운 응용 프로그램을 가지고 있지만, 나는 페이지에서 색인 게시물의 순서를 정렬하는 데 정말 고심하고 있으며이를 수행하기위한 깔끔한 방법을 원합니다. 어떤 도움을 주셔서 감사합니다.GO Lang markdown app

HTML은

<section> 
{{range .}} 
<a href="/{{.File}}"><h2 class="h2_home">{{.Title}} ({{.Date}})</h2></a> 
<p>{{.Summary}}</p> 
{{end}} 
</section> 

하고 다음과 같이 인덱스 페이지 이동 물건입니다

func getPosts() []Post { 
a := []Post{} 
files, _ := filepath.Glob("posts/*") 
for _, f := range files { 
    file := strings.Replace(f, "posts/", "", -1) 
    file = strings.Replace(file, ".md", "", -1) 
    fileread, _ := ioutil.ReadFile(f) 
    lines := strings.Split(string(fileread), "\n") 
    title := string(lines[0]) 
    date := string(lines[1]) 
    summary := string(lines[2]) 
    body := strings.Join(lines[3:len(lines)], "\n") 
    htmlBody := template.HTML(blackfriday.MarkdownCommon([]byte(body))) 

    a = append(a, Post{title, date, summary, htmlBody, file, nil}) 
} 
return a 
} 
그냥 작동하지만 난 정말 뭔가를 넣어 원하는 필자는 잠시 동안 그것을보고하지

주문을 지원하기 위해 파일에 추가하십시오. .md 파일 형식입니다.

Hello Go lang markdown blog generator! 
12th Jan 2015 
This is a basic start to my own hosted go lang markdown static blog/ web generator. 
### Here I am... 

This entry is a no whistles Hello ... etc 

답변

-2

sort 패키지의 sort.Slice를 참조하십시오. 사용법은 example입니다. 이 단지 조각의 모든 구성원을 정렬한다

sort.Slice(a, func(i, j int) bool { return a[i].title < a[j].title }) 

자신의 제목에 따라 : 특정 문제에 대한

, 당신은 그래서 그냥 이런 식으로에 sort.Slice 전화, 조각 A [] 포스트가 (이 패키지의이 개인 필드에 액세스 할 수 있다고 가정 할 경우 함수를 추가하지 않아도됩니다.)

게시물의 슬라이스 a는 제목 (또는 원하는 다른 기준, 사용자에게 제목이나 날짜 중 어떤 것을 선택했는지 등)별로 정렬됩니다. 마크 다운 파일을 조정할 필요가 없습니다.

날짜를 정렬하려면 분명히 포스트가 시간 패키지와 날짜를 구문 분석하여 문자열이 아닌 실제 날짜를 갖도록해야합니다.

그래서 (포스트에 가정로 time.time) 같은 일이 :

// parse dates 
date,err := time.Parse("2nd Jan 2006",string(lines[1])) 
if err != nil { 
// deal with it 
} 

// later, sort the slice 
sort.Slice(a, func(i, j int) bool { return a[i].date.Before(a[j].date)}) 
+0

이 내가 날짜 인 가격 인하의 라인을 선택해야 나에게 많은 지침을 제공하지 않습니다 (그것은으로 포맷 평범한 텍스트) 그리고 정렬해라. 얼마나 정확하게 접근 할 수 있습니까? – adamprocter

+0

세부 사항을 더 추가하려면 편집하십시오. sort 및 time pkg 문서를 모두 읽으면 간단합니다. –

+0

다른 시도해 주셔서 감사합니다. – adamprocter

관련 문제