hacker-news: Fix using, fix bug printing HN company posts. Refactor a bit

db4
Doug Coleman 2015-07-29 21:16:16 -07:00
parent 92a0e1e701
commit 639952a1de
1 changed files with 23 additions and 19 deletions

View File

@ -1,26 +1,26 @@
! Copyright (C) 2012 Doug Coleman. ! Copyright (C) 2012 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors assocs classes.tuple colors.constants USING: accessors assocs classes.tuple colors.constants
colors.hex combinators formatting fry hashtables http.client io colors.hex combinators concurrency.combinators formatting fry
io.styles json json.reader kernel make math math.parser hashtables http.client io io.styles json json.reader kernel make
sequences splitting ui urls ; math math.parser sequences splitting ui urls ;
IN: hacker-news IN: hacker-news
<PRIVATE <PRIVATE
: json-null>f ( obj -- obj/f ) : hacker-news-recent-ids ( -- seq )
dup json-null = [ drop f ] when ;
: hacker-news-items ( n -- seq )
[
"https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty" "https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty"
http-get nip json> http-get nip json> ;
] dip head
[ : hacker-news-id>json-url ( n -- url )
number>string number>string
"https://hacker-news.firebaseio.com/v0/item/" ".json?print=pretty" surround "https://hacker-news.firebaseio.com/v0/item/" ".json?print=pretty" surround ;
http-get nip json>
] parallel-map ; : hacker-news-items ( seq -- seq' )
[ hacker-news-id>json-url http-get nip json> ] parallel-map ;
: hacker-news-recent-items ( n -- seq )
[ hacker-news-recent-ids ] dip head hacker-news-items ;
: write-title ( title url -- ) : write-title ( title url -- )
'[ '[
@ -57,9 +57,13 @@ PRIVATE>
[ dup "by" of [ " by " write-text [ "by" of ] [ post>user-url ] bi write-link ] [ drop ] if ] [ dup "by" of [ " by " write-text [ "by" of ] [ post>user-url ] bi write-link ] [ drop ] if ]
! [ dup postedAgo>> [ " " write-text postedAgo>> write-text ] [ drop ] if ] ! [ dup postedAgo>> [ " " write-text postedAgo>> write-text ] [ drop ] if ]
[ [
dup "decendants" of [
" | " write-text " | " write-text
[ "descendants" of [ "discuss" ] [ "%d comments" sprintf ] if-zero ] [ "descendants" of [ "discuss" ] [ "%d comments" sprintf ] if-zero ]
[ post>comments-url ] bi write-link nl nl [ post>comments-url ] bi write-link
] [
drop
] if nl nl
] ]
} cleave ; } cleave ;
@ -74,6 +78,6 @@ PRIVATE>
} assoc-union format nl ; } assoc-union format nl ;
: hacker-news. ( -- ) : hacker-news. ( -- )
25 hacker-news-items 30 hacker-news-recent-items
banner. banner.
[ 1 + post. ] each-index ; [ 1 + post. ] each-index ;