infod 0.0.3.0 → 0.0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/infod/groonga.rb CHANGED
@@ -80,7 +80,7 @@ class E
80
80
 
81
81
  # index resource
82
82
  def roonga graph="global", m = self.graph
83
- puts "text #{graph} < #{uri} #{m.keys.join ' '}"
83
+ # puts "text #{graph} < #{uri} #{m.keys.join ' '}"
84
84
  g = E.groonga # db
85
85
  m.map{|u,i|
86
86
  r = g[u] || g.add(u) # create or load entry
data/infod/html.rb CHANGED
@@ -64,11 +64,11 @@ class String
64
64
  end
65
65
 
66
66
  class Fixnum
67
- def html e=nil; H({_: :input, type: :number, value: to_s}) end
67
+ def html e=nil; to_s end
68
68
  end
69
69
 
70
70
  class Float
71
- def html e=nil; H({_: :input, type: :number, value: to_s}) end
71
+ def html e=nil; to_s end
72
72
  end
73
73
 
74
74
  class TrueClass
data/infod/mail.rb CHANGED
@@ -32,9 +32,7 @@ class E
32
32
  yield creator, SIOC+'creator_of', E[posts]
33
33
  yield posts, Type, E[LDP+'Container']
34
34
  yield posts, LDP+'firstPage', E['/index/sioc:has_creator/'+CGI.escape(creator)]
35
-
36
- m.header['x-original-to'].do{|f|
37
- yield e, SIOC+'reply_to', E[URI.escape "mailto:#{f}?References=<#{e}>&In-Reply-To=<#{e}>&Subject=#{m.subject.to_utf8}"] }
35
+ yield e, SIOC+'reply_to', E[URI.escape "mailto:#{m.header['x-original-to']||from}?References=<#{e}>&In-Reply-To=<#{e}>&Subject=#{m.subject.to_utf8}"]
38
36
 
39
37
  %w{to cc bcc}.map{|to|
40
38
  m.send(to).do{|to| to.map{|to|
data/infod/page.rb CHANGED
@@ -5,7 +5,7 @@ class E
5
5
  u = d['#']
6
6
  [u[Prev].do{|p|{_: :a, rel: :prev, style: 'background-color:white;color:black;font-size:2.3em;float: left;clear:both;margin-right:.3em',href: p.uri, c: '&larr;'}},
7
7
  u[Next].do{|n|{_: :a, rel: :next, style: 'background-color:black;color:white;font-size:2.3em;float:right;clear:both;border-radius:0',href: n.uri, c: '&rarr;'}},
8
- {_: :a, href: e['REQUEST_URI']+'?view=data', # data browser
8
+ {_: :a, href: e['REQUEST_PATH'] + e.q.merge({'view'=>'data'}).qs, # data browser
9
9
  c: {_: :img, src: '/css/misc/cube.png', style: 'height:2em;background-color:white;padding:.54em;border-radius:1em;margin:.2em'}},
10
10
  (H.js '/js/pager'),(H.once e,:mu,(H.js '/js/mu')) # next/prev key mapping
11
11
  ]}
data/infod/search.rb CHANGED
@@ -6,13 +6,11 @@ class E
6
6
 
7
7
  F['/search.n3/GET'] = F['/search/GET']
8
8
 
9
- fn 'view/'+Search,-> q=nil,e { q||={}
9
+ fn 'view/'+Search,-> d,e {
10
10
  [H.css('/css/search'),H.js('/js/search'),
11
11
  {:class => :form,
12
- c: {_: :form, action: e['REQUEST_PATH'],
13
- c: [{_: :input, name: :q, value: q['q']}, # search box
14
- q.except('q','start'). # new query & offset for this search
15
- map{|a,s|
16
- {_: :input, name: a, value: s, :type => :hidden}}]}}]}
12
+ c: {_: :form, action: '/search',
13
+ c: {_: :input, name: :q}, # search box
14
+ }}]}
17
15
 
18
16
  end
data/infod/threads.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- #watch __FILE__
2
+ watch __FILE__
3
3
  class E
4
4
 
5
5
  fn 'protograph/thread',->d,e,g{
@@ -13,58 +13,32 @@ class E
13
13
  F['docsID'][g,e]}
14
14
 
15
15
  fn 'view/threads',->d,env{
16
+ posts = d.values.select{|r| # we want SIOC posts
17
+ r[Type].do{|t| [*t].map{|t| t.respond_to?(:uri) && t.uri}.member? SIOC+'Post'}}
18
+ threads = posts.group_by{|r| # group by thread-name
19
+ [*r[Title]][0].do{|t|t.sub(/^[rR][eE][^A-Za-z]./,'')}}
16
20
 
17
- # CSS
18
- [(H.css '/css/threads'),{_: :style, c: "body {background-color: ##{rand(2).even? ? 'fff' : '000'}}"},
19
-
20
- # predicate tafting & search
21
- (p = env.q['p']
22
- o = env['uri'].E
23
- [(H.js '/js/search'),
24
- {_: :a, class: :rangeP, href: '/@'+p+'?set=indexP&&c=12', c: {'sioc:addressed_to' => 'to', 'sioc:has_creator' => 'From'}[p] || p}, '&nbsp;',
25
- {_: :a, class: :rangePO, href: o.url+'?set=indexPO&c=12&p='+p, c: env['uri']},
26
- {_: :form, action: (URI.escape (p.expand.E.poIndex o).uri),
27
- c: [{_: :input, name: :set, value: :grep, type: :hidden},
28
- {_: :input, name: :q}
29
- ]},
30
- ] if env.q['set']=='indexPO'),
31
-
21
+ [F['view/'+HTTP+'Response'][{'#' => d['#']},env],
22
+ (H.css '/css/threads'),{_: :style, c: "body {background-color: ##{rand(2).even? ? 'fff' : '000'}}"},
32
23
  '<table>',
33
-
34
- # group posts by thread name
35
- d.values.select{|r| r[Type].do{|t| [*t].map{|t| t.respond_to?(:uri) && t.uri}.member? SIOC+'Post'}
36
- }.group_by{|r|
37
- [*r[Title]][0].do{|t|t.sub(/^[rR][eE][^A-Za-z]./,'')}}.
38
-
39
- # group by recipient
40
- group_by{|r,k| k[0].do{|k|
41
- k[To].do{|o|o.head.uri}}}.map{|e|
42
-
43
- # group
44
- c = E.cs
45
- ['<tr><td class=subject>', e[1].map{|t|
46
-
47
- # thread
48
- [{_: :a, property: Title, :class => 'thread', style: "border-color:#{c}", href: t[1][0].url+'?graph=thread',
49
- c: t[0].to_s.gsub(/[<>]/,'_').gsub(/\[([a-z\-A-Z0-9]+)\]/,'<span class=g>\1</span>')},
50
-
51
-
52
- # post
53
- (t[1].size > 1 &&
54
- ['<br>', t[1].map{|s|
55
-
56
- # author name and RDFa
57
- {_: :a, property: Creator, href: s.url+'?graph=thread#'+s.uri, :class => 'sender', style: 'background-color:'+c,
58
- c: (s[SIOC+'name']||s[Creator]).do{|n|n[0]}
59
- }}]),'<br>']},'</td>',
60
-
61
- {_: :td, class: :group, property: To,
62
- c: {_: :a, :class => :to, style: 'background-color:'+c, c: e[0] && e[0].split(/@/)[0],
63
- href: e[0] && e[0].E.url+'?set=indexPO&p=sioc:addressed_to'}},
64
-
65
- '</tr>']},'</table>',
66
-
67
- # drill down to full-content of this set
68
- {_: :a, id: :down, href: env['REQUEST_PATH'].t, c: '↓'}]}
24
+ threads.group_by{|r,k| # group by recipient
25
+ k[0].do{|k| # we're only going to show one, use first message
26
+ k[To].do{|o|o.head.uri}}}.
27
+ map{|group,threads| c = E.cs
28
+ ['<tr><td class=subject>',
29
+ threads.map{|title,msgs| # thread
30
+ [{_: :a, property: Title, :class => 'thread', style: "border-color:#{c}", href: msgs[0].url+'?graph=thread',
31
+ c: title.to_s.gsub(/[<>]/,'_').gsub(/\[([a-z\-A-Z0-9]+)\]/,'<span class=g>\1</span>')},
32
+
33
+ (msgs.size > 1 && # more than one author?
34
+ ['<br>', msgs.map{|s| # show
35
+ {_: :a, property: Creator, href: s.url+'?graph=thread#'+s.uri, :class => 'sender', style: 'background-color:'+c,
36
+ c: s[Creator]}}]),'<br>']},'</td>',
37
+
38
+ ({_: :td, class: :group, property: To,
39
+ c: {_: :a, :class => :to, style: 'background-color:'+c, c: group.label,
40
+ href: '/index/sioc:addressed_to/'+CGI.escape(group)+'?view=threads&c=24'}} if group),
41
+
42
+ '</tr>']},'</table>']}
69
43
 
70
44
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: infod
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3.0
4
+ version: 0.0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-15 00:00:00.000000000 Z
12
+ date: 2014-01-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack