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